c68d736ff4
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
98 lines
2.3 KiB
Diff
98 lines
2.3 KiB
Diff
From eb155f6de0986dc14c37dc9c4172bf0bcb8779fe Mon Sep 17 00:00:00 2001
|
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
|
Date: Wed, 25 Jan 2012 15:18:01 +0100
|
|
Subject: [PATCH 1/4] mdmon: Use getopt_long() to parse command line options
|
|
|
|
This changes mdmon over to use getopt_long() for option parsing,
|
|
making it easier to add new options. In addition this patch introduces
|
|
a short version -t for --takeover and adds -h/--help.
|
|
|
|
Acked-by: Doug Ledford <dledford@redhat.com>
|
|
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
|
|
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
---
|
|
mdmon.c | 51 ++++++++++++++++++++++++++++++++++++++++-----------
|
|
1 files changed, 40 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/mdmon.c b/mdmon.c
|
|
index b6ae0e6..a65c4a4 100644
|
|
--- a/mdmon.c
|
|
+++ b/mdmon.c
|
|
@@ -265,7 +265,14 @@ static int do_fork(void)
|
|
|
|
void usage(void)
|
|
{
|
|
- fprintf(stderr, "Usage: mdmon [--all] [--takeover] CONTAINER\n");
|
|
+ fprintf(stderr,
|
|
+"Usage: mdmon [options] CONTAINER\n"
|
|
+"\n"
|
|
+"Options are:\n"
|
|
+" --help -h : This message\n"
|
|
+" --all : All devices\n"
|
|
+" --takeover -t : Takeover container\n"
|
|
+);
|
|
exit(2);
|
|
}
|
|
|
|
@@ -277,25 +284,47 @@ int main(int argc, char *argv[])
|
|
int devnum;
|
|
char *devname;
|
|
int status = 0;
|
|
- int arg;
|
|
+ int opt;
|
|
int all = 0;
|
|
int takeover = 0;
|
|
-
|
|
- for (arg = 1; arg < argc; arg++) {
|
|
- if (strncmp(argv[arg], "--all",5) == 0 ||
|
|
- strcmp(argv[arg], "/proc/mdstat") == 0) {
|
|
- container_name = argv[arg];
|
|
+ static struct option options[] = {
|
|
+ {"all", 0, NULL, 'a'},
|
|
+ {"takeover", 0, NULL, 't'},
|
|
+ {"help", 0, NULL, 'h'},
|
|
+ {NULL, 0, NULL, 0}
|
|
+ };
|
|
+
|
|
+ while ((opt = getopt_long(argc, argv, "th", options, NULL)) != -1) {
|
|
+ switch (opt) {
|
|
+ case 'a':
|
|
+ container_name = argv[optind-1];
|
|
all = 1;
|
|
- } else if (strcmp(argv[arg], "--takeover") == 0)
|
|
+ break;
|
|
+ case 't':
|
|
+ container_name = optarg;
|
|
takeover = 1;
|
|
- else if (container_name == NULL)
|
|
- container_name = argv[arg];
|
|
- else
|
|
+ break;
|
|
+ case 'h':
|
|
+ default:
|
|
usage();
|
|
+ break;
|
|
+ }
|
|
}
|
|
+
|
|
+ if (all == 0 && container_name == NULL) {
|
|
+ if (argv[optind])
|
|
+ container_name = argv[optind];
|
|
+ }
|
|
+
|
|
if (container_name == NULL)
|
|
usage();
|
|
|
|
+ if (argc - optind > 1)
|
|
+ usage();
|
|
+
|
|
+ if (strcmp(container_name, "/proc/mdstat") == 0)
|
|
+ all = 1;
|
|
+
|
|
if (all) {
|
|
struct mdstat_ent *mdstat, *e;
|
|
int container_len = strlen(container_name);
|
|
--
|
|
1.7.8.4
|
|
|