From: lsr@neapel230.server4you.de
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] Simplify checks for unwanted chars
Date: Tue, 9 Nov 2004 02:42:07 +0100 [thread overview]
Message-ID: <20041109014207.GD6835@neapel230.server4you.de> (raw)
In-Reply-To: <41901DD1.mail5VX1GOOYK@lsrfire.ath.cx>
This patch replaces the macros IS_REPLACECHAR and IS_SKIPCHAR and their
static char arrays with inline functions. IMHO it makes the code
slightly more readable and shrinks both code and compiled text size.
The use of inline functions instead of macros also gives us type safety
without having to resort to casting.
--- ./fs/vfat/namei.c.orig 2004-11-08 21:18:48.000000000 +0100
+++ ./fs/vfat/namei.c 2004-11-08 21:18:19.000000000 +0100
@@ -159,25 +159,20 @@ static int vfat_cmp(struct dentry *dentr
/* Characters that are undesirable in an MS-DOS file name */
-static wchar_t replace_chars[] = {
- /* `[' `]' `;' `,' `+' `=' */
- 0x005B, 0x005D, 0x003B, 0x002C, 0x002B, 0x003D, 0,
-};
-#define IS_REPLACECHAR(uni) (vfat_unistrchr(replace_chars, (uni)) != NULL)
-
-static wchar_t skip_chars[] = {
- /* `.' ` ' */
- 0x002E, 0x0020, 0,
-};
-#define IS_SKIPCHAR(uni) \
- ((wchar_t)(uni) == skip_chars[0] || (wchar_t)(uni) == skip_chars[1])
+static inline int vfat_replace_char(wchar_t w)
+{
+ return (w == 0x005B) /* [ */
+ || (w == 0x005D) /* ] */
+ || (w == 0x003B) /* ; */
+ || (w == 0x002C) /* , */
+ || (w == 0x002B) /* + */
+ || (w == 0x003D); /* = */
+}
-static inline wchar_t *vfat_unistrchr(const wchar_t *s, const wchar_t c)
+static inline int vfat_skip_char(wchar_t w)
{
- for(; *s != c; ++s)
- if (*s == 0)
- return NULL;
- return (wchar_t *) s;
+ return (w == 0x002E) /* . */
+ || (w == 0x0020); /* <space> */
}
static int vfat_valid_longname(const unsigned char *name, unsigned int len)
@@ -285,11 +280,11 @@ static inline int to_shortname_char(stru
{
int len;
- if (IS_SKIPCHAR(*src)) {
+ if (vfat_skip_char(*src)) {
info->valid = 0;
return 0;
}
- if (IS_REPLACECHAR(*src)) {
+ if (vfat_replace_char(*src)) {
info->valid = 0;
buf[0] = '_';
return 1;
@@ -369,7 +364,7 @@ static int vfat_create_shortname(struct
*/
name_start = &uname[0];
while (name_start < ext_start) {
- if (!IS_SKIPCHAR(*name_start))
+ if (!vfat_skip_char(*name_start))
break;
name_start++;
}
next prev parent reply other threads:[~2004-11-09 1:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-09 1:30 [PATCH 0/4] VFAT cleanup Rene Scharfe
2004-11-09 1:35 ` [PATCH 1/4] Move check for invalid chars to vfat_valid_longname() lsr
2004-11-09 15:03 ` OGAWA Hirofumi
2004-11-09 16:22 ` René Scharfe
2004-11-09 17:25 ` OGAWA Hirofumi
2004-11-09 18:22 ` Rene Scharfe
2004-11-09 18:41 ` OGAWA Hirofumi
2004-11-09 1:38 ` [PATCH 2/4] Return better error codes from vfat_valid_longname() lsr
2004-11-09 15:28 ` OGAWA Hirofumi
2004-11-09 16:49 ` Rene Scharfe
2004-11-09 17:35 ` OGAWA Hirofumi
2004-11-09 18:35 ` Rene Scharfe
2004-11-09 19:08 ` OGAWA Hirofumi
2004-11-09 1:42 ` lsr [this message]
2004-11-09 15:40 ` [PATCH 3/4] Simplify checks for unwanted chars OGAWA Hirofumi
2004-11-09 1:43 ` [PATCH 4/4] Manually inline shortname_info_to_lcase() lsr
2004-11-09 15:11 ` OGAWA Hirofumi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041109014207.GD6835@neapel230.server4you.de \
--to=lsr@neapel230.server4you.de \
--cc=hirofumi@mail.parknet.co.jp \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.