|
|
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) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.