summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Písař <ppisar@redhat.com>2013-01-09 17:27:11 +0100
committerJan Kara <jack@suse.cz>2013-01-21 22:52:06 +0100
commit2d851a9726b799078f8c2279d8dd9ce39b7b4055 (patch)
treece89f5f6d2f3fb7c5f250cc75cdef9b4a389e0d2
parent0ada9c13f9b8299ff607b66c37022ce2a3c4444b (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.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/setquota.c b/setquota.c
index ccac7f7..e55b79d 100644
--- a/setquota.c
+++ b/setquota.c
@@ -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;
}