miloback.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. /*
  2. * Licensed Materials - Property of IBM and/or HCL
  3. *
  4. * IBM Informix Dynamic Server
  5. * (c) Copyright IBM Corporation 1996, 2004 All rights reserved.
  6. * (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved.
  7. *
  8. ***************************************************************************
  9. *
  10. * Title: miloback.h
  11. * Description:
  12. * MIAPI large object interface (backward compatible)
  13. *
  14. ***************************************************************************
  15. */
  16. #ifndef _MILOBACK_H_
  17. #define _MILOBACK_H_
  18. #include "miback.h"
  19. /*
  20. * Data Structures
  21. */
  22. typedef MI_LO_HANDLE MI_LOHANDLE;
  23. typedef MI_LO_FD MI_LODESC;
  24. typedef struct mi_lo_info
  25. {
  26. mi_integer minfo_len;
  27. mi_integer minfo_smgr;
  28. mi_integer minfo_asmgr;
  29. mi_integer minfo_cnt;
  30. mi_integer minfo_lastmod;
  31. mi_integer minfo_lastmodusec;
  32. mi_integer minfo_archcnt;
  33. void MI_FAR *minfo_dummy1; /* linfo_storage */
  34. void MI_FAR *minfo_dummy2; /* linfo_astorage */
  35. #if !defined(ALPHA_OSF)
  36. void MI_FAR *minfo_dummy3; /* XXX pad */
  37. void MI_FAR *minfo_dummy4; /* XXX pad */
  38. #endif /* !ALPHA_OSF */
  39. } MI_LOINFO;
  40. /* struct returned by mi_large_object_stat */
  41. typedef struct mi_lostat
  42. {
  43. mi_integer mist_len;
  44. MI_LOINFO mist_loinfo;
  45. mi_integer mist_ino;
  46. mi_integer mist_mode;
  47. mi_unsigned_integer mist_size;
  48. mi_unsigned_integer mist_sizehigh;
  49. mi_integer mist_uid;
  50. mi_integer mist_atime;
  51. mi_integer mist_mtime;
  52. mi_integer mist_ctime;
  53. char mist_type;
  54. char mist_spare1;
  55. char mist_spare2;
  56. char mist_spare3;
  57. } MI_LOSTAT;
  58. /* Create and Copy Flag */
  59. #define MI_LO_INTERNAL_LO 0x00000000
  60. /* Storage Manager */
  61. #define MI_LO_NOSMGR (-1)
  62. #define MI_LO_DEFAULT_SMGR 0
  63. /* Prot flags for Map */
  64. #define MI_LO_PROT_READ 1
  65. #define MI_LO_PROT_WRITE 2
  66. /* flags for Map ('shared' not supported in UDS) */
  67. #define MI_LO_MAP_PRIVATE 2
  68. /* File transfer flags */
  69. #define MI_LO_CLIENT_FILE MI_O_CLIENT_FILE
  70. #define MI_LO_SERVER_FILE MI_O_SERVER_FILE
  71. /*
  72. * Large Object Interface: Function Prototypes
  73. */
  74. EXTERNC_BEGIN
  75. MI_DECL
  76. MI_LOHANDLE * MI_PROC_EXPORT
  77. mi_large_object_create ARGS((MI_CONNECTION *conn_desc,
  78. const char *filename,
  79. mi_integer flags,
  80. mi_integer mode,
  81. mi_integer smgr,
  82. mi_integer asmgr));
  83. MI_DECL
  84. MI_LOHANDLE * MI_PROC_EXPORT
  85. mi_large_object_create_opts ARGS((MI_CONNECTION *conn_desc,
  86. const char *filename,
  87. mi_integer flags,
  88. mi_integer mode,
  89. mi_integer smgr,
  90. mi_integer asmgr,
  91. const char *smgropts,
  92. const char *asmgropts));
  93. MI_DECL
  94. MI_LODESC MI_PROC_EXPORT
  95. mi_large_object_open ARGS((MI_CONNECTION *conn_desc,
  96. MI_LOHANDLE *lo_handle,
  97. mi_integer flags));
  98. MI_DECL
  99. MI_LOHANDLE * MI_PROC_EXPORT
  100. mi_large_object_copy ARGS((MI_CONNECTION *conn_desc,
  101. MI_LOHANDLE *lo_handle,
  102. const char *filename,
  103. mi_integer flags,
  104. mi_integer mode,
  105. mi_integer smgr,
  106. mi_integer asmgr));
  107. MI_DECL
  108. MI_LOHANDLE * MI_PROC_EXPORT
  109. mi_large_object_copy_opts ARGS((MI_CONNECTION *conn_desc,
  110. MI_LOHANDLE *lo_handle,
  111. const char *filename,
  112. mi_integer flags,
  113. mi_integer mode,
  114. mi_integer smgr,
  115. mi_integer asmgr,
  116. const char *smgropts,
  117. const char *asmgropts));
  118. MI_DECL
  119. MI_LOHANDLE * MI_PROC_EXPORT
  120. mi_file_to_large_object ARGS((MI_CONNECTION *conn_desc,
  121. char *filename,
  122. mi_integer flags,
  123. mi_integer smgr,
  124. mi_integer asmgr,
  125. const char *smgropts,
  126. const char *asmgropts));
  127. #if 0 /* not supported */
  128. MI_DECL
  129. MI_LOHANDLE * MI_PROC_EXPORT
  130. mi_large_object_to_lohandle ARGS((mi_large_object *lo));
  131. #endif /* 0 - not supported */
  132. MI_DECL
  133. MI_LOINFO * MI_PROC_EXPORT
  134. mi_large_object_info ARGS((MI_CONNECTION *conn_desc,
  135. MI_LOHANDLE *lo_handle));
  136. MI_DECL
  137. MI_LOSTAT * MI_PROC_EXPORT
  138. mi_large_object_stat ARGS((MI_CONNECTION *conn_desc,
  139. MI_LODESC lodesc));
  140. MI_DECL
  141. char * MI_PROC_EXPORT
  142. mi_file_to_file ARGS((MI_CONNECTION *conn_desc,
  143. const char *fromfile,
  144. mi_integer fromflags,
  145. const char *tofile,
  146. mi_integer toflags));
  147. MI_DECL
  148. const char * MI_PROC_EXPORT
  149. mi_large_object_filename ARGS((MI_CONNECTION *conn_desc,
  150. MI_LOHANDLE *lohandle,
  151. const char *spec));
  152. MI_DECL
  153. const char * MI_PROC_EXPORT
  154. mi_large_object_to_file ARGS((MI_CONNECTION *conn_desc,
  155. MI_LOHANDLE *lohandle,
  156. const char *spec,
  157. mi_integer flags));
  158. MI_DECL
  159. mi_integer MI_PROC_EXPORT
  160. mi_large_object_close ARGS((MI_CONNECTION *conn_desc,
  161. MI_LODESC lodesc));
  162. MI_DECL
  163. mi_integer MI_PROC_EXPORT
  164. mi_large_object_decrefcount ARGS((MI_CONNECTION *conn_desc,
  165. MI_LOHANDLE *lo_handle));
  166. MI_DECL
  167. mi_integer MI_PROC_EXPORT
  168. mi_large_object_increfcount ARGS((MI_CONNECTION *conn_desc,
  169. MI_LOHANDLE *lo_handle));
  170. MI_DECL
  171. mi_integer MI_PROC_EXPORT
  172. mi_large_object_read ARGS((MI_CONNECTION *conn_desc,
  173. MI_LODESC lodesc,
  174. char *buf,
  175. mi_integer nbytes));
  176. MI_DECL
  177. mi_integer MI_PROC_EXPORT
  178. mi_large_object_readwithseek ARGS((MI_CONNECTION *conn_desc,
  179. MI_LODESC lodesc,
  180. char *buf,
  181. mi_integer nbytes,
  182. mi_integer off,
  183. mi_integer whence));
  184. MI_DECL
  185. mi_integer MI_PROC_EXPORT
  186. mi_large_object_seek ARGS((MI_CONNECTION *conn_desc,
  187. MI_LODESC lodesc,
  188. mi_integer offset,
  189. mi_integer whence));
  190. MI_DECL
  191. mi_integer MI_PROC_EXPORT
  192. mi_large_object_tell ARGS((MI_CONNECTION *conn_desc,
  193. MI_LODESC lodesc));
  194. MI_DECL
  195. char * MI_PROC_EXPORT
  196. mi_large_object_map ARGS((MI_CONNECTION *mi_conn,
  197. MI_LODESC lodesc,
  198. mi_integer len,
  199. mi_integer prot,
  200. mi_integer off,
  201. mi_integer flags));
  202. MI_DECL
  203. mi_integer MI_PROC_EXPORT
  204. mi_large_object_unmap ARGS((MI_CONNECTION *conn_desc,
  205. MI_LODESC lodesc,
  206. char *addr));
  207. MI_DECL
  208. mi_integer MI_PROC_EXPORT
  209. mi_large_object_write ARGS((MI_CONNECTION *conn_desc,
  210. MI_LODESC lodesc,
  211. const char *buf,
  212. mi_integer len));
  213. #if 0 /* not supported */
  214. MI_DECL
  215. mi_large_object * MI_PROC_EXPORT
  216. mi_lohandle_to_large_object ARGS((MI_LOHANDLE *lohandle));
  217. MI_DECL
  218. mi_varlena * MI_PROC_EXPORT
  219. mi_large_object_handles ARGS((MI_CONNECTION *conn_desc,
  220. MI_LOHANDLE * mi_lohandle[],
  221. mi_integer cnt));
  222. #endif /* 0 - not supported */
  223. MI_DECL
  224. MI_LOHANDLE * MI_PROC_EXPORT
  225. mi_large_object_expand ARGS((MI_CONNECTION *conn_desc,
  226. MI_MULTIREP_DATA *multidata,
  227. mi_integer len,
  228. mi_integer smgr,
  229. mi_integer asmgr,
  230. const char *smgropts,
  231. const char *asmgropts));
  232. MI_DECL
  233. void * MI_PROC_EXPORT
  234. mi_large_object_pin ARGS((MI_CONNECTION *mi_conn,
  235. MI_MULTIREP_SIZE size,
  236. MI_MULTIREP_DATA *mptr));
  237. MI_DECL
  238. mi_integer MI_PROC_EXPORT
  239. mi_large_object_unpin ARGS((MI_CONNECTION *mi_conn,
  240. MI_MULTIREP_SIZE,
  241. MI_MULTIREP_DATA *mptr));
  242. EXTERNC_END
  243. #endif /* _MILOBACK_H_ */