]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
delpart: align with util-linux coding standards
authorSami Kerola <kerolasa@iki.fi>
Sat, 17 Mar 2012 17:10:58 +0000 (18:10 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 30 Mar 2012 14:48:12 +0000 (16:48 +0200)
Add long options and usage function, use gnu errror printing
facilities and validate inputs.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
partx/Makefile.am
partx/delpart.c

index d67ddd22b78381ae855eb8ed64c471db110b84ea..1f418903b2b5fa3e89962a964faac13a01d353e4 100644 (file)
@@ -5,6 +5,7 @@ dist_man_MANS = addpart.8 delpart.8
 
 usrsbin_exec_PROGRAMS += partx
 addpart_SOURCES = addpart.c $(top_srcdir)/lib/strutils.c
+delpart_SOURCES = delpart.c $(top_srcdir)/lib/strutils.c
 partx_SOURCES = \
        partx.c \
        partx.h \
index 940cfd7db1673dba64175b53e83f4042bed9f483..84623dfbe663e05d182f3033a0a44eb9cb5ba73a 100644 (file)
@@ -1,27 +1,60 @@
+#include <getopt.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <fcntl.h>
 
+#include "c.h"
+#include "nls.h"
 #include "partx.h"
+#include "strutils.h"
 
-int
-main(int argc, char **argv){
-       int fd;
-
-       if (argc != 3) {
-               fprintf(stderr,
-                       "usage: %s diskdevice partitionnr\n",
-                       argv[0]);
-               exit(1);
-       }
-       if ((fd = open(argv[1], O_RDONLY)) < 0) {
-               perror(argv[1]);
-               exit(1);
-       }
-
-       if (partx_del_partition(fd, atoi(argv[2])) == -1) {
-               perror("BLKPG");
-               exit(1);
-       }
-       return 0;
+static void __attribute__ ((__noreturn__)) usage(FILE * out)
+{
+       fputs(USAGE_HEADER, out);
+       fprintf(out, _(" %s <disk device> <partition number>\n"),
+               program_invocation_short_name);
+       fputs(USAGE_OPTIONS, out);
+       fputs(USAGE_HELP, out);
+       fputs(USAGE_VERSION, out);
+       fprintf(out, USAGE_MAN_TAIL("delpart(8)"));
+       exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+
+int main(int argc, char **argv)
+{
+       int c, fd;
+
+       static const struct option longopts[] = {
+               {"help", no_argument, 0, 'h'},
+               {"version", no_argument, 0, 'V'},
+               {NULL, no_argument, 0, '0'},
+       };
+
+       setlocale(LC_ALL, "");
+       bindtextdomain(PACKAGE, LOCALEDIR);
+       textdomain(PACKAGE);
+
+       while ((c = getopt_long(argc, argv, "Vh", longopts, NULL)) != -1)
+               switch (c) {
+               case 'V':
+                       printf(UTIL_LINUX_VERSION);
+                       return EXIT_SUCCESS;
+               case 'h':
+                       usage(stdout);
+               default:
+                       usage(stderr);
+               }
+
+       if (argc != 3)
+               usage(stderr);
+       if ((fd = open(argv[1], O_RDONLY)) < 0)
+               err(EXIT_FAILURE, "%s", argv[1]);
+
+       if (partx_del_partition(fd,
+                               strtol_or_err(argv[2],
+                                             _("failed to parse argument"))))
+
+               err(EXIT_FAILURE, "BLKPG");
+
+       return EXIT_SUCCESS;
 }