|
|
1.1 root 1: /* dos0.h */
2:
3: #include "dos1.h"
4: #include <access.h>
5: #include <stdio.h>
6: #include <ctype.h>
7: #include <string.h>
8: #include <sys/devices.h>
9: #include <sys/dir.h>
10: #include <sys/fdisk.h>
11: #include <fcntl.h>
12: #include <signal.h>
13: #undef DIR
14: #include <sys/stat.h>
15: #include <time.h>
16: #include <sys/types.h>
17:
18: /* Definitions. */
19: #define VERSION "4.1" /* Version id */
20: #define CTRLZ '\032' /* ASCII <Control-Z> character */
21: #define NAMEMAX 128 /* Maximum filename length */
22:
23: #define OUSAGE \
24: "Usage: dos [-][dFlrtx][acknpsv[1-9]] [ device ] [ file ... ]\n"\
25: "Functions:\n"\
26: " d Delete specified files\n"\
27: " F Format disk (optional argument: boot block)\n"\
28: " l Label disk (one argument: label)\n"\
29: " r Replace files (default: all files in '.')\n"\
30: " t Table of contents (default: all files)\n"\
31: " x Extract specified files (default: all files)\n"\
32: "Options:\n"\
33: " a ASCII data extract/replace (default: binary data)\n"\
34: " c Check only; do not write changes to MS-DOS filesystem\n"\
35: " k Keep mtime on extract/replace (default: current time)\n"\
36: " n Newest files first in list (default: alphabetized)\n"\
37: " p Piped extract/replace\n"\
38: " s Suppress subdirectory x/r (default: recursive descent)\n"\
39: " v Verbose\n"\
40: " [1-9] Specify desired drive on extended MS-DOS partition\n"\
41: "The default device is /dev/dos.\n\n"\
42: "See also doscat, doscp, doscpdir, dosdel, dosdir, dosformat, doslabel,\n"\
43: " dosls, dosmkdir, dosrm, dosrmdir.\n\n"
44:
45: #define USAGE \
46: "Usage: Copy: doscp [-abkmrv] src dest\n"\
47: " Copy Tree: doscpdir [-akmrv] src dest\n"\
48: " Cat Files: doscat src\n"\
49: " Directory: dosdir [-vn] src or dosls [-vn] src\n"\
50: " Mkdir: dosmkdir dest\n"\
51: " Rmdir: dosrmdir dest\n"\
52: " Delete: dosdel src or dosrm src\n"\
53: " Format: dosformat dest [boot block]\n"\
54: " Label: doslabel dest \"label\"\n\n"\
55: "Options:\n"\
56: " a or m ASCII copies - always convert CRLF to LF\n"\
57: " b or r Binary copies - never convert CRLF to LF\n"\
58: " k Keep mtime on copies (default: current time)\n"\
59: " n Newest files first in list (default: alphabetized)\n"\
60: " f force removal of readonly files\n"\
61: " v Verbose\n\n"\
62: " See also /etc/default/msdos\n\n"
63: /*
64: " The src and dest arguments have the format \"[device:]name\" where\n"\
65: " device is a COHERENT pathname for the special device file, and name\n"\
66: " is a pathname to a file or directory. Note that all paths must be\n"\
67: " specified with forward slashes. Arguments without a device are assumed\n"\
68: " to be COHERENT files.\n"\
69: */
70:
71:
72: /*
73: * Directories.
74: * A DIR is allocated the root and for each subdirectory on a disk.
75: * Rather than having pointers to multiple children,
76: * a DIR has a linked list of siblings rooted at a child.
77: * The MS-DOS directory is not read into d_dir until required.
78: */
79: #ifdef _I386
80: #pragma align 1
81: #endif
82: typedef struct dir {
83: struct dir * d_parent; /* Parent, NULL if root */
84: struct dir * d_child; /* Child */
85: struct dir * d_sibling; /* Sibling */
86: unsigned short d_cluster; /* First cluster */
87: unsigned short d_files; /* Max number of files */
88: unsigned short d_dirblocks; /* Number of directory blocks */
89: MDIR * d_dir; /* MS-DOS directory */
90: MDIR * d_edp; /* Pointer past end of d_dir */
91: unsigned char d_dname[12]; /* NUL-terminated name */
92: char d_dirflag; /* Directory must be written */
93: } DIR;
94: #ifdef _I386
95: #pragma align
96: #endif
97:
98: /* Externals. */
99: extern char * calloc();
100: extern struct tm * localtime();
101: extern void qsort();
102: extern char * realloc();
103: extern char * strcat();
104: extern char * strcpy();
105: extern char * strncpy();
106: extern time_t time();
107: extern char * base, basehold[];
108: extern char * base1;
109: extern char * dest;
110: /* Globals in dos0.c. */
111: /* dos1.c globals are declared in dos1.h, included above. */
112: extern short oldstyle;
113: extern short aflag;
114: extern short bflag;
115: extern short fflag;
116: extern unsigned char cohfile[NAMEMAX];
117: extern unsigned char cmd[6 + NAMEMAX];
118: extern char * device;
119: extern short estat;
120: extern short (*fun)();
121: extern short kflag;
122: extern short nflag;
123: extern long partseek;
124: extern short pflag;
125: extern DIR * root;
126: extern short sflag;
127: extern MDIR * volume;
128: extern short xpart;
129: extern char ext[];
130: extern short sext;
131: extern short numargs;
132: extern char adev[];
133: extern short isdir_keep;
134:
135: /* Functions. */
136: /* dos1.c functions are declared in dos1.h, included above. */
137: /* dos2.c */
138: extern char * cohname();
139: extern void cohtime();
140: extern DIR * creatdir();
141: extern MDIR * creatfile();
142: extern void delete();
143: extern void deletedir();
144: extern void deletefile();
145: extern unsigned short dirclusters();
146: extern char * dosname();
147: extern void dostime();
148: extern void extract();
149: extern void createdir();
150: extern void extractdir();
151: extern void extractfile();
152: /* dos3.c */
153: extern MDIR * find();
154: extern MDIR * findnext();
155: extern char * cohn();
156: extern short finput();
157: extern void format();
158: extern short foutput();
159: extern unsigned short freecluster();
160: extern short key();
161: extern void label();
162: extern void mdirinit();
163: /* dos4.c */
164: extern short namecmp();
165: extern DIR * newdir();
166: extern void nonfatal();
167: extern void readmdir();
168: extern void replace();
169: extern void replacedir();
170: extern void replacefile();
171: extern void table();
172: extern void tabledir();
173: extern void tablefile();
174: extern char * uppercase();
175: extern void writedir();
176: extern char * makef();
177:
178: /* end of dos0.h */
179:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.