From: Theodore Ts'o Date: Thu, 23 Jan 2003 00:55:59 +0000 (-0500) Subject: fsck.c (parse_fstab_line, parse_escape): Add support for X-Git-Tag: E2FSPROGS-1_33-WIP-0306~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76ea3a2c7fc1b6ff03d566af66c971dbf867be45;p=thirdparty%2Fe2fsprogs.git fsck.c (parse_fstab_line, parse_escape): Add support for backslash escaping in /etc/fstab. (i.e., so that \040 will work.) --- diff --git a/misc/ChangeLog b/misc/ChangeLog index e5e4fc122..c5273d4c0 100644 --- a/misc/ChangeLog +++ b/misc/ChangeLog @@ -1,3 +1,9 @@ +2003-01-22 Theodore Ts'o + + * fsck.c (parse_fstab_line, parse_escape): Add support for + backslash escaping in /etc/fstab. (i.e., so that \040 + will work.) + 2002-11-12 Theodore Ts'o * mke2fs.c (PRS): Don't enable the dir_index feature by default; diff --git a/misc/fsck.c b/misc/fsck.c index ac54d2e44..c6df84512 100644 --- a/misc/fsck.c +++ b/misc/fsck.c @@ -153,6 +153,41 @@ static char *parse_word(char **buf) return word; } +static void parse_escape(char *word) +{ + char *p, *q; + int ac, i; + + for (p = word, q = word; *p; p++, q++) { + *q = *p; + if (*p != '\\') + continue; + if (*++p == 0) + break; + if (*p == 't') { + *q = '\t'; + continue; + } + if (*p == 'n') { + *q = '\n'; + continue; + } + if (!isdigit(*p)) { + *q = *p; + continue; + } + ac = 0; + for (i = 0; i < 3; i++, p++) { + if (!isdigit(*p)) + break; + ac = (ac * 8) + (*p - '0'); + } + *q = ac; + p--; + } + *q = 0; +} + static void free_instance(struct fsck_instance *i) { if (i->prog) @@ -183,6 +218,13 @@ static int parse_fstab_line(char *line, struct fs_info **ret_fs) freq = parse_word(&cp); passno = parse_word(&cp); + parse_escape(device); + parse_escape(mntpnt); + parse_escape(type); + parse_escape(opts); + parse_escape(freq); + parse_escape(passno); + if (!device) return 0; /* Allow blank lines */