Annotation of coherent/d/bin/dos/dos0.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.