[PATCH] signed char cleanup/fixes (10/11)

From: OGAWA Hirofumi (hirofumi@mail.parknet.co.jp)
Date: Mon Jul 21 2003 - 10:58:18 EST


This changes char type of filename to unsigned char more.

 fs/fat/dir.c | 20 +++++++++----------
 fs/fat/inode.c | 6 ++---
 fs/fat/misc.c | 5 ++--
 fs/msdos/namei.c | 46 ++++++++++++++++++++++-----------------------
 fs/vfat/namei.c | 48 ++++++++++++++++++++++++++---------------------
 include/linux/msdos_fs.h | 15 +++++++-------
 6 files changed, 74 insertions(+), 66 deletions(-)

diff -puN fs/fat/dir.c~fat_char-to-unsigned_char fs/fat/dir.c
--- linux-2.6.0-test1/fs/fat/dir.c~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/fs/fat/dir.c 2003-07-21 02:48:32.000000000 +0900
@@ -152,7 +152,7 @@ fat_strnicmp(struct nls_table *t, const
 }
 
 static inline int
-fat_shortname2uni(struct nls_table *nls, char *buf, int buf_size,
+fat_shortname2uni(struct nls_table *nls, unsigned char *buf, int buf_size,
                   wchar_t *uni_buf, unsigned short opt, int lower)
 {
         int len = 0;
@@ -176,8 +176,8 @@ fat_shortname2uni(struct nls_table *nls,
  * Return values: negative -> error, 0 -> not found, positive -> found,
  * value is the total amount of slots, including the shortname entry.
  */
-int fat_search_long(struct inode *inode, const char *name, int name_len,
- int anycase, loff_t *spos, loff_t *lpos)
+int fat_search_long(struct inode *inode, const unsigned char *name,
+ int name_len, int anycase, loff_t *spos, loff_t *lpos)
 {
         struct super_block *sb = inode->i_sb;
         struct buffer_head *bh = NULL;
@@ -187,7 +187,7 @@ int fat_search_long(struct inode *inode,
         wchar_t bufuname[14];
         unsigned char xlate_len, long_slots;
         wchar_t *unicode = NULL;
- char work[8], bufname[260]; /* 256 + 4 */
+ unsigned char work[8], bufname[260]; /* 256 + 4 */
         int uni_xlate = MSDOS_SB(sb)->options.unicode_xlate;
         int utf8 = MSDOS_SB(sb)->options.utf8;
         unsigned short opt_shortname = MSDOS_SB(sb)->options.shortname;
@@ -199,7 +199,7 @@ int fat_search_long(struct inode *inode,
                         goto EODir;
 parse_record:
                 long_slots = 0;
- if (de->name[0] == (__s8) DELETED_FLAG)
+ if (de->name[0] == DELETED_FLAG)
                         continue;
                 if (de->attr != ATTR_EXT && (de->attr & ATTR_VOLUME))
                         continue;
@@ -258,7 +258,7 @@ parse_long:
                                 if (ds->alias_checksum != alias_checksum)
                                         goto parse_long;
                         }
- if (de->name[0] == (__s8) DELETED_FLAG)
+ if (de->name[0] == DELETED_FLAG)
                                 continue;
                         if (de->attr == ATTR_EXT)
                                 goto parse_long;
@@ -351,7 +351,7 @@ static int fat_readdirx(struct inode *in
         wchar_t bufuname[14];
         unsigned char long_slots;
         wchar_t *unicode = NULL;
- char c, work[8], bufname[56], *ptname = bufname;
+ unsigned char c, work[8], bufname[56], *ptname = bufname;
         unsigned long lpos, dummy, *furrfu = &lpos;
         int uni_xlate = MSDOS_SB(sb)->options.unicode_xlate;
         int isvfat = MSDOS_SB(sb)->options.isvfat;
@@ -392,7 +392,7 @@ GetNew:
                 goto EODir;
         /* Check for long filename entry */
         if (isvfat) {
- if (de->name[0] == (__s8) DELETED_FLAG)
+ if (de->name[0] == DELETED_FLAG)
                         goto RecEnd;
                 if (de->attr != ATTR_EXT && (de->attr & ATTR_VOLUME))
                         goto RecEnd;
@@ -458,7 +458,7 @@ ParseLong:
                         if (ds->alias_checksum != alias_checksum)
                                 goto ParseLong;
                 }
- if (de->name[0] == (__s8) DELETED_FLAG)
+ if (de->name[0] == DELETED_FLAG)
                         goto RecEnd;
                 if (de->attr == ATTR_EXT)
                         goto ParseLong;
@@ -555,7 +555,7 @@ ParseLong:
                             (de->attr & ATTR_DIR) ? DT_DIR : DT_REG) < 0)
                         goto FillFailed;
         } else {
- char longname[275];
+ unsigned char longname[275];
                 int long_len = utf8
                         ? utf8_wcstombs(longname, unicode, sizeof(longname))
                         : uni16_to_x8(longname, unicode, uni_xlate,
diff -puN fs/fat/inode.c~fat_char-to-unsigned_char fs/fat/inode.c
--- linux-2.6.0-test1/fs/fat/inode.c~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/fs/fat/inode.c 2003-07-21 02:48:32.000000000 +0900
@@ -734,7 +734,7 @@ int fat_fill_super(struct super_block *s
         struct msdos_sb_info *sbi;
         int logical_sector_size, fat_clusters, debug, cp, first;
         unsigned int total_sectors, rootdir_sectors;
- unsigned char media;
+ unsigned int media;
         long error;
         char buf[50];
 
@@ -1037,9 +1037,9 @@ int fat_statfs(struct super_block *sb, s
         return 0;
 }
 
-static int is_exec(char *extension)
+static int is_exec(unsigned char *extension)
 {
- char *exe_extensions = "EXECOMBAT", *walk;
+ unsigned char *exe_extensions = "EXECOMBAT", *walk;
 
         for (walk = exe_extensions; *walk; walk += 3)
                 if (!strncmp(extension, walk, 3))
diff -puN fs/fat/misc.c~fat_char-to-unsigned_char fs/fat/misc.c
--- linux-2.6.0-test1/fs/fat/misc.c~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/fs/fat/misc.c 2003-07-21 02:48:32.000000000 +0900
@@ -346,8 +346,9 @@ int fat_subdirs(struct inode *dir)
  * Scans a directory for a given file (name points to its formatted name).
  * Returns an error code or zero.
  */
-int fat_scan(struct inode *dir, const char *name, struct buffer_head **bh,
- struct msdos_dir_entry **de, loff_t *i_pos)
+int fat_scan(struct inode *dir, const unsigned char *name,
+ struct buffer_head **bh, struct msdos_dir_entry **de,
+ loff_t *i_pos)
 {
         loff_t cpos;
 
diff -puN fs/msdos/namei.c~fat_char-to-unsigned_char fs/msdos/namei.c
--- linux-2.6.0-test1/fs/msdos/namei.c~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/fs/msdos/namei.c 2003-07-21 02:48:32.000000000 +0900
@@ -14,30 +14,30 @@
 
 
 /* MS-DOS "device special files" */
-static const char *reserved_names[] = {
- "CON ","PRN ","NUL ","AUX ",
- "LPT1 ","LPT2 ","LPT3 ","LPT4 ",
- "COM1 ","COM2 ","COM3 ","COM4 ",
- NULL
+static const unsigned char *reserved_names[] = {
+ "CON ","PRN ","NUL ","AUX ",
+ "LPT1 ","LPT2 ","LPT3 ","LPT4 ",
+ "COM1 ","COM2 ","COM3 ","COM4 ",
+ NULL
 };
 
 /* Characters that are undesirable in an MS-DOS file name */
-static char bad_chars[] = "*?<>|\"";
-static char bad_if_strict_pc[] = "+=,; ";
-static char bad_if_strict_atari[] = " "; /* GEMDOS is less restrictive */
+static unsigned char bad_chars[] = "*?<>|\"";
+static unsigned char bad_if_strict_pc[] = "+=,; ";
+static unsigned char bad_if_strict_atari[] = " "; /* GEMDOS is less restrictive */
 #define bad_if_strict(opts) ((opts)->atari ? bad_if_strict_atari : bad_if_strict_pc)
 
 /***** Formats an MS-DOS file name. Rejects invalid names. */
-static int msdos_format_name(const char *name,int len,
- char *res,struct fat_mount_options *opts)
+static int msdos_format_name(const unsigned char *name, int len,
+ unsigned char *res, struct fat_mount_options *opts)
         /* name is the proposed name, len is its length, res is
          * the resulting name, opts->name_check is either (r)elaxed,
          * (n)ormal or (s)trict, opts->dotsOK allows dots at the
          * beginning of name (for hidden files)
          */
 {
- char *walk;
- const char **reserved;
+ unsigned char *walk;
+ const unsigned char **reserved;
         unsigned char c;
         int space;
 
@@ -112,13 +112,13 @@ static int msdos_format_name(const char
 }
 
 /***** Locates a directory entry. Uses unformatted name. */
-static int msdos_find(struct inode *dir, const char *name, int len,
+static int msdos_find(struct inode *dir, const unsigned char *name, int len,
                       struct buffer_head **bh, struct msdos_dir_entry **de,
                       loff_t *i_pos)
 {
- int res;
+ unsigned char msdos_name[MSDOS_NAME];
         char dotsOK;
- char msdos_name[MSDOS_NAME];
+ int res;
 
         dotsOK = MSDOS_SB(dir->i_sb)->options.dotsOK;
         res = msdos_format_name(name,len, msdos_name,&MSDOS_SB(dir->i_sb)->options);
@@ -146,8 +146,8 @@ static int msdos_find(struct inode *dir,
 static int msdos_hash(struct dentry *dentry, struct qstr *qstr)
 {
         struct fat_mount_options *options = & (MSDOS_SB(dentry->d_sb)->options);
+ unsigned char msdos_name[MSDOS_NAME];
         int error;
- char msdos_name[MSDOS_NAME];
         
         error = msdos_format_name(qstr->name, qstr->len, msdos_name, options);
         if (!error)
@@ -162,8 +162,8 @@ static int msdos_hash(struct dentry *den
 static int msdos_cmp(struct dentry *dentry, struct qstr *a, struct qstr *b)
 {
         struct fat_mount_options *options = & (MSDOS_SB(dentry->d_sb)->options);
+ unsigned char a_msdos_name[MSDOS_NAME], b_msdos_name[MSDOS_NAME];
         int error;
- char a_msdos_name[MSDOS_NAME], b_msdos_name[MSDOS_NAME];
 
         error = msdos_format_name(a->name, a->len, a_msdos_name, options);
         if (error)
@@ -228,7 +228,7 @@ out:
 }
 
 /***** Creates a directory entry (name is already formatted). */
-static int msdos_add_entry(struct inode *dir, const char *name,
+static int msdos_add_entry(struct inode *dir, const unsigned char *name,
                            struct buffer_head **bh,
                            struct msdos_dir_entry **de,
                            loff_t *i_pos, int is_dir, int is_hid)
@@ -270,7 +270,7 @@ int msdos_create(struct inode *dir,struc
         struct inode *inode;
         loff_t i_pos;
         int res, is_hid;
- char msdos_name[MSDOS_NAME];
+ unsigned char msdos_name[MSDOS_NAME];
 
         lock_kernel();
         res = msdos_format_name(dentry->d_name.name,dentry->d_name.len,
@@ -352,7 +352,7 @@ int msdos_mkdir(struct inode *dir,struct
         struct msdos_dir_entry *de;
         struct inode *inode;
         int res,is_hid;
- char msdos_name[MSDOS_NAME];
+ unsigned char msdos_name[MSDOS_NAME];
         loff_t i_pos;
 
         lock_kernel();
@@ -442,9 +442,9 @@ unlink_done:
         return res;
 }
 
-static int do_msdos_rename(struct inode *old_dir, char *old_name,
+static int do_msdos_rename(struct inode *old_dir, unsigned char *old_name,
     struct dentry *old_dentry,
- struct inode *new_dir,char *new_name, struct dentry *new_dentry,
+ struct inode *new_dir, unsigned char *new_name, struct dentry *new_dentry,
     struct buffer_head *old_bh,
     struct msdos_dir_entry *old_de, loff_t old_i_pos, int is_hid)
 {
@@ -550,7 +550,7 @@ int msdos_rename(struct inode *old_dir,s
         struct msdos_dir_entry *old_de;
         loff_t old_i_pos;
         int error, is_hid, old_hid; /* if new file and old file are hidden */
- char old_msdos_name[MSDOS_NAME], new_msdos_name[MSDOS_NAME];
+ unsigned char old_msdos_name[MSDOS_NAME], new_msdos_name[MSDOS_NAME];
 
         lock_kernel();
         error = msdos_format_name(old_dentry->d_name.name,
diff -puN fs/vfat/namei.c~fat_char-to-unsigned_char fs/vfat/namei.c
--- linux-2.6.0-test1/fs/vfat/namei.c~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/fs/vfat/namei.c 2003-07-21 02:48:32.000000000 +0900
@@ -122,7 +122,7 @@ vfat_strnicmp(struct nls_table *t, const
  */
 static int vfat_hash(struct dentry *dentry, struct qstr *qstr)
 {
- const char *name;
+ const unsigned char *name;
         int len;
 
         len = qstr->len;
@@ -144,7 +144,7 @@ static int vfat_hash(struct dentry *dent
 static int vfat_hashi(struct dentry *dentry, struct qstr *qstr)
 {
         struct nls_table *t = MSDOS_SB(dentry->d_inode->i_sb)->nls_io;
- const char *name;
+ const unsigned char *name;
         int len;
         unsigned long hash;
 
@@ -206,11 +206,11 @@ static int vfat_cmp(struct dentry *dentr
 
 /* MS-DOS "device special files" */
 
-static const char *reserved3_names[] = {
+static const unsigned char *reserved3_names[] = {
         "con ", "prn ", "nul ", "aux ", NULL
 };
 
-static const char *reserved4_names[] = {
+static const unsigned char *reserved4_names[] = {
         "com1 ", "com2 ", "com3 ", "com4 ", "com5 ",
         "com6 ", "com7 ", "com8 ", "com9 ",
         "lpt1 ", "lpt2 ", "lpt3 ", "lpt4 ", "lpt5 ",
@@ -263,16 +263,20 @@ static inline int vfat_is_used_badchars(
 /* Returns negative number on error, 0 for a normal
  * return, and 1 for . or .. */
 
-static int vfat_valid_longname(const char *name, int len, int xlate)
+static int vfat_valid_longname(const unsigned char *name, int len, int xlate)
 {
- const char **reserved, *walk;
+ const unsigned char **reserved, *walk;
         int baselen;
 
- if (len && name[len-1] == ' ') return -EINVAL;
- if (len >= 256) return -EINVAL;
- if (len < 3) return 0;
+ if (len && name[len-1] == ' ')
+ return -EINVAL;
+ if (len >= 256)
+ return -EINVAL;
+ if (len < 3)
+ return 0;
 
- for (walk = name; *walk != 0 && *walk != '.'; walk++);
+ for (walk = name; *walk != 0 && *walk != '.'; walk++)
+ ;
         baselen = walk - name;
 
         if (baselen == 3) {
@@ -289,7 +293,7 @@ static int vfat_valid_longname(const cha
         return 0;
 }
 
-static int vfat_find_form(struct inode *dir,char *name)
+static int vfat_find_form(struct inode *dir, unsigned char *name)
 {
         struct msdos_dir_entry *de;
         struct buffer_head *bh = NULL;
@@ -402,7 +406,7 @@ static inline int to_shortname_char(stru
  */
 static int vfat_create_shortname(struct inode *dir, struct nls_table *nls,
                                  wchar_t *uname, int ulen,
- char *name_res, unsigned char *lcase)
+ unsigned char *name_res, unsigned char *lcase)
 {
         wchar_t *ip, *ext_start, *end, *name_start;
         unsigned char base[9], ext[4], buf[8], *p;
@@ -582,21 +586,22 @@ static int vfat_create_shortname(struct
 
 /* Translate a string, including coded sequences into Unicode */
 static int
-xlate_to_uni(const char *name, int len, char *outname, int *longlen, int *outlen,
- int escape, int utf8, struct nls_table *nls)
+xlate_to_uni(const unsigned char *name, int len, unsigned char *outname,
+ int *longlen, int *outlen, int escape, int utf8,
+ struct nls_table *nls)
 {
         const unsigned char *ip;
         unsigned char nc;
- char *op;
+ unsigned char *op;
         unsigned int ec;
         int i, k, fill;
         int charlen;
 
         if (utf8) {
- *outlen = utf8_mbstowcs((__u16 *) outname, name, PAGE_SIZE);
+ *outlen = utf8_mbstowcs((wchar_t *)outname, name, PAGE_SIZE);
                 if (name[len-1] == '.')
                         *outlen-=2;
- op = &outname[*outlen * sizeof(__u16)];
+ op = &outname[*outlen * sizeof(wchar_t)];
         } else {
                 if (name[len-1] == '.')
                         len--;
@@ -667,8 +672,9 @@ xlate_to_uni(const char *name, int len,
         return 0;
 }
 
-static int vfat_build_slots(struct inode *dir, const char *name, int len,
- struct msdos_dir_slot *ds, int *slots, int is_dir)
+static int vfat_build_slots(struct inode *dir, const unsigned char *name,
+ int len, struct msdos_dir_slot *ds,
+ int *slots, int is_dir)
 {
         struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb);
         struct fat_mount_options *opts = &sbi->options;
@@ -676,7 +682,7 @@ static int vfat_build_slots(struct inode
         struct msdos_dir_entry *de;
         unsigned long page;
         unsigned char cksum, lcase;
- char msdos_name[MSDOS_NAME];
+ unsigned char msdos_name[MSDOS_NAME];
         wchar_t *uname;
         int res, slot, ulen, usize, i;
         loff_t offset;
@@ -690,7 +696,7 @@ static int vfat_build_slots(struct inode
                 return -ENOMEM;
 
         uname = (wchar_t *)page;
- res = xlate_to_uni(name, len, (char *)uname, &ulen, &usize,
+ res = xlate_to_uni(name, len, (unsigned char *)uname, &ulen, &usize,
                            opts->unicode_xlate, opts->utf8, sbi->nls_io);
         if (res < 0)
                 goto out_free;
diff -puN include/linux/msdos_fs.h~fat_char-to-unsigned_char include/linux/msdos_fs.h
--- linux-2.6.0-test1/include/linux/msdos_fs.h~fat_char-to-unsigned_char 2003-07-21 02:48:32.000000000 +0900
+++ linux-2.6.0-test1-hirofumi/include/linux/msdos_fs.h 2003-07-21 02:48:32.000000000 +0900
@@ -44,7 +44,7 @@ struct statfs;
 #define CASE_LOWER_EXT 16 /* extension is lower case */
 
 #define DELETED_FLAG 0xe5 /* marks file as deleted when in name[0] */
-#define IS_FREE(n) (!*(n) || *(const unsigned char *) (n) == DELETED_FLAG)
+#define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)
 
 #define MSDOS_VALID_MODE (S_IFREG | S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO)
         /* valid file mode bits */
@@ -113,8 +113,8 @@ struct statfs;
 #define CT_LE_L(v) cpu_to_le32(v)
 
 struct fat_boot_sector {
- __s8 ignored[3]; /* Boot strap short or near jump */
- __s8 system_id[8]; /* Name - can be used to special case
+ __u8 ignored[3]; /* Boot strap short or near jump */
+ __u8 system_id[8]; /* Name - can be used to special case
                                    partition manager volumes */
         __u8 sector_size[2]; /* bytes per logical sector */
         __u8 cluster_size; /* sectors/cluster */
@@ -149,7 +149,7 @@ struct fat_boot_fsinfo {
 };
 
 struct msdos_dir_entry {
- __s8 name[8],ext[3]; /* name and extension */
+ __u8 name[8],ext[3]; /* name and extension */
         __u8 attr; /* attribute bits */
         __u8 lcase; /* Case for base and extension */
         __u8 ctime_ms; /* Creation time, milliseconds */
@@ -243,8 +243,9 @@ extern int fat_free(struct inode *inode,
 
 /* fat/dir.c */
 extern struct file_operations fat_dir_operations;
-extern int fat_search_long(struct inode *inode, const char *name, int name_len,
- int anycase, loff_t *spos, loff_t *lpos);
+extern int fat_search_long(struct inode *inode, const unsigned char *name,
+ int name_len, int anycase,
+ loff_t *spos, loff_t *lpos);
 extern int fat_readdir(struct file *filp, void *dirent, filldir_t filldir);
 extern int fat_dir_ioctl(struct inode * inode, struct file * filp,
                          unsigned int cmd, unsigned long arg);
@@ -304,7 +305,7 @@ static __inline__ int fat_get_entry(stru
         return fat__get_entry(dir, pos, bh, de, i_pos);
 }
 extern int fat_subdirs(struct inode *dir);
-extern int fat_scan(struct inode *dir, const char *name,
+extern int fat_scan(struct inode *dir, const unsigned char *name,
                     struct buffer_head **res_bh,
                     struct msdos_dir_entry **res_de, loff_t *i_pos);
 

_

-- 
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:43 EST