📄 tandem.h
字号:
/* Copyright (c) 1990-2002 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 explicitely 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_ownerstruct nsk_owner{ unsigned group : 8; unsigned user : 8;};#pragma FIELDALIGN SHARED8 nsk_file_flagsstruct 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_defstruct 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_overlaystruct 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -