aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Whitley <markw@lineo.com>2000-12-05 19:27:13 +0000
committerMark Whitley <markw@lineo.com>2000-12-05 19:27:13 +0000
commitcf61fe14aebf2b5f753261afdb9e03167b31a843 (patch)
treea92c9df4e2fc08bd7f1b3798214a30cbd50a2e52
parentd27753afd983ffeae45b80dee92f02d0518ca7bf (diff)
downloadbusybox-w32-cf61fe14aebf2b5f753261afdb9e03167b31a843.tar.gz
busybox-w32-cf61fe14aebf2b5f753261afdb9e03167b31a843.tar.bz2
busybox-w32-cf61fe14aebf2b5f753261afdb9e03167b31a843.zip
Applied patch from Matt Kraai to add v*error functions for handling vararg
lists in a safe 'n sane fashion.
-rw-r--r--utility.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/utility.c b/utility.c
index 7c41ab8fb..eb3338302 100644
--- a/utility.c
+++ b/utility.c
@@ -84,36 +84,35 @@ extern void usage(const char *usage)
84 exit(EXIT_FAILURE); 84 exit(EXIT_FAILURE);
85} 85}
86 86
87extern void errorMsg(const char *s, ...) 87static void verrorMsg(const char *s, va_list p)
88{ 88{
89 va_list p;
90
91 va_start(p, s);
92 fflush(stdout); 89 fflush(stdout);
93 fprintf(stderr, "%s: ", applet_name); 90 fprintf(stderr, "%s: ", applet_name);
94 vfprintf(stderr, s, p); 91 vfprintf(stderr, s, p);
95 va_end(p);
96 fflush(stderr); 92 fflush(stderr);
97} 93}
98 94
99extern void fatalError(const char *s, ...) 95extern void errorMsg(const char *s, ...)
100{ 96{
101 va_list p; 97 va_list p;
102 98
103 va_start(p, s); 99 va_start(p, s);
104 fflush(stdout); 100 verrorMsg(s, p);
105 fprintf(stderr, "%s: ", applet_name);
106 vfprintf(stderr, s, p);
107 va_end(p); 101 va_end(p);
108 fflush(stderr);
109 exit(EXIT_FAILURE);
110} 102}
111 103
112extern void perrorMsg(const char *s, ...) 104extern void fatalError(const char *s, ...)
113{ 105{
114 va_list p; 106 va_list p;
115 107
116 va_start(p, s); 108 va_start(p, s);
109 verrorMsg(s, p);
110 va_end(p);
111 exit(EXIT_FAILURE);
112}
113
114static void vperrorMsg(const char *s, va_list p)
115{
117 fflush(stdout); 116 fflush(stdout);
118 fprintf(stderr, "%s: ", applet_name); 117 fprintf(stderr, "%s: ", applet_name);
119 if (s && *s) { 118 if (s && *s) {
@@ -121,24 +120,25 @@ extern void perrorMsg(const char *s, ...)
121 fputs(": ", stderr); 120 fputs(": ", stderr);
122 } 121 }
123 fprintf(stderr, "%s\n", strerror(errno)); 122 fprintf(stderr, "%s\n", strerror(errno));
124 va_end(p);
125 fflush(stderr); 123 fflush(stderr);
126} 124}
127 125
126extern void perrorMsg(const char *s, ...)
127{
128 va_list p;
129
130 va_start(p, s);
131 vperrorMsg(s, p);
132 va_end(p);
133}
134
128extern void fatalPerror(const char *s, ...) 135extern void fatalPerror(const char *s, ...)
129{ 136{
130 va_list p; 137 va_list p;
131 138
132 va_start(p, s); 139 va_start(p, s);
133 fflush(stdout); 140 vperrorMsg(s, p);
134 fprintf(stderr, "%s: ", applet_name);
135 if (s && *s) {
136 vfprintf(stderr, s, p);
137 fputs(": ", stderr);
138 }
139 fprintf(stderr, "%s\n", strerror(errno));
140 va_end(p); 141 va_end(p);
141 fflush(stderr);
142 exit(EXIT_FAILURE); 142 exit(EXIT_FAILURE);
143} 143}
144 144