summaryrefslogtreecommitdiffstats
path: root/disk-utils/addpart.c
diff options
context:
space:
mode:
authorKarel Zak2012-06-26 18:24:16 +0200
committerKarel Zak2012-06-26 20:50:18 +0200
commit957bab4e914ee56721069ee38a38517b658b1ab3 (patch)
tree5bdd0f0aad924ba1ff0715ee391752ef9f0f0bba /disk-utils/addpart.c
parentbuild-sys: convert disk-utils/ to module (diff)
downloadkernel-qcow2-util-linux-957bab4e914ee56721069ee38a38517b658b1ab3.tar.gz
kernel-qcow2-util-linux-957bab4e914ee56721069ee38a38517b658b1ab3.tar.xz
kernel-qcow2-util-linux-957bab4e914ee56721069ee38a38517b658b1ab3.zip
build-sys: move partx to disk-utils/
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'disk-utils/addpart.c')
-rw-r--r--disk-utils/addpart.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/disk-utils/addpart.c b/disk-utils/addpart.c
new file mode 100644
index 000000000..0d814bf3e
--- /dev/null
+++ b/disk-utils/addpart.c
@@ -0,0 +1,61 @@
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+#include "c.h"
+#include "nls.h"
+#include "partx.h"
+#include "strutils.h"
+
+static void __attribute__ ((__noreturn__)) usage(FILE * out)
+{
+ fputs(USAGE_HEADER, out);
+ fprintf(out, _(" %s <disk device> <partition number> <start> <length>\n"),
+ program_invocation_short_name);
+ fputs(USAGE_OPTIONS, out);
+ fputs(USAGE_HELP, out);
+ fputs(USAGE_VERSION, out);
+ fprintf(out, USAGE_MAN_TAIL("addpart(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 != 5)
+ usage(stderr);
+
+ if ((fd = open(argv[1], O_RDONLY)) < 0)
+ err(EXIT_FAILURE, _("%s: open failed"), argv[1]);
+
+ if (partx_add_partition(fd,
+ strtou32_or_err(argv[2], _("invalid partition number argument")),
+ strtou64_or_err(argv[3], _("invalid start argument")),
+ strtou64_or_err(argv[4], _("invalid length argument"))))
+ err(EXIT_FAILURE, _("failed to add partition"));
+
+ return EXIT_SUCCESS;
+}