[BACK]Return to direntry.h CVS log [TXT][DIR] Up to [local] / sys / msdosfs

Annotation of sys/msdosfs/direntry.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: direntry.h,v 1.6 2002/03/14 01:27:09 millert Exp $    */
        !             2: /*     $NetBSD: direntry.h,v 1.13 1997/10/17 11:23:45 ws Exp $ */
        !             3:
        !             4: /*-
        !             5:  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
        !             6:  * Copyright (C) 1994, 1995, 1997 TooLs GmbH.
        !             7:  * All rights reserved.
        !             8:  * Original code by Paul Popelka (paulp@uts.amdahl.com) (see below).
        !             9:  *
        !            10:  * Redistribution and use in source and binary forms, with or without
        !            11:  * modification, are permitted provided that the following conditions
        !            12:  * are met:
        !            13:  * 1. Redistributions of source code must retain the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer.
        !            15:  * 2. Redistributions in binary form must reproduce the above copyright
        !            16:  *    notice, this list of conditions and the following disclaimer in the
        !            17:  *    documentation and/or other materials provided with the distribution.
        !            18:  * 3. All advertising materials mentioning features or use of this software
        !            19:  *    must display the following acknowledgement:
        !            20:  *     This product includes software developed by TooLs GmbH.
        !            21:  * 4. The name of TooLs GmbH may not be used to endorse or promote products
        !            22:  *    derived from this software without specific prior written permission.
        !            23:  *
        !            24:  * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
        !            25:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            26:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            27:  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
        !            28:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
        !            29:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
        !            30:  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        !            31:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
        !            32:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
        !            33:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            34:  */
        !            35: /*
        !            36:  * Written by Paul Popelka (paulp@uts.amdahl.com)
        !            37:  *
        !            38:  * You can do anything you want with this software, just don't say you wrote
        !            39:  * it, and don't remove this notice.
        !            40:  *
        !            41:  * This software is provided "as is".
        !            42:  *
        !            43:  * The author supplies this software to be publicly redistributed on the
        !            44:  * understanding that the author is not responsible for the correct
        !            45:  * functioning of this software in any circumstances and is not liable for
        !            46:  * any damages caused by this software.
        !            47:  *
        !            48:  * October 1992
        !            49:  */
        !            50:
        !            51: /*
        !            52:  * Structure of a dos directory entry.
        !            53:  */
        !            54: struct direntry {
        !            55:        u_int8_t        deName[8];      /* filename, blank filled */
        !            56: #define        SLOT_EMPTY      0x00            /* slot has never been used */
        !            57: #define        SLOT_E5         0x05            /* the real value is 0xe5 */
        !            58: #define        SLOT_DELETED    0xe5            /* file in this slot deleted */
        !            59:        u_int8_t        deExtension[3]; /* extension, blank filled */
        !            60:        u_int8_t        deAttributes;   /* file attributes */
        !            61: #define        ATTR_NORMAL     0x00            /* normal file */
        !            62: #define        ATTR_READONLY   0x01            /* file is readonly */
        !            63: #define        ATTR_HIDDEN     0x02            /* file is hidden */
        !            64: #define        ATTR_SYSTEM     0x04            /* file is a system file */
        !            65: #define        ATTR_VOLUME     0x08            /* entry is a volume label */
        !            66: #define        ATTR_DIRECTORY  0x10            /* entry is a directory name */
        !            67: #define        ATTR_ARCHIVE    0x20            /* file is new or modified */
        !            68:        u_int8_t        deLowerCase;    /* case for base and extension */
        !            69: #define        CASE_LOWER_BASE 0x08            /* base is lower case */
        !            70: #define        CASE_LOWER_EXT  0x10            /* extension is lower case */
        !            71:        u_int8_t        deCTimeHundredth; /* create time, 1/100th of a sec */
        !            72:        u_int8_t        deCTime[2];     /* create time */
        !            73:        u_int8_t        deCDate[2];     /* create date */
        !            74:        u_int8_t        deADate[2];     /* access date */
        !            75:        u_int8_t        deHighClust[2]; /* high byte of cluster number */
        !            76:        u_int8_t        deMTime[2];     /* last update time */
        !            77:        u_int8_t        deMDate[2];     /* last update date */
        !            78:        u_int8_t        deStartCluster[2]; /* starting cluster of file */
        !            79:        u_int8_t        deFileSize[4];  /* size of file in bytes */
        !            80: };
        !            81:
        !            82: /*
        !            83:  * Structure of a Win95 long name directory entry
        !            84:  */
        !            85: struct winentry {
        !            86:        u_int8_t        weCnt;
        !            87: #define        WIN_LAST        0x40
        !            88: #define        WIN_CNT         0x3f
        !            89:        u_int8_t        wePart1[10];
        !            90:        u_int8_t        weAttributes;
        !            91: #define        ATTR_WIN95      0x0f
        !            92:        u_int8_t        weReserved1;
        !            93:        u_int8_t        weChksum;
        !            94:        u_int8_t        wePart2[12];
        !            95:        u_int16_t       weReserved2;
        !            96:        u_int8_t        wePart3[4];
        !            97: };
        !            98: #define        WIN_CHARS       13      /* Number of chars per winentry */
        !            99:
        !           100: /*
        !           101:  * This is the format of the contents of the deTime field in the direntry
        !           102:  * structure.
        !           103:  * We don't use bitfields because we don't know how compilers for
        !           104:  * arbitrary machines will lay them out.
        !           105:  */
        !           106: #define DT_2SECONDS_MASK       0x1F    /* seconds divided by 2 */
        !           107: #define DT_2SECONDS_SHIFT      0
        !           108: #define DT_MINUTES_MASK                0x7E0   /* minutes */
        !           109: #define DT_MINUTES_SHIFT       5
        !           110: #define DT_HOURS_MASK          0xF800  /* hours */
        !           111: #define DT_HOURS_SHIFT         11
        !           112:
        !           113: /*
        !           114:  * This is the format of the contents of the deDate field in the direntry
        !           115:  * structure.
        !           116:  */
        !           117: #define DD_DAY_MASK            0x1F    /* day of month */
        !           118: #define DD_DAY_SHIFT           0
        !           119: #define DD_MONTH_MASK          0x1E0   /* month */
        !           120: #define DD_MONTH_SHIFT         5
        !           121: #define DD_YEAR_MASK           0xFE00  /* year - 1980 */
        !           122: #define DD_YEAR_SHIFT          9
        !           123:
        !           124: #ifdef _KERNEL
        !           125: void unix2dostime(struct timespec *tsp, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp);
        !           126: void dos2unixtime(u_int dd, u_int dt, u_int dh, struct timespec *tsp);
        !           127: int dos2unixfn(u_char dn[11], u_char *un, int lower);
        !           128: int unix2dosfn(u_char *un, u_char dn[12], int unlen, u_int gen);
        !           129: int unix2winfn(u_char *un, int unlen, struct winentry *wep, int cnt, int chksum);
        !           130: int winChkName(u_char *un, int unlen, struct winentry *wep, int chksum);
        !           131: int win2unixfn(struct winentry *wep, struct dirent *dp, int chksum);
        !           132: u_int8_t winChksum(u_int8_t *name);
        !           133: int winSlotCnt(u_char *un, int unlen);
        !           134: #endif /* _KERNEL */

CVSweb