diff options
Diffstat (limited to 'fdisk/delpart.c')
-rw-r--r-- | fdisk/delpart.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/fdisk/delpart.c b/fdisk/delpart.c new file mode 100644 index 00000000..8504c022 --- /dev/null +++ b/fdisk/delpart.c @@ -0,0 +1,40 @@ +/* very primitive wrapper around the `delete 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 != 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); + } + p.pno = atoi(argv[2]); + p.start = 0; + p.length = 0; + p.devname[0] = 0; + p.volname[0] = 0; + a.op = BLKPG_DEL_PARTITION; + a.flags = 0; + a.datalen = sizeof(p); + a.data = &p; + + if (ioctl(fd, BLKPG, &a) == -1) { + perror("BLKPG"); + exit(1); + } + + return 0; +} |