summaryrefslogtreecommitdiffstats
path: root/disk-utils/mkfs.bfs.c
diff options
context:
space:
mode:
authorSami Kerola2011-07-11 20:32:37 +0200
committerSami Kerola2011-07-11 20:32:37 +0200
commitc36f105df75d82f7fd3caa66ac0ea61a1c839af2 (patch)
tree5938e10bcacb9d0668d21a54952a1072d76c044c /disk-utils/mkfs.bfs.c
parentbuild-sys: fix spaces versus tabs conflict (diff)
downloadkernel-qcow2-util-linux-c36f105df75d82f7fd3caa66ac0ea61a1c839af2.tar.gz
kernel-qcow2-util-linux-c36f105df75d82f7fd3caa66ac0ea61a1c839af2.tar.xz
kernel-qcow2-util-linux-c36f105df75d82f7fd3caa66ac0ea61a1c839af2.zip
mkfs.bfs: use libc error facilities
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'disk-utils/mkfs.bfs.c')
-rw-r--r--disk-utils/mkfs.bfs.c65
1 files changed, 23 insertions, 42 deletions
diff --git a/disk-utils/mkfs.bfs.c b/disk-utils/mkfs.bfs.c
index 58f5352ab..f892efe0a 100644
--- a/disk-utils/mkfs.bfs.c
+++ b/disk-utils/mkfs.bfs.c
@@ -14,6 +14,8 @@
#include <errno.h>
#include <string.h>
#include <time.h>
+
+#include "c.h"
#include "nls.h"
#include "blkdev.h"
@@ -65,19 +67,6 @@ struct bfsde {
static char *progname;
static void
-fatal(char *s, ...) {
- va_list p;
-
- va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "\n%s: ", progname);
- vfprintf(stderr, s, p);
- va_end(p);
- fprintf(stderr, "\n");
- exit(1);
-}
-
-static void
usage(void) {
fprintf(stderr, _(
"Usage: %s [-v] [-N nr-of-inodes] [-V volume-name]\n"
@@ -127,14 +116,14 @@ main(int argc, char *argv[]) {
case 'V':
len = strlen(optarg);
if (len <= 0 || len > 6)
- fatal(_("volume name too long"));
+ errx(EXIT_FAILURE, _("volume name too long"));
volume = strdup(optarg);
break;
case 'F':
len = strlen(optarg);
if (len <= 0 || len > 6)
- fatal(_("fsname name too long"));
+ errx(EXIT_FAILURE, _("fsname name too long"));
fsname = strdup(optarg);
break;
@@ -157,19 +146,15 @@ main(int argc, char *argv[]) {
device = argv[optind++];
- if (stat(device, &statbuf) == -1) {
- perror(device);
- fatal(_("cannot stat device %s"), device);
- }
+ if (stat(device, &statbuf) == -1)
+ err(EXIT_FAILURE, _("cannot stat device %s"), device);
if (!S_ISBLK(statbuf.st_mode))
- fatal(_("%s is not a block special device"), device);
+ errx(EXIT_FAILURE, _("%s is not a block special device"), device);
fd = open(device, O_RDWR | O_EXCL);
- if (fd == -1) {
- perror(device);
- fatal(_("cannot open %s"), device);
- }
+ if (fd == -1)
+ err(EXIT_FAILURE, _("cannot open %s"), device);
if (optind == argc-1)
user_specified_total_blocks = atoll(argv[optind]);
@@ -177,14 +162,12 @@ main(int argc, char *argv[]) {
usage();
if (blkdev_get_sectors(fd, &total_blocks) == -1) {
- if (!user_specified_total_blocks) {
- perror("blkdev_get_sectors");
- fatal(_("cannot get size of %s"), device);
- }
+ if (!user_specified_total_blocks)
+ err(EXIT_FAILURE, _("cannot get size of %s"), device);
total_blocks = user_specified_total_blocks;
} else if (user_specified_total_blocks) {
if (user_specified_total_blocks > total_blocks)
- fatal(_("blocks argument too large, max is %llu"),
+ errx(EXIT_FAILURE, _("blocks argument too large, max is %llu"),
total_blocks);
total_blocks = user_specified_total_blocks;
}
@@ -199,7 +182,7 @@ main(int argc, char *argv[]) {
} else {
/* believe the user */
if (inodes > 512)
- fatal(_("too many inodes - max is 512"));
+ errx(EXIT_FAILURE, _("too many inodes - max is 512"));
}
ino_bytes = inodes * sizeof(struct bfsi);
@@ -208,7 +191,7 @@ main(int argc, char *argv[]) {
/* mimic the behaviour of SCO's mkfs - maybe this limit is needed */
if (data_blocks < 32)
- fatal(_("not enough space, need at least %llu blocks"),
+ errx(EXIT_FAILURE, _("not enough space, need at least %llu blocks"),
ino_blocks + 33);
memset(&sb, 0, sizeof(sb));
@@ -236,7 +219,7 @@ main(int argc, char *argv[]) {
}
if (write(fd, &sb, sizeof(sb)) != sizeof(sb))
- fatal(_("error writing superblock"));
+ errx(EXIT_FAILURE, _("error writing superblock"));
memset(&ri, 0, sizeof(ri));
ri.i_ino = BFS_ROOT_INO;
@@ -256,30 +239,28 @@ main(int argc, char *argv[]) {
ri.i_ctime = now;
if (write(fd, &ri, sizeof(ri)) != sizeof(ri))
- fatal(_("error writing root inode"));
+ errx(EXIT_FAILURE, _("error writing root inode"));
memset(&ri, 0, sizeof(ri));
for (i=1; i<inodes; i++)
if (write(fd, &ri, sizeof(ri)) != sizeof(ri))
- fatal(_("error writing inode"));
+ errx(EXIT_FAILURE, _("error writing inode"));
if (lseek(fd, (1 + ino_blocks)*BFS_BLOCKSIZE, SEEK_SET) == -1)
- fatal(_("seek error"));
+ errx(EXIT_FAILURE, _("seek error"));
memset(&de, 0, sizeof(de));
de.d_ino = BFS_ROOT_INO;
memcpy(de.d_name, ".", 1);
if (write(fd, &de, sizeof(de)) != sizeof(de))
- fatal(_("error writing . entry"));
+ errx(EXIT_FAILURE, _("error writing . entry"));
memcpy(de.d_name, "..", 2);
if (write(fd, &de, sizeof(de)) != sizeof(de))
- fatal(_("error writing .. entry"));
+ errx(EXIT_FAILURE, _("error writing .. entry"));
- if (close(fd) == -1) {
- perror(device);
- fatal(_("error closing %s"), device);
- }
+ if (close(fd) == -1)
+ err(EXIT_FAILURE, _("error closing %s"), device);
- return 0;
+ return EXIT_SUCCESS;
}