home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <time.h>
- #include <io.h>
- #include "typedef.h"
-
- struct pat {
- struct pat far *nxt;
- char far *bdir;
- char far *fname;
- int cnt;
- char far pname[1];
- };
-
- #ifndef __TURBOC__
- struct ftime {
- uint ft_tsec : 5; /* Two second interval */
- uint ft_min : 6; /* Minutes */
- uint ft_hour : 5; /* Hours */
- uint ft_day : 5; /* Days */
- uint ft_month : 4; /* Months */
- uint ft_year : 7; /* Year */
- };
- #endif
-
- struct datetime {
- ushort time;
- ushort date;
- };
-
- union stamp { /* time stamp */
- ulong u;
- struct ftime s;
- struct datetime t;
- };
-
- struct head {
- int headersize;
- char method[6];
- ulong packed;
- ulong skip;
- ulong original;
- union stamp dostime;
- time_t utc;
- int attr;
- int level;
- uint filecrc;
- uint headcrc;
- int dos;
- char *pathname;
- char *filename;
- int dirnlen;
- int filenlen;
- int info;
- long currentpos;
- char *crcpos;
- };
-
- struct fb { /* file name buffer */
- struct fb far *nxt;
- char far *cpos; /* position of effective path name */
- char far *fpos; /* position of file name */
- long time;
- char used;
- char far fname[1];
- };
-
- #define iskanji(c) ((uchar)(c) >= 0x80 && \
- (uchar)(c) <= 0x9f || \
- (uchar)(c) >= 0xe0 && \
- (uchar)(c) <= 0xfd )
- #define DELIM ('/')
- #define DELIM2 (0xffu)
- #define DELIMSTR "/"
-
- #if 0
- struct srchblk {
- char *sb_name;
- int sb_attrib;
- time_t sb_ftime;
- long sb_fsize;
- void *sb_buf;
- };
- #endif
-
- /* from mn.c */
- #define MAX_PATH 80
-
- extern char arcname[MAX_PATH];
- extern char filename1[MAX_PATH];
- extern char filename2[MAX_PATH];
- extern char filename3[MAX_PATH];
- extern FILE *file1, *file2, *file3;
- extern int cmdupdate;
- extern char workdir[];
- #if 0
- extern char *pager;
- extern char *keyword;
- #endif
- extern char cmd;
- extern char lhtmp1[], lhtmp2[];
- extern char work[];
- extern int errorlevel;
- extern int outredir;
-
- void usage(void);
- void update_arcstamp(void);
-
- /* from append.c */
- void copylzh(void);
- void regext(char *ext);
- void freeze(char *path, char *name);
- int append(void);
- int endappend(void);
- void deletefiles(void);
- int freshen(char far *bdir);
-
- /* from extract.c */
- void extract(char far *bdir);
- void extract_internal(FILE *f, char *p);
-
- /* from list.c */
- void initlist(void);
- void list(void);
- void endlist(time_t arctime);
-
- /* from match.c */
- extern struct pat far *pbuf;
-
- void initpat(void);
- void regpat(char *pattern, char far *bdir);
- char far *regbdir(char *bdir);
- char *matchfname(char far *pname, char *fname);
- char far *matchpat(char *path);
- int tstpat(void);
-
- /* from header.c */
- extern struct head hpb;
-
- ulong inithdr(void);
- char *gethdr(int *err);
- void makehdr(void);
- void writehdr(void);
- void adjusthdr(void);
-
- /* from files.c */
- extern struct fb far *fbuf;
-
- void mklist(void);
- struct fb far *searchfile(char *path);
-
- /* from getopt.c */
- extern char flg_r, flg_p, flg_x, flg_m, flg_a, flg_c, flg_n, flg_t, flg_u,
- flg_v, flg_w, flg_i, flg_h, flg_o, flg_z, flg_l, flg_at;
-
- int getopt(char *p);
-
- /* from util.c */
- extern uchar pathdelim;
- extern uchar swchar;
-
- char *convdelim(char *path, char delim);
- char *getfilename(char *path);
- char *backpath(char *p);
- int getyn(void);
- void getswchar(void);
- time_t dos2unix(struct ftime *ft);
- struct ftime *unix2dos(time_t utc);
- int ratio(ulong a, ulong b, int ord);
- void copyfile(FILE *f1, FILE *f2, long size, int crc_flg);
- void far *e_farmalloc(ulong size);
- void *e_malloc(uint size);
- void *e_realloc(void *buf, int size);
- FILE *myeopen(char *path, char *mode, char *errmes);
- FILE *mywopen(char *path, char *errmes);
- FILE *myropen(char *path);
- void eprintf(char *fmt, ...);
-
- /* from dosio.c */
- time_t getfiletime(FILE *f);
- int setfiletime(FILE *f, time_t utc);
- long diskspace(char *filename);
-
- #define makedir(c) mkdir(c)
-
- /* from error.c */
- void error(char *errmes, char *p);
- void fileerror(char *err, FILE *file);
- void userbreak(int code);
- void initbreak(void);
-
- /* from path.c */
- void form_path(char *p);
-
- /* from self.c */
- void initsfx(void);
- int copysfx(void);
- void makesfx(char far *bdir);
-