public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix xfs_quota command handling.
@ 2007-05-31  4:22 Utako Kusaka
  2007-06-11  9:30 ` Donald Douwsma
  0 siblings, 1 reply; 2+ messages in thread
From: Utako Kusaka @ 2007-05-31  4:22 UTC (permalink / raw)
  To: xfs

Hi,

This is my last patch for xfs_quota, maybe.
When path argument is not specified, xfs_quota executes commands repeatedly
to the number of mounted XFS file systems.
As a result, I get the same command report many times. 
This patch implements the similar command loop operation to xfs_db.

# ./xfs_quota -c "print" -c "help"
Filesystem          Pathname
/home/utako/mpnt    /dev/sda6 (uquota)
/home/utako/mpnt/mpnt2 /dev/loop0 (uquota)
/home/utako/mpnt/pjq /dev/sda6 (project 42, logfiles)
/home/utako/mpnt/pjq2 /dev/sda6 (project 43, logfiles2)
Filesystem          Pathname
/home/utako/mpnt    /dev/sda6 (uquota)
/home/utako/mpnt/mpnt2 /dev/loop0 (uquota)
/home/utako/mpnt/pjq /dev/sda6 (project 42, logfiles)
/home/utako/mpnt/pjq2 /dev/sda6 (project 43, logfiles2)
df [-bir] [-hn] [-f file] -- show free and used counts for blocks and inodes
help [command] -- help for one or all commands
print -- list known mount points and projects
quit -- exit the program
quota [-bir] [-gpu] [-hnv] [-f file] [id|name]... -- show usage and limits

Use 'help commandname' for extended help.
df [-bir] [-hn] [-f file] -- show free and used counts for blocks and inodes
help [command] -- help for one or all commands
print -- list known mount points and projects
quit -- exit the program
quota [-bir] [-gpu] [-hnv] [-f file] [id|name]... -- show usage and limits

Use 'help commandname' for extended help.

--
Utako Kusaka


Signed-off-by: Utako Kusaka <utako@tnes.nec.co.jp>
---

--- xfsprogs-2.8.20/quota/init.orig	2007-05-16 11:38:39.000000000 +0900
+++ xfsprogs-2.8.20/quota/init.c	2007-05-30 11:16:56.000000000 +0900
@@ -25,6 +25,8 @@ char	*progname;
 int	exitcode;
 int	expert;
 
+static char **cmdline;	/* table of user commands */
+static int  ncmdline;	/* number of entries in command table */
 static char **projopts;	/* table of project names (cmdline) */
 static int nprojopts;	/* number of entries in name table. */
 
@@ -74,24 +76,6 @@ init_commands(void)
 	state_init();
 }
 
-static int
-init_args_command(
-	int	index)
-{
-	if (index >= fs_count)
-		return 0;
-
-	do {
-		fs_path = &fs_table[index++];
-	} while ((fs_path->fs_flags & FS_PROJECT_PATH) && index < fs_count);
-
-	if (fs_path->fs_flags & FS_PROJECT_PATH)
-		return 0;
-	if (index > fs_count)
-		return 0;
-	return index;
-}
-
 static void
 init(
 	int		argc,
@@ -107,7 +91,12 @@ init(
 	while ((c = getopt(argc, argv, "c:d:D:P:p:t:xV")) != EOF) {
 		switch (c) {
 		case 'c':	/* commands */
-			add_user_command(optarg);
+			cmdline = realloc(cmdline, (ncmdline+1)*sizeof(char*));
+			if (!cmdline) {
+				perror("realloc");
+				exit(1);
+			}
+			cmdline[ncmdline++] = optarg;
 			break;
 		case 'd':
 			add_project_opt(optarg);
@@ -150,7 +139,6 @@ init(
 		free(projopts);
 
 	init_commands();
-	add_args_command(init_args_command);
 }
 
 int
@@ -158,7 +146,32 @@ main(
 	int		argc,
 	char		**argv)
 {
+        int     c, i, done = 0;
+        char    *input;
+        char    **v;
+
 	init(argc, argv);
-	command_loop();
+
+        for (i = 0; !done && i < ncmdline; i++) {
+                v = breakline(cmdline[i], &c);
+                if (c)
+                        done = command(c, v);
+                free(v);
+        }
+        if (cmdline) {
+                free(cmdline);
+                return exitcode;
+        }
+
+        while (!done) {
+                if ((input = fetchline()) == NULL)
+                        break;
+                v = breakline(input, &c);
+                if (c)
+                        done = command(c, v);
+                doneline(input, v);
+        }
+
+
 	return exitcode;
 }

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-06-11  9:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-31  4:22 [PATCH] Fix xfs_quota command handling Utako Kusaka
2007-06-11  9:30 ` Donald Douwsma

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox