tandem.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /*
  2. Copyright (c) 1990-2006 Info-ZIP. All rights reserved.
  3. See the accompanying file LICENSE, version 2000-Apr-09 or later
  4. (the contents of which are also included in zip.h) for terms of use.
  5. If, for some reason, all these files are missing, the Info-ZIP license
  6. also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
  7. */
  8. #ifndef __tandem_h /* prevent multiple inclusions */
  9. #define __tandem_h
  10. #ifndef TANDEM
  11. # define TANDEM /* better than __TANDEM */
  12. #endif
  13. /* LICENSED define now supplied by compile time option (MAKE) */
  14. #define NO_UNISTD_H
  15. #define NO_RMDIR
  16. #define NO_MKTEMP
  17. /* TANDEM supplies proper UTC vs. local time conversion, so enable Info-ZIP's
  18. UT e.f. support unless explicitly suppressed by a compilation option. */
  19. #if (!defined(USE_EF_UT_TIME) && !defined(NO_EF_UT_TIME))
  20. # define USE_EF_UT_TIME
  21. #endif
  22. #if (defined(NO_EF_UT_TIME) && defined(USE_EF_UT_TIME))
  23. # undef USE_EF_UT_TIME
  24. #endif
  25. /* Include file for TANDEM */
  26. #ifndef NULL
  27. # define NULL 0
  28. #endif
  29. #include <time.h> /* the usual non-BSD time functions */
  30. #include <stdio.h>
  31. #include <sysstat.h>
  32. #include <unistd.h>
  33. #include <errno.h>
  34. #include <ctype.h>
  35. #define PASSWD_FROM_STDIN
  36. /* Kludge until we know how to open a non-echo tty channel */
  37. #define NSK_UNSTRUCTURED 0
  38. #define NSK_RELATIVE 1
  39. #define NSK_ENTRYSEQUENCED 2
  40. #define NSK_KEYSEQUENCED 3
  41. #define NSK_OBJECTFILECODE 100
  42. #define NSK_EDITFILECODE 101
  43. #define NSK_ZIPFILECODE 1001
  44. #define TANDEM_BLOCKSIZE 4096
  45. #define MAX_NORMAL_READ 4096
  46. #define MAX_EDIT_READ 255
  47. #define MAX_LARGE_READ 57344
  48. #define MAX_LARGE_READ_EXPAND 30720
  49. #define MAXFILEPARTLEN 8
  50. #define MAXPATHLEN 128
  51. #define EXTENSION_MAX 3
  52. /* FILENAME_MAX is defined in stdio.h */
  53. #define EXIT zexit /* To stop creation of Abend files */
  54. #define RETURN zexit /* To stop creation of Abend files */
  55. #define putc zputc /* To allow us to auto flush */
  56. #define FOPR "rb"
  57. #define FOPM "r+"
  58. #define FOPW "wb"
  59. #define FOPWT "w"
  60. #define NAMELEN FILENAME_MAX+1+EXTENSION_MAX /* allow for space extension */
  61. struct dirent {
  62. struct dirent *d_next;
  63. char d_name[NAMELEN+1];
  64. };
  65. typedef struct _DIR {
  66. struct dirent *D_list;
  67. struct dirent *D_curpos;
  68. char D_path[NAMELEN+1];
  69. } DIR;
  70. DIR * opendir(const char *dirname);
  71. struct dirent *readdir(DIR *dirp);
  72. void rewinddir(DIR *dirp);
  73. int closedir(DIR *dirp);
  74. char * readd(DIR *dirp);
  75. #define DISK_DEVICE 3
  76. /* SETMODE Literals */
  77. #define SET_FILE_SECURITY 1
  78. #define SET_FILE_OWNER 2
  79. #define SET_FILE_BUFFERED 90
  80. #define SET_FILE_MAXEXTENTS 92
  81. #define SET_FILE_BUFFERSIZE 93
  82. #define SET_LARGE_TRANSFERS 141
  83. /* FILE_OPEN_ Literals */
  84. #define NSK_RDWR 0
  85. #define NSK_RDONLY 1
  86. #define NSK_WRONLY 2
  87. #define NSK_APPEND 3
  88. #define NSK_SHARED 0
  89. #define NSK_EXCLUSIVE 1
  90. #define NSK_PROCESSEXCLUSIVE 2
  91. #define NSK_PROTECTED 3
  92. #define NSK_UNSTRUCTUREDACCESS 0x8000
  93. #define NSK_NOUPDATEOPENTIME 0x2000
  94. #define NSK_NO_DELIMITER 0x0001
  95. #define NSK_USE_FF_DELIMITER 0x0002
  96. #define NSK_SPACE_FILL 0x0004
  97. #define NSK_TRIM_TRAILING_SPACE 0x0008
  98. #define NSK_LARGE_READ_EXPAND 0x0100 /* use smaller value for Expand */
  99. #define DOS_EXTENSION '.'
  100. #define TANDEM_EXTENSION ' '
  101. #define TANDEM_DELIMITER '.'
  102. #define TANDEM_NODE '\\'
  103. #define INTERNAL_DELIMITER '/'
  104. #define INTERNAL_NODE '//'
  105. #define TANDEM_WILD_1 '*'
  106. #define TANDEM_WILD_2 '?'
  107. #define DOS_EXTENSION_STR "."
  108. #define TANDEM_EXTENSION_STR " "
  109. #define TANDEM_DELIMITER_STR "."
  110. #define TANDEM_NODE_STR "\\"
  111. #define INTERNAL_DELIMITER_STR "/"
  112. #define INTERNAL_NODE_STR "//"
  113. /* Use 'spare' area at end of stat structure to hold additional Tandem/NSK
  114. file details. Initially used to hold Creation time, now also holds most
  115. Enscribe details */
  116. struct nsk_stat_reserved
  117. {
  118. int64_t spare[3];
  119. };
  120. #pragma FIELDALIGN SHARED8 nsk_owner
  121. struct nsk_owner
  122. {
  123. unsigned group : 8;
  124. unsigned user : 8;
  125. };
  126. #pragma FIELDALIGN SHARED8 nsk_file_flags
  127. struct nsk_file_flags
  128. {
  129. unsigned buffered : 1;
  130. unsigned audited : 1;
  131. unsigned acompress : 1;
  132. unsigned icompress : 1;
  133. unsigned dcompress : 1;
  134. unsigned oddunstr : 1;
  135. unsigned verified : 1;
  136. unsigned serial : 1;
  137. unsigned refresheof : 1;
  138. unsigned broken : 1;
  139. unsigned corrupt : 1;
  140. unsigned primpart : 1;
  141. unsigned secpart : 1;
  142. unsigned crashopen : 1;
  143. unsigned rollforward : 1;
  144. unsigned clearonpurge: 1;
  145. };
  146. #pragma FIELDALIGN SHARED8 nsk_file_attrs_def
  147. struct nsk_file_attrs_def
  148. {
  149. unsigned short filecode; /* 16 */
  150. unsigned short block; /* 16 */ /* Allow of block > 4096 one day ! */
  151. struct nsk_file_flags flags; /* 16 */
  152. struct nsk_owner owner; /* 16 */
  153. unsigned short priext; /* 16 */
  154. unsigned short secext; /* 16 */
  155. unsigned maxext : 10;
  156. unsigned read : 3;
  157. unsigned write : 3;
  158. unsigned execute : 3;
  159. unsigned delete : 3;
  160. unsigned licensed : 1;
  161. unsigned progid : 1;
  162. unsigned keylen : 8;
  163. unsigned : 5;
  164. unsigned keyoff : 11;
  165. unsigned : 1;
  166. unsigned filetype : 2;
  167. unsigned fileopen : 1;
  168. unsigned reclen : 12;
  169. };
  170. typedef struct nsk_file_attrs_def nsk_file_attrs;
  171. #pragma FIELDALIGN SHARED8 nsk_stat_overlay
  172. struct nsk_stat_overlay
  173. {
  174. time_t creation_time; /* 32 bits */
  175. nsk_file_attrs nsk_ef_region;
  176. /* char nsk_ef_region[20]; *//* EF region */
  177. };
  178. typedef union
  179. {
  180. struct nsk_stat_reserved reserved;
  181. struct nsk_stat_overlay ov;
  182. } nsk_stat_ov;
  183. /* Prototype function declarations */
  184. void zexit (int);
  185. int zputc(
  186. int,
  187. FILE *
  188. );
  189. int zgetch (void);
  190. short parsename(
  191. const char *,
  192. char *,
  193. char *
  194. );
  195. int islicensed (void);
  196. /* End of prototype function declarations */
  197. #endif /* !__tandem_h */