diff options
Diffstat (limited to 'tandem/tandem.h')
-rw-r--r-- | tandem/tandem.h | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/tandem/tandem.h b/tandem/tandem.h new file mode 100644 index 0000000..7296d26 --- /dev/null +++ b/tandem/tandem.h @@ -0,0 +1,236 @@ +/* + Copyright (c) 1990-2006 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +#ifndef __tandem_h /* prevent multiple inclusions */ +#define __tandem_h + +#ifndef TANDEM +# define TANDEM /* better than __TANDEM */ +#endif + +/* LICENSED define now supplied by compile time option (MAKE) */ + +#define NO_UNISTD_H +#define NO_RMDIR +#define NO_MKTEMP + +/* TANDEM supplies proper UTC vs. local time conversion, so enable Info-ZIP's + UT e.f. support unless explicitly suppressed by a compilation option. */ +#if (!defined(USE_EF_UT_TIME) && !defined(NO_EF_UT_TIME)) +# define USE_EF_UT_TIME +#endif +#if (defined(NO_EF_UT_TIME) && defined(USE_EF_UT_TIME)) +# undef USE_EF_UT_TIME +#endif + +/* Include file for TANDEM */ + +#ifndef NULL +# define NULL 0 +#endif + +#include <time.h> /* the usual non-BSD time functions */ +#include <stdio.h> +#include <sysstat.h> +#include <unistd.h> +#include <errno.h> +#include <ctype.h> + +#define PASSWD_FROM_STDIN + /* Kludge until we know how to open a non-echo tty channel */ + +#define NSK_UNSTRUCTURED 0 +#define NSK_RELATIVE 1 +#define NSK_ENTRYSEQUENCED 2 +#define NSK_KEYSEQUENCED 3 +#define NSK_OBJECTFILECODE 100 +#define NSK_EDITFILECODE 101 +#define NSK_ZIPFILECODE 1001 +#define TANDEM_BLOCKSIZE 4096 +#define MAX_NORMAL_READ 4096 +#define MAX_EDIT_READ 255 +#define MAX_LARGE_READ 57344 +#define MAX_LARGE_READ_EXPAND 30720 + +#define MAXFILEPARTLEN 8 +#define MAXPATHLEN 128 +#define EXTENSION_MAX 3 +/* FILENAME_MAX is defined in stdio.h */ + +#define EXIT zexit /* To stop creation of Abend files */ +#define RETURN zexit /* To stop creation of Abend files */ +#define putc zputc /* To allow us to auto flush */ + + +#define FOPR "rb" +#define FOPM "r+" +#define FOPW "wb" +#define FOPWT "w" + +#define NAMELEN FILENAME_MAX+1+EXTENSION_MAX /* allow for space extension */ + +struct dirent { + struct dirent *d_next; + char d_name[NAMELEN+1]; +}; + +typedef struct _DIR { + struct dirent *D_list; + struct dirent *D_curpos; + char D_path[NAMELEN+1]; +} DIR; + +DIR * opendir(const char *dirname); +struct dirent *readdir(DIR *dirp); +void rewinddir(DIR *dirp); +int closedir(DIR *dirp); +char * readd(DIR *dirp); + +#define DISK_DEVICE 3 + +/* SETMODE Literals */ +#define SET_FILE_SECURITY 1 +#define SET_FILE_OWNER 2 +#define SET_FILE_BUFFERED 90 +#define SET_FILE_MAXEXTENTS 92 +#define SET_FILE_BUFFERSIZE 93 +#define SET_LARGE_TRANSFERS 141 + +/* FILE_OPEN_ Literals */ +#define NSK_RDWR 0 +#define NSK_RDONLY 1 +#define NSK_WRONLY 2 +#define NSK_APPEND 3 +#define NSK_SHARED 0 +#define NSK_EXCLUSIVE 1 +#define NSK_PROCESSEXCLUSIVE 2 +#define NSK_PROTECTED 3 +#define NSK_UNSTRUCTUREDACCESS 0x8000 +#define NSK_NOUPDATEOPENTIME 0x2000 + +#define NSK_NO_DELIMITER 0x0001 +#define NSK_USE_FF_DELIMITER 0x0002 +#define NSK_SPACE_FILL 0x0004 +#define NSK_TRIM_TRAILING_SPACE 0x0008 +#define NSK_LARGE_READ_EXPAND 0x0100 /* use smaller value for Expand */ + +#define DOS_EXTENSION '.' +#define TANDEM_EXTENSION ' ' +#define TANDEM_DELIMITER '.' +#define TANDEM_NODE '\\' +#define INTERNAL_DELIMITER '/' +#define INTERNAL_NODE '//' +#define TANDEM_WILD_1 '*' +#define TANDEM_WILD_2 '?' + +#define DOS_EXTENSION_STR "." +#define TANDEM_EXTENSION_STR " " +#define TANDEM_DELIMITER_STR "." +#define TANDEM_NODE_STR "\\" +#define INTERNAL_DELIMITER_STR "/" +#define INTERNAL_NODE_STR "//" + +/* Use 'spare' area at end of stat structure to hold additional Tandem/NSK + file details. Initially used to hold Creation time, now also holds most + Enscribe details */ + +struct nsk_stat_reserved +{ + int64_t spare[3]; +}; + +#pragma FIELDALIGN SHARED8 nsk_owner +struct nsk_owner +{ + unsigned group : 8; + unsigned user : 8; +}; + +#pragma FIELDALIGN SHARED8 nsk_file_flags +struct nsk_file_flags +{ + unsigned buffered : 1; + unsigned audited : 1; + unsigned acompress : 1; + unsigned icompress : 1; + unsigned dcompress : 1; + unsigned oddunstr : 1; + unsigned verified : 1; + unsigned serial : 1; + unsigned refresheof : 1; + unsigned broken : 1; + unsigned corrupt : 1; + unsigned primpart : 1; + unsigned secpart : 1; + unsigned crashopen : 1; + unsigned rollforward : 1; + unsigned clearonpurge: 1; +}; + +#pragma FIELDALIGN SHARED8 nsk_file_attrs_def +struct nsk_file_attrs_def +{ + unsigned short filecode; /* 16 */ + unsigned short block; /* 16 */ /* Allow of block > 4096 one day ! */ + struct nsk_file_flags flags; /* 16 */ + struct nsk_owner owner; /* 16 */ + unsigned short priext; /* 16 */ + unsigned short secext; /* 16 */ + unsigned maxext : 10; + unsigned read : 3; + unsigned write : 3; + unsigned execute : 3; + unsigned delete : 3; + unsigned licensed : 1; + unsigned progid : 1; + unsigned keylen : 8; + unsigned : 5; + unsigned keyoff : 11; + unsigned : 1; + unsigned filetype : 2; + unsigned fileopen : 1; + unsigned reclen : 12; +}; +typedef struct nsk_file_attrs_def nsk_file_attrs; + +#pragma FIELDALIGN SHARED8 nsk_stat_overlay +struct nsk_stat_overlay +{ + time_t creation_time; /* 32 bits */ + nsk_file_attrs nsk_ef_region; + /* char nsk_ef_region[20]; *//* EF region */ +}; + +typedef union +{ + struct nsk_stat_reserved reserved; + struct nsk_stat_overlay ov; +} nsk_stat_ov; + +/* Prototype function declarations */ + +void zexit (int); + +int zputc( + int, + FILE * +); + +int zgetch (void); + +short parsename( + const char *, + char *, + char * +); + +int islicensed (void); + +/* End of prototype function declarations */ + +#endif /* !__tandem_h */ |