diff options
author | Mark Whitley <markw@lineo.com> | 2000-12-05 19:27:13 +0000 |
---|---|---|
committer | Mark Whitley <markw@lineo.com> | 2000-12-05 19:27:13 +0000 |
commit | cf61fe14aebf2b5f753261afdb9e03167b31a843 (patch) | |
tree | a92c9df4e2fc08bd7f1b3798214a30cbd50a2e52 | |
parent | d27753afd983ffeae45b80dee92f02d0518ca7bf (diff) | |
download | busybox-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.c | 42 |
1 files changed, 21 insertions, 21 deletions
@@ -84,36 +84,35 @@ extern void usage(const char *usage) | |||
84 | exit(EXIT_FAILURE); | 84 | exit(EXIT_FAILURE); |
85 | } | 85 | } |
86 | 86 | ||
87 | extern void errorMsg(const char *s, ...) | 87 | static 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 | ||
99 | extern void fatalError(const char *s, ...) | 95 | extern 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 | ||
112 | extern void perrorMsg(const char *s, ...) | 104 | extern 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 | |||
114 | static 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 | ||
126 | extern 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 | |||
128 | extern void fatalPerror(const char *s, ...) | 135 | extern 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 | ||