Annotation of Net2/pcfs/direntry.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *  Written by Paul Popelka ([email protected])
                      3:  *
                      4:  *  You can do anything you want with this software,
                      5:  *    just don't say you wrote it,
                      6:  *    and don't remove this notice.
                      7:  *
                      8:  *  This software is provided "as is".
                      9:  *
                     10:  *  The author supplies this software to be publicly
                     11:  *  redistributed on the understanding that the author
                     12:  *  is not responsible for the correct functioning of
                     13:  *  this software in any circumstances and is not liable
                     14:  *  for any damages caused by this software.
                     15:  *
                     16:  *  October 1992
                     17:  *
                     18:  *     direntry.h,v 1.2 1993/05/20 03:34:06 cgd Exp
                     19:  */
                     20: 
                     21: /*
                     22:  *  Structure of a dos directory entry.
                     23:  */
                     24: struct direntry {
                     25:        u_char deName[8];               /* filename, blank filled       */
                     26: #define        SLOT_EMPTY      0x00            /* slot has never been used     */
                     27: #define        SLOT_E5         0x05            /* the real value is 0xe5       */
                     28: #define        SLOT_DELETED    0xe5            /* file in this slot deleted    */
                     29:        u_char deExtension[3];          /* extension, blank filled      */
                     30:        u_char deAttributes;            /* file attributes              */
                     31: #define        ATTR_NORMAL     0x00            /* normal file                  */
                     32: #define        ATTR_READONLY   0x01            /* file is readonly             */
                     33: #define        ATTR_HIDDEN     0x02            /* file is hidden               */
                     34: #define        ATTR_SYSTEM     0x04            /* file is a system file        */
                     35: #define        ATTR_VOLUME     0x08            /* entry is a volume label      */
                     36: #define        ATTR_DIRECTORY  0x10            /* entry is a directory name    */
                     37: #define        ATTR_ARCHIVE    0x20            /* file is new or modified      */
                     38:        char deReserved[10];            /* reserved                     */
                     39:        u_short deTime;                 /* create/last update time      */
                     40:        u_short deDate;                 /* create/last update date      */
                     41:        u_short deStartCluster;         /* starting cluster of file     */
                     42:        u_long deFileSize;              /* size of file in bytes        */
                     43: };
                     44: 
                     45: /*
                     46:  *  This is the format of the contents of the deTime
                     47:  *  field in the direntry structure.
                     48:  */
                     49: struct DOStime {
                     50:        u_short
                     51:                        dt_2seconds:5,  /* seconds divided by 2         */
                     52:                        dt_minutes:6,   /* minutes                      */
                     53:                        dt_hours:5;     /* hours                        */
                     54: };
                     55: 
                     56: /*
                     57:  *  This is the format of the contents of the deDate
                     58:  *  field in the direntry structure.
                     59:  */
                     60: struct DOSdate {
                     61:        u_short
                     62:                        dd_day:5,       /* day of month                 */
                     63:                        dd_month:4,     /* month                        */
                     64:                        dd_year:7;      /* years since 1980             */
                     65: };
                     66: 
                     67: union dostime {
                     68:        struct DOStime dts;
                     69:        u_short dti;
                     70: };
                     71: 
                     72: union dosdate {
                     73:        struct DOSdate dds;
                     74:        u_short ddi;
                     75: };
                     76: 
                     77: /*
                     78:  *  The following defines are used to rename fields in
                     79:  *  the ufs_specific structure in the nameidata structure
                     80:  *  in namei.h
                     81:  */
                     82: #define        ni_pcfs         ni_ufs
                     83: #define        pcfs_count      ufs_count
                     84: #define        pcfs_offset     ufs_offset
                     85: #define        pcfs_cluster    ufs_ino
                     86: 
                     87: #if defined(KERNEL)
                     88: void unix2dostime __P((struct timeval *tvp,
                     89:                        union dosdate *ddp,
                     90:                        union dostime *dtp));
                     91: void dos2unixtime __P((union dosdate *ddp,
                     92:                        union dostime *dtp,
                     93:                        struct timeval *tvp));
                     94: int  dos2unixfn __P((u_char dn[11], u_char *un));
                     95: void unix2dosfn __P((u_char *un, u_char dn[11], int unlen));
                     96: #endif /* defined(KERNEL) */

unix.superglobalmegacorp.com

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