flags |= DEFAULTS_FLAG;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
default:
return command_usage(&limit_cmd);
name = (flags & DEFAULTS_FLAG) ? "0" : argv[optind++];
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage(&limit_cmd);
+ }
switch (type) {
case XFS_USER_QUOTA:
fname = optarg;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
default:
return command_usage(&restore_cmd);
if (argc < optind)
return command_usage(&restore_cmd);
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage(&restore_cmd);
+ }
if (fname) {
if ((fp = fopen(fname, "r")) == NULL) {
mask |= FS_DQ_RTBTIMER;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
default:
return command_usage(&timer_cmd);
if (!mask)
mask = FS_DQ_TIMER_MASK;
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage(&timer_cmd);
+ }
set_timer(type, mask, fs_path->fs_name, value);
return 0;
mask |= FS_DQ_RTBWARNS;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
default:
return command_usage(&warn_cmd);
if (!mask)
mask = FS_DQ_WARNS_MASK;
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage(&warn_cmd);
+ }
switch (type) {
case XFS_USER_QUOTA:
limit_cmd.argmin = 2;
limit_cmd.argmax = -1;
limit_cmd.args = \
- _("[-gpu] bsoft|bhard|isoft|ihard|rtbsoft|rtbhard=N -d|id|name");
+ _("[-g|-p|-u] bsoft|bhard|isoft|ihard|rtbsoft|rtbhard=N -d|id|name");
limit_cmd.oneline = _("modify quota limits");
limit_cmd.help = limit_help;
restore_cmd.cfunc = restore_f;
restore_cmd.argmin = 0;
restore_cmd.argmax = -1;
- restore_cmd.args = _("[-gpu] [-f file]");
+ restore_cmd.args = _("[-g|-p|-u] [-f file]");
restore_cmd.oneline = _("restore quota limits from a backup file");
timer_cmd.name = "timer";
timer_cmd.cfunc = timer_f;
timer_cmd.argmin = 2;
timer_cmd.argmax = -1;
- timer_cmd.args = _("[-bir] [-gpu] value");
+ timer_cmd.args = _("[-bir] [-g|-p|-u] value");
timer_cmd.oneline = _("set quota enforcement timeouts");
timer_cmd.help = timer_help;
warn_cmd.cfunc = warn_f;
warn_cmd.argmin = 2;
warn_cmd.argmax = -1;
- warn_cmd.args = _("[-bir] [-gpu] value -d|id|name");
+ warn_cmd.args = _("[-bir] [-g|-p|-u] value -d|id|name");
warn_cmd.oneline = _("get/set enforcement warning counter");
warn_cmd.help = warn_help;
form |= XFS_RTBLOCK_QUOTA;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
case 'a':
flags |= ALL_MOUNTS_FLAG;
if (!form)
form = XFS_BLOCK_QUOTA;
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage("_cmd);
+ }
if ((fp = fopen_write_secure(fname)) == NULL)
return 0;
quot_cmd.cfunc = quot_f;
quot_cmd.argmin = 0;
quot_cmd.argmax = -1;
- quot_cmd.args = _("[-bir] [-gpu] [-acv] [-f file]");
+ quot_cmd.args = _("[-bir] [-g|-p|-u] [-acv] [-f file]");
quot_cmd.oneline = _("summarize filesystem ownership");
quot_cmd.help = quot_help;
form |= XFS_RTBLOCK_QUOTA;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
case 'h':
flags |= HUMAN_FLAG;
if (!form)
form = XFS_BLOCK_QUOTA;
- if (!type)
+ if (!type) {
type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage("a_cmd);
+ }
if ((fp = fopen_write_secure(fname)) == NULL)
return 0;
quota_cmd.cfunc = quota_f;
quota_cmd.argmin = 0;
quota_cmd.argmax = -1;
- quota_cmd.args = _("[-bir] [-gpu] [-hnNv] [-f file] [id|name]...");
+ quota_cmd.args = _("[-bir] [-g|-p|-u] [-hnNv] [-f file] [id|name]...");
quota_cmd.oneline = _("show usage and limits");
quota_cmd.help = quota_help;
static void
dump_help(void)
{
- dump_cmd.args = _("[-gpu] [-f file]");
+ dump_cmd.args = _("[-g|-p|-u] [-f file]");
dump_cmd.oneline = _("dump quota information for backup utilities");
printf(_(
"\n"
FILE *fp;
char *fname = NULL;
uint lower = 0, upper = 0;
- int c, type = XFS_USER_QUOTA;
+ int c, type = 0;
while ((c = getopt(argc, argv, "f:gpuL:U:")) != EOF) {
switch(c) {
fname = optarg;
break;
case 'g':
- type = XFS_GROUP_QUOTA;
+ type |= XFS_GROUP_QUOTA;
break;
case 'p':
- type = XFS_PROJ_QUOTA;
+ type |= XFS_PROJ_QUOTA;
break;
case 'u':
- type = XFS_USER_QUOTA;
+ type |= XFS_USER_QUOTA;
break;
case 'L':
lower = (uint)atoi(optarg);
if (argc != optind)
return command_usage(&dump_cmd);
+ if (!type) {
+ type = XFS_USER_QUOTA;
+ } else if (type != XFS_GROUP_QUOTA &&
+ type != XFS_PROJ_QUOTA &&
+ type != XFS_USER_QUOTA) {
+ return command_usage(&dump_cmd);
+ }
+
if ((fp = fopen_write_secure(fname)) == NULL)
return 0;
dump_cmd.cfunc = dump_f;
dump_cmd.argmin = 0;
dump_cmd.argmax = -1;
- dump_cmd.args = _("[-gpu] [-f file]");
+ dump_cmd.args = _("[-g|-p|-u] [-f file]");
dump_cmd.oneline = _("dump quota information for backup utilities");
dump_cmd.help = dump_help;