From: Sami Kerola Date: Sat, 17 Mar 2012 17:10:58 +0000 (+0100) Subject: delpart: align with util-linux coding standards X-Git-Tag: v2.22-rc1~592 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04874274a557f41f852ad0a0eefa3d44dc50ad8f;p=thirdparty%2Futil-linux.git delpart: align with util-linux coding standards Add long options and usage function, use gnu errror printing facilities and validate inputs. Signed-off-by: Sami Kerola --- diff --git a/partx/Makefile.am b/partx/Makefile.am index d67ddd22b7..1f418903b2 100644 --- a/partx/Makefile.am +++ b/partx/Makefile.am @@ -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 \ diff --git a/partx/delpart.c b/partx/delpart.c index 940cfd7db1..84623dfbe6 100644 --- a/partx/delpart.c +++ b/partx/delpart.c @@ -1,27 +1,60 @@ +#include #include #include #include +#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 \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; }