1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
/* 0 */
/*---------------------------------------------------------
/*-
/*- RESTORE Utility include file RT2.H
/*-
/*---------------------------------------------------------*/
/*------------------------------------*/
/* MESSAGE DEFINITIONS */
/*------------------------------------*/
#define INVPARM 10 /* Parse class */ /*;AN000;6*/
#define INVALID_DOS_VER 1 /*;AN000;6*/
#define SOURCE_TARGET_SAME 2 /*;AN000;6*/
#define INVALID_NUM_PARM 3 /*;AN000;6*/
#define PATH_NOT_FOUND 5 /*;AN000;6*/
#define INVALID_DRIVE 6 /*;AN000;6*/
#define NO_FILE_TO_RESTORE 7 /*;AN000;6*/
#define INSERT_SOURCE_DISK 8 /*;AN000;6*/
#define INSERT_TARGET_DISK 9 /*;AN000;6*/
#define PRESS_ANY_KEY 10 /*;AN000;6*/
#define DISK_OUT_OF_SEQUENCE 11 /*;AN000;6*/
#define LAST_FILE_NOT_RESTORED 12 /*;AN000;6*/
#define FILES_WERE_BACKUP_ON 13 /*;AN000;6*/
#define SOURCE_NO_BACKUP_FILE 14 /*;AN000;6*/
#define INSUFFICIENT_MEMORY 15 /*;AN000;6*/
#define FILE_IS_READONLY 16 /*;AN000;6*/
#define FILE_SEQUENCE_ERROR 17 /*;AN000;6*/
#define FILE_CREATION_ERROR 18 /*;AN000;6*/
#define TARGET_IS_FULL 19 /*;AN000;6*/
#define NOT_ABLE_TO_RESTORE_FILE 20 /*;AN000;6*/
#define RESTORE_FILE_FROM_DRIVE 21 /*;AN000;6*/
#define FILE_WAS_CHANGED 22 /*;AN000;6*/
#define DISKETTE_NUM 23 /*;AN000;6*/
#define INV_DATE 27 /*;AN000;6*/
#define INV_TIME 28 /*;AN000;6*/
#define NO_SOURCE 29 /*;AN000;6*/
#define NO_TARGET 30 /*;AN000;6*/
#define CRLF 31 /*;AN000;6*/
#define FILE_TO_BE_RESTORED 99 /*;AN000;6*/
/*------------------------------------*/
/*- MESSAGE CLASSES -*/
/*------------------------------------*/
#define EXTENDED 1 /*;AN000;6*/
#define PARSEERR 2 /*;AN000;6*/
#define UTILMSG -1 /*;AN000;6*/
/* 0*/
/*----------------------------------*/
/*- SUBROUTINE DECLARATIONS */
/*----------------------------------*/
void main(int ,char *[0]);
void set_input_switches(WORD,BYTE * *,WORD *,struct timedate *);
void verify_input_switches(BYTE *,struct timedate *);
int set_reset_test_flag(BYTE *,BYTE ,int );
void separate(BYTE *,BYTE *,BYTE *,BYTE *,BYTE *);
void initbuf(DWORD *);
void init_control_buf(unsigned long ,unsigned int *);
void usererror(WORD );
void unexperror(WORD );
void exit_routine(WORD );
void pascal far signal_handler_routine(void );
extern unsigned far pascal set_int24_vector(void); /*;AN000;*/
void com_msg(WORD );
int checkdosver(void );
void dorestore(BYTE ,BYTE ,BYTE *,BYTE *,BYTE *,BYTE *,struct timedate *);
void check_bkdisk_old(struct disk_header_old *, struct disk_info *,BYTE,unsigned int *);
void check_bkdisk_new(struct disk_header_new far *,struct disk_info *,BYTE,unsigned int *,unsigned int *);
void print_info(int ,int ,int);
WORD pathmatch(BYTE *,BYTE *);
WORD switchmatch(struct file_info *,BYTE,BYTE,struct timedate *);
int check_flheader_old(struct file_info *,unsigned char *,unsigned int ,
unsigned int ,unsigned int ,unsigned long ,unsigned int ,unsigned char ,
unsigned char ,unsigned char *,unsigned char *,unsigned int *);
int readonly_or_changed(unsigned int ,unsigned char ,unsigned char *, unsigned char *);
int fspecmatch(char *,char *);
WORD open_dest_file(struct file_info *,BYTE );
void build_path_create_file(BYTE *,BYTE,BYTE,DWORD); /*;AC000;3*/
int set_attributes_and_close(struct file_info *, BYTE);
int dos_write_error(DWORD ,BYTE );
int findfile_new(struct file_info *,WORD *,unsigned int *,BYTE *,BYTE *,WORD far * *,WORD far * *,unsigned int *,BYTE *);
int findnew_new(struct file_info *,WORD *,WORD *,BYTE *,BYTE *, WORD far * *,WORD far * *,WORD *,BYTE *);
void search_src_disk_old(struct disk_info *,struct file_info *,struct disk_header_old *,
struct disk_header_new far *,struct file_header_new far *,
unsigned char,unsigned char,unsigned long,unsigned int *,unsigned char *,unsigned char *,
unsigned char *,unsigned char *,struct timedate *);
void search_src_disk_new(struct disk_info *,struct file_info *,struct disk_header_old *,
struct disk_header_new far *,struct file_header_new far *,
unsigned char,unsigned char,unsigned int *,unsigned long,unsigned char *,unsigned char *,
unsigned char *,unsigned int *,struct timedate *);
int findfirst_new(struct file_info *,WORD *,unsigned int *,BYTE *,BYTE *,WORD far**,WORD far**,unsigned int *,BYTE *);
int findnext_new (struct file_info *,WORD *,unsigned int *,BYTE *,BYTE *,WORD far**,WORD far**,unsigned int *,BYTE *);
void restore_a_file(struct file_info *,struct disk_info *,unsigned long,unsigned int *,
struct file_header_new far *,struct disk_header_old *,struct disk_header_new far *,unsigned char,unsigned char,
unsigned char *,unsigned char *,unsigned char *,unsigned int *,unsigned int *);
/*----------------------------------------
/*- ADDED FOR DOS 4.00
/*----------------------------------------*/
int cdecl sprintf(char *,const char *, ...);
int cdecl printf(const char *,...);
void check_time(BYTE,BYTE,BYTE,BYTE); /*;AN000;4*//*;AC002;*/
void check_date(WORD,BYTE,BYTE); /*;AN000;4*//*;AC002;*/
void parse_error(WORD,BYTE); /*;AN000;4*//*;AC002;*/
void parse_init(void); /*;AN000;4*/
void process_switch(unsigned,char *); /*;AN000;4*//*;AC002;*/
void check_source_drive(int,char * []); /*;AN000;4*/
void check_target_filespec(int,char * []); /*;AN000;4*/
void display_it(WORD,WORD,WORD,WORD,BYTE); /*;AN000;6*/
void parse_command_line(int, char * []); /*;AN000;4*/
void check_appendX(void); /*;AN000;2*/
void read_in_first_dirblock(void); /* !wrw */
void read_in_a_fileheader(void); /* !wrw */
void read_in_next_dirblock(void); /* !wrw */
void get_fileheader_length(void); /*;AN000;3*/
WORD create_the_file(BYTE,DWORD); /*;AN000;3*/
void read_the_extended_attributes(DWORD); /*;AN000;3*/
void check_for_device_names(char * []); /*;AN000;p2591*/
WORD chek_DBCS(char *,WORD,char); /*;AN005;*/
void Get_DBCS_vector(void); /*;AN005;*/
extern void sysloadmsg(union REGS *, union REGS *); /*_msgret *//*;AN000;6 */
extern void sysdispmsg(union REGS *, union REGS *); /*_msgret *//*;AN000;6 */
extern void parse (union REGS *, union REGS *); /* _parse *//*;AN000;4 */
|