root/include/linux/umsdos_fs.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef LINUX_UMSDOS_FS_H
   2 #define LINUX_UMSDOS_FS_H
   3 
   4 #define UMSDOS_VERSION  0
   5 #define UMSDOS_RELEASE  3
   6 
   7 #ifndef LINUX_FS_H
   8 #include <linux/fs.h>
   9 #endif
  10 
  11 /* This is the file acting as a directory extension */
  12 #define UMSDOS_EMD_FILE         "--linux-.---"
  13 #define UMSDOS_EMD_NAMELEN      12
  14 #define UMSDOS_PSDROOT_NAME     "linux"
  15 #define UMSDOS_PSDROOT_LEN      5
  16 
  17 struct umsdos_fake_info {
  18         char fname[13];
  19         int  len;
  20 };
  21 
  22 #define UMSDOS_MAXNAME  220
  23 /* This structure is 256 bytes large, depending on the name, only part */
  24 /* of it is written to disk */
  25 struct umsdos_dirent {
  26         unsigned char name_len; /* if == 0, then this entry is not used */
  27         unsigned char  flags;   /* UMSDOS_xxxx */
  28         unsigned short nlink;   /* How many hard links point to this entry */
  29         uid_t            uid;           /* Owner user id */
  30         gid_t            gid;           /* Group id */
  31         time_t          atime;          /* Access time */
  32         time_t          mtime;          /* Last modification time */
  33         time_t          ctime;          /* Creation time */
  34         dev_t           rdev;           /* major and minor number of a device */
  35                                                         /* special file */
  36         umode_t         mode;           /* Standard UNIX permissions bits + type of */
  37         char    spare[12];              /* unused bytes for future extensions */
  38                                                         /* file, see linux/stat.h */
  39         char name[UMSDOS_MAXNAME];      /* Not '\0' terminated */
  40                                                         /* but '\0' padded, so it will allow */
  41                                                         /* for adding news fields in this record */
  42                                                         /* by reducing the size of name[] */
  43 };
  44 #define UMSDOS_HIDDEN   1       /* Never show this entry in directory search */
  45 #define UMSDOS_HLINK    2       /* It is a (pseudo) hard link */
  46 
  47 /* #Specification: EMD file / record size
  48         Entry are 64 bytes wide in the EMD file. It allows for a 30 characters
  49         name. If a name is longer, contiguous entries are allocated. So a
  50         umsdos_dirent may span multiple records.
  51 */
  52 #define UMSDOS_REC_SIZE         64
  53 
  54 /* Translation between MSDOS name and UMSDOS name */
  55 struct umsdos_info{
  56         int msdos_reject;       /* Tell if the file name is invalid for MSDOS */
  57                                                 /* See umsdos_parse */
  58         struct umsdos_fake_info fake;
  59         struct umsdos_dirent entry;
  60         off_t f_pos;            /* offset of the entry in the EMD file */
  61                                                 /* or offset where the entry may be store */
  62                                                 /* if it is a new entry */
  63         int recsize;            /* Record size needed to store entry */
  64 };
  65 
  66 /* Definitions for ioctl (number randomly chosen) */
  67 /* The next ioctl commands operate only on the DOS directory */
  68 /* The file umsdos_progs/umsdosio.c contain a string table */
  69 /* based on the order of those definition. Keep it in sync */
  70 #define UMSDOS_READDIR_DOS      1234    /* Do a readdir of the DOS directory */
  71 #define UMSDOS_UNLINK_DOS       1235    /* Erase in the DOS directory only */
  72 #define UMSDOS_RMDIR_DOS        1236    /* rmdir in the DOS directory only */
  73 #define UMSDOS_STAT_DOS         1237    /* Get info about a file */
  74 /* The next ioctl commands operate only on the EMD file */
  75 #define UMSDOS_CREAT_EMD        1238    /* Create a file */
  76 #define UMSDOS_UNLINK_EMD       1239    /* unlink (rmdir) a file */
  77 #define UMSDOS_READDIR_EMD      1240    /* read the EMD file only. */
  78 #define UMSDOS_GETVERSION       1241    /* Get the release number of UMSDOS */
  79 #define UMSDOS_INIT_EMD         1242    /* Create the EMD file if not there */
  80 #define UMSDOS_DOS_SETUP        1243    /* Set the defaults of the MsDOS driver */
  81 
  82 #ifndef _SYS_STAT_H
  83 #include <sys/stat.h>
  84 #endif
  85 
  86 struct umsdos_ioctl{
  87         struct dirent dos_dirent;
  88         struct umsdos_dirent umsdos_dirent;
  89         struct stat stat;
  90         char version,release;
  91 };
  92 
  93 /* Different macros to access struct umsdos_dirent */
  94 #define EDM_ENTRY_ISUSED(e) ((e)->name_len!=0)
  95 
  96 #ifdef __KERNEL__
  97 
  98 extern struct inode_operations umsdos_dir_inode_operations;
  99 extern struct file_operations  umsdos_file_operations;
 100 extern struct inode_operations umsdos_file_inode_operations;
 101 extern struct inode_operations umsdos_file_inode_operations_no_bmap;
 102 extern struct inode_operations umsdos_symlink_inode_operations;
 103 
 104 #include <linux/umsdos_fs.p>
 105 
 106 #endif /* __KERNEL__ */
 107 
 108 #endif

/* [previous][next][first][last][top][bottom][index][help] */