diff options
author | Karel Zak <kzak@redhat.com> | 2006-12-07 00:25:43 +0100 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2006-12-07 00:25:43 +0100 |
commit | 22853e4a82c6ef7b336527529acb94b14a0b0fd8 (patch) | |
tree | ee28e4598c8c449d7e811711d8ce8eb17caecfb6 /partx/addpart.c | |
parent | eb63b9b8f4cecb34c2478282567862bc48ef256d (diff) | |
download | util-linux-old-22853e4a82c6ef7b336527529acb94b14a0b0fd8.tar.gz |
Imported from util-linux-2.10m tarball.
Diffstat (limited to 'partx/addpart.c')
-rw-r--r-- | partx/addpart.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/partx/addpart.c b/partx/addpart.c new file mode 100644 index 00000000..11d4305b --- /dev/null +++ b/partx/addpart.c @@ -0,0 +1,40 @@ +/* very primitive wrapper around the `add partition' ioctl */ +#include <stdio.h> +#include <fcntl.h> +#include <stdlib.h> +#include <sys/ioctl.h> +#include <linux/blkpg.h> + +int +main(int argc, char **argv){ + int fd; + struct blkpg_ioctl_arg a; + struct blkpg_partition p; + + if (argc != 5) { + fprintf(stderr, + "usage: %s diskdevice partitionnr start length\n", + argv[0]); + exit(1); + } + if ((fd = open(argv[1], O_RDONLY)) < 0) { + perror(argv[1]); + exit(1); + } + p.pno = atoi(argv[2]); + p.start = 512 * ((long long) atol(argv[3])); + p.length = 512 * ((long long) atol(argv[4])); + p.devname[0] = 0; + p.volname[0] = 0; + a.op = BLKPG_ADD_PARTITION; + a.flags = 0; + a.datalen = sizeof(p); + a.data = &p; + + if (ioctl(fd, BLKPG, &a) == -1) { + perror("BLKPG"); + exit(1); + } + + return 0; +} |