diff options
author | Petr Písař <ppisar@redhat.com> | 2013-01-09 17:27:11 +0100 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2013-01-21 22:52:06 +0100 |
commit | 2d851a9726b799078f8c2279d8dd9ce39b7b4055 (patch) | |
tree | ce89f5f6d2f3fb7c5f250cc75cdef9b4a389e0d2 | |
parent | 0ada9c13f9b8299ff607b66c37022ce2a3c4444b (diff) |
Recognize block limit units on setquota standard input
This patch adds support for binary suffixes on `setquota -b' input.
Signed-off-by: Petr Písař <ppisar@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r-- | setquota.c | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -319,7 +319,9 @@ static int read_entry(qid_t *id, qsize_t *isoftlimit, qsize_t *ihardlimit, qsize static int line = 0; char name[MAXNAMELEN+1]; char linebuf[MAXLINELEN], *chptr; - unsigned long is, ih, bs, bh; + unsigned long is, ih; + char bs[MAXNAMELEN+1], bh[MAXNAMELEN+1]; + const char *error; int ret; while (1) { @@ -337,7 +339,7 @@ static int read_entry(qid_t *id, qsize_t *isoftlimit, qsize_t *ihardlimit, qsize chptr++; if (*chptr == '\n') continue; - ret = sscanf(chptr, "%s %lu %lu %lu %lu", name, &bs, &bh, &is, &ih); + ret = sscanf(chptr, "%s %s %s %lu %lu", name, bs, bh, &is, &ih); if (ret != 5) { errstr(_("Cannot parse input line %d.\n"), line); if (!(flags & FL_CONTINUE_BATCH)) @@ -353,12 +355,28 @@ static int read_entry(qid_t *id, qsize_t *isoftlimit, qsize_t *ihardlimit, qsize errstr(_("Skipping line.\n")); continue; } + error = str2space(bs, bsoftlimit); + if (error) { + errstr(_("Unable to parse block soft limit '%s' " + "on line %d: %s\n"), bs, line, error); + if (!(flags & FL_CONTINUE_BATCH)) + die(1, _("Exitting.\n")); + errstr(_("Skipping line.\n")); + continue; + } + error = str2space(bh, bhardlimit); + if (error) { + errstr(_("Unable to parse block hard limit '%s' " + "on line %d: %s\n"), bh, line, error); + if (!(flags & FL_CONTINUE_BATCH)) + die(1, _("Exitting.\n")); + errstr(_("Skipping line.\n")); + continue; + } break; } *isoftlimit = is; *ihardlimit = ih; - *bsoftlimit = bs; - *bhardlimit = bh; return 0; } |