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