diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-04-23 01:45:08 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-04-23 01:45:08 +0000 |
commit | 3b59821cbdc63ad3acb920095cae1b866e28bcb7 (patch) | |
tree | 3f352a7a58e597b36b7a9154b6a32b098d6ccbb6 /util-linux/e2p/mntopts.c | |
parent | 0ea3a6f660d890368d22fc7d3543487f825b2f1b (diff) | |
download | busybox-3b59821cbdc63ad3acb920095cae1b866e28bcb7.tar.gz |
remove lsattr/chattr to prepare for a top level e2fsprogs dir with more stuff in it
Diffstat (limited to 'util-linux/e2p/mntopts.c')
-rw-r--r-- | util-linux/e2p/mntopts.c | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/util-linux/e2p/mntopts.c b/util-linux/e2p/mntopts.c deleted file mode 100644 index 6d0eca0ae..000000000 --- a/util-linux/e2p/mntopts.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * mountopts.c --- convert between default mount options and strings - * - * Copyright (C) 2002 Theodore Ts'o <tytso@mit.edu> - * - * This file can be redistributed under the terms of the GNU Library General - * Public License - * - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> - -#include "e2p.h" - -struct mntopt { - unsigned int mask; - const char *string; -}; - -static struct mntopt mntopt_list[] = { - { EXT2_DEFM_DEBUG, "debug" }, - { EXT2_DEFM_BSDGROUPS, "bsdgroups" }, - { EXT2_DEFM_XATTR_USER, "user_xattr" }, - { EXT2_DEFM_ACL, "acl" }, - { EXT2_DEFM_UID16, "uid16" }, - { EXT3_DEFM_JMODE_DATA, "journal_data" }, - { EXT3_DEFM_JMODE_ORDERED, "journal_data_ordered" }, - { EXT3_DEFM_JMODE_WBACK, "journal_data_writeback" }, - { 0, 0 }, -}; - -const char *e2p_mntopt2string(unsigned int mask) -{ - struct mntopt *f; - static char buf[20]; - int fnum; - - for (f = mntopt_list; f->string; f++) { - if (mask == f->mask) - return f->string; - } - for (fnum = 0; mask >>= 1; fnum++); - sprintf(buf, "MNTOPT_%d", fnum); - return buf; -} - -int e2p_string2mntopt(char *string, unsigned int *mask) -{ - struct mntopt *f; - char *eptr; - int num; - - for (f = mntopt_list; f->string; f++) { - if (!strcasecmp(string, f->string)) { - *mask = f->mask; - return 0; - } - } - if (strncasecmp(string, "MNTOPT_", 8)) - return 1; - - if (string[8] == 0) - return 1; - num = strtol(string+8, &eptr, 10); - if (num > 32 || num < 0) - return 1; - if (*eptr) - return 1; - *mask = 1 << num; - return 0; -} - -static char *skip_over_blanks(char *cp) -{ - while (*cp && isspace(*cp)) - cp++; - return cp; -} - -static char *skip_over_word(char *cp) -{ - while (*cp && !isspace(*cp) && *cp != ',') - cp++; - return cp; -} - -/* - * Edit a mntopt set array as requested by the user. The ok - * parameter, if non-zero, allows the application to limit what - * mntopts the user is allowed to set or clear using this function. - */ -int e2p_edit_mntopts(const char *str, __u32 *mntopts, __u32 ok) -{ - char *cp, *buf, *next; - int neg; - unsigned int mask; - - buf = malloc(strlen(str)+1); - if (!buf) - return 1; - strcpy(buf, str); - cp = buf; - while (cp && *cp) { - neg = 0; - cp = skip_over_blanks(cp); - next = skip_over_word(cp); - if (*next == 0) - next = 0; - else - *next = 0; - switch (*cp) { - case '-': - case '^': - neg++; - case '+': - cp++; - break; - } - if (e2p_string2mntopt(cp, &mask)) - return 1; - if (ok && !(ok & mask)) - return 1; - if (mask & EXT3_DEFM_JMODE) - *mntopts &= ~EXT3_DEFM_JMODE; - if (neg) - *mntopts &= ~mask; - else - *mntopts |= mask; - cp = next ? next+1 : 0; - } - return 0; -} |