|
|
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.