aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--busybox.h1
-rw-r--r--coreutils/dd.c6
-rw-r--r--dd.c6
-rw-r--r--include/busybox.h1
-rw-r--r--utility.c17
5 files changed, 23 insertions, 8 deletions
diff --git a/busybox.h b/busybox.h
index 7f4d55f3d..e55f17cdd 100644
--- a/busybox.h
+++ b/busybox.h
@@ -345,6 +345,7 @@ extern const char *applet_name;
extern void usage(const char *usage) __attribute__ ((noreturn));
extern void errorMsg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
extern void fatalError(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
+extern void fatalPerror(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
const char *modeString(int mode);
const char *timeString(time_t timeVal);
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 1002c0771..6868a913e 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -116,8 +116,7 @@ extern int dd_main(int argc, char **argv)
* here anyways... */
/* free(buf); */
- perror(inFile);
- exit(FALSE);
+ fatalPerror("%s", inFile);
}
if (outFile == NULL)
@@ -132,8 +131,7 @@ extern int dd_main(int argc, char **argv)
/* close(inFd);
free(buf); */
- perror(outFile);
- exit(FALSE);
+ fatalPerror("%s", outFile);
}
lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
diff --git a/dd.c b/dd.c
index 1002c0771..6868a913e 100644
--- a/dd.c
+++ b/dd.c
@@ -116,8 +116,7 @@ extern int dd_main(int argc, char **argv)
* here anyways... */
/* free(buf); */
- perror(inFile);
- exit(FALSE);
+ fatalPerror("%s", inFile);
}
if (outFile == NULL)
@@ -132,8 +131,7 @@ extern int dd_main(int argc, char **argv)
/* close(inFd);
free(buf); */
- perror(outFile);
- exit(FALSE);
+ fatalPerror("%s", outFile);
}
lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
diff --git a/include/busybox.h b/include/busybox.h
index 7f4d55f3d..e55f17cdd 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -345,6 +345,7 @@ extern const char *applet_name;
extern void usage(const char *usage) __attribute__ ((noreturn));
extern void errorMsg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
extern void fatalError(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
+extern void fatalPerror(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
const char *modeString(int mode);
const char *timeString(time_t timeVal);
diff --git a/utility.c b/utility.c
index c8a1820d8..39ed1b66a 100644
--- a/utility.c
+++ b/utility.c
@@ -109,6 +109,23 @@ extern void fatalError(const char *s, ...)
exit(EXIT_FAILURE);
}
+extern void fatalPerror(const char *s, ...)
+{
+ va_list p;
+
+ va_start(p, s);
+ fflush(stdout);
+ fprintf(stderr, "%s: ", applet_name);
+ if (s && *s) {
+ vfprintf(stderr, s, p);
+ fputs(": ", stderr);
+ }
+ fprintf(stderr, "%s\n", strerror(errno));
+ va_end(p);
+ fflush(stderr);
+ exit(EXIT_FAILURE);
+}
+
#if defined BB_INIT
/* Returns kernel version encoded as major*65536 + minor*256 + patch,
* so, for example, to check if the kernel is greater than 2.2.11: