diff options
author | Erik Andersen <andersen@codepoet.org> | 2000-02-10 07:31:15 +0000 |
---|---|---|
committer | Erik Andersen <andersen@codepoet.org> | 2000-02-10 07:31:15 +0000 |
commit | 4d0543138ebb30aad55ba8083ea362eafb0aac33 (patch) | |
tree | 97c6724691dcbc940e410350b9f75d120d9f6d8b | |
parent | fb1793f03cbc51885678ee1ce9d0e81bd0e246f7 (diff) | |
download | busybox-w32-4d0543138ebb30aad55ba8083ea362eafb0aac33.tar.gz busybox-w32-4d0543138ebb30aad55ba8083ea362eafb0aac33.tar.bz2 busybox-w32-4d0543138ebb30aad55ba8083ea362eafb0aac33.zip |
More minor touchups.
-Erik
-rw-r--r-- | Changelog | 4 | ||||
-rw-r--r-- | editors/sed.c | 250 | ||||
-rw-r--r-- | find.c | 8 | ||||
-rw-r--r-- | findutils/find.c | 8 | ||||
-rw-r--r-- | sed.c | 250 |
5 files changed, 258 insertions, 262 deletions
@@ -86,6 +86,10 @@ | |||
86 | - added "skip" and "seek" to dd. | 86 | - added "skip" and "seek" to dd. |
87 | * swapoff -a was not working. Now it is. | 87 | * swapoff -a was not working. Now it is. |
88 | * init did not cleanly unmount filesystems on reboot. Now it does. | 88 | * init did not cleanly unmount filesystems on reboot. Now it does. |
89 | * "sed -ne s/foo/bar/" worked but "sed -n -e s/foo/bar/" didn't. | ||
90 | Now both work. | ||
91 | * Some architectures (PowerPc) assume chars are unsigned, so they could | ||
92 | not distinguish between EOF and '\0xFF' in sed. Sed now uses ints. | ||
89 | 93 | ||
90 | 94 | ||
91 | -Erik Andersen | 95 | -Erik Andersen |
diff --git a/editors/sed.c b/editors/sed.c index 3a7737e2f..608f86813 100644 --- a/editors/sed.c +++ b/editors/sed.c | |||
@@ -82,7 +82,7 @@ static inline int at_last(FILE * fp) | |||
82 | if (feof(fp)) | 82 | if (feof(fp)) |
83 | return 1; | 83 | return 1; |
84 | else { | 84 | else { |
85 | char ch; | 85 | int ch; |
86 | 86 | ||
87 | if ((ch = fgetc(fp)) == EOF) | 87 | if ((ch = fgetc(fp)) == EOF) |
88 | res++; | 88 | res++; |
@@ -183,129 +183,131 @@ extern int sed_main(int argc, char **argv) | |||
183 | usage(sed_usage); | 183 | usage(sed_usage); |
184 | } | 184 | } |
185 | 185 | ||
186 | if (**argv == '-') { | 186 | while (argc > 1) { |
187 | argc--; | 187 | if (**argv == '-') { |
188 | cp = *argv++; | 188 | argc--; |
189 | stopNow = FALSE; | 189 | cp = *argv++; |
190 | 190 | stopNow = FALSE; | |
191 | while (*++cp && stopNow == FALSE) { | 191 | |
192 | switch (*cp) { | 192 | while (*++cp && stopNow == FALSE) { |
193 | case 'n': | 193 | switch (*cp) { |
194 | quietFlag = TRUE; | 194 | case 'n': |
195 | break; | 195 | quietFlag = TRUE; |
196 | case 'e': | 196 | break; |
197 | if (*(cp + 1) == 0 && --argc < 0) { | 197 | case 'e': |
198 | usage(sed_usage); | 198 | if (*(cp + 1) == 0 && --argc < 0) { |
199 | } | 199 | usage(sed_usage); |
200 | if (*++cp != 's') | 200 | } |
201 | cp = *argv++; | 201 | if (*++cp != 's') |
202 | 202 | cp = *argv++; | |
203 | /* Read address if present */ | 203 | |
204 | SKIPSPACES(cp); | 204 | /* Read address if present */ |
205 | if (*cp == '$') { | 205 | SKIPSPACES(cp); |
206 | addr_line = LAST_LINE; | 206 | if (*cp == '$') { |
207 | cp++; | 207 | addr_line = LAST_LINE; |
208 | } else { | 208 | cp++; |
209 | if (isdigit(*cp)) { /* LINE ADDRESS */ | 209 | } else { |
210 | line_s = cp; | 210 | if (isdigit(*cp)) { /* LINE ADDRESS */ |
211 | while (isdigit(*cp)) | 211 | line_s = cp; |
212 | cp++; | 212 | while (isdigit(*cp)) |
213 | if (cp > line_s) { | 213 | cp++; |
214 | /* numeric line */ | 214 | if (cp > line_s) { |
215 | saved = *cp; | 215 | /* numeric line */ |
216 | *cp = '\0'; | 216 | saved = *cp; |
217 | addr_line = atoi(line_s); | 217 | *cp = '\0'; |
218 | *cp = saved; | 218 | addr_line = atoi(line_s); |
219 | } | 219 | *cp = saved; |
220 | } else if (*cp == '/') { /* PATTERN ADDRESS */ | 220 | } |
221 | pos = addr_pattern = cp + 1; | 221 | } else if (*cp == '/') { /* PATTERN ADDRESS */ |
222 | pos = strchr(pos, '/'); | 222 | pos = addr_pattern = cp + 1; |
223 | if (!pos) | 223 | pos = strchr(pos, '/'); |
224 | usage(sed_usage); | 224 | if (!pos) |
225 | *pos = '\0'; | 225 | usage(sed_usage); |
226 | cp = pos + 1; | 226 | *pos = '\0'; |
227 | } | 227 | cp = pos + 1; |
228 | } | 228 | } |
229 | 229 | } | |
230 | SKIPSPACES(cp); | 230 | |
231 | if (*cp == '!') { | 231 | SKIPSPACES(cp); |
232 | negated++; | 232 | if (*cp == '!') { |
233 | cp++; | 233 | negated++; |
234 | } | 234 | cp++; |
235 | 235 | } | |
236 | /* Read command */ | 236 | |
237 | 237 | /* Read command */ | |
238 | SKIPSPACES(cp); | 238 | |
239 | switch (*cp) { | 239 | SKIPSPACES(cp); |
240 | case 's': /* REPLACE */ | 240 | switch (*cp) { |
241 | if (strlen(cp) <= 3 || *(cp + 1) != '/') | 241 | case 's': /* REPLACE */ |
242 | break; | 242 | if (strlen(cp) <= 3 || *(cp + 1) != '/') |
243 | sed_f = f_replace; | 243 | break; |
244 | 244 | sed_f = f_replace; | |
245 | pos = needle = cp + 2; | 245 | |
246 | 246 | pos = needle = cp + 2; | |
247 | for (;;) { | 247 | |
248 | pos = strchr(pos, '/'); | 248 | for (;;) { |
249 | if (pos == NULL) { | 249 | pos = strchr(pos, '/'); |
250 | usage(sed_usage); | 250 | if (pos == NULL) { |
251 | } | 251 | usage(sed_usage); |
252 | if (*(pos - 1) == '\\') { | 252 | } |
253 | pos++; | 253 | if (*(pos - 1) == '\\') { |
254 | continue; | 254 | pos++; |
255 | } | 255 | continue; |
256 | break; | 256 | } |
257 | } | 257 | break; |
258 | *pos = 0; | 258 | } |
259 | newNeedle = ++pos; | 259 | *pos = 0; |
260 | for (;;) { | 260 | newNeedle = ++pos; |
261 | pos = strchr(pos, '/'); | 261 | for (;;) { |
262 | if (pos == NULL) { | 262 | pos = strchr(pos, '/'); |
263 | usage(sed_usage); | 263 | if (pos == NULL) { |
264 | } | 264 | usage(sed_usage); |
265 | if (*(pos - 1) == '\\') { | 265 | } |
266 | pos++; | 266 | if (*(pos - 1) == '\\') { |
267 | continue; | 267 | pos++; |
268 | } | 268 | continue; |
269 | break; | 269 | } |
270 | } | 270 | break; |
271 | *pos = 0; | 271 | } |
272 | if (pos + 2 != 0) { | 272 | *pos = 0; |
273 | while (*++pos) { | 273 | if (pos + 2 != 0) { |
274 | switch (*pos) { | 274 | while (*++pos) { |
275 | case 'i': | 275 | switch (*pos) { |
276 | ignoreCase = TRUE; | 276 | case 'i': |
277 | break; | 277 | ignoreCase = TRUE; |
278 | case 'p': | 278 | break; |
279 | printFlag = TRUE; | 279 | case 'p': |
280 | break; | 280 | printFlag = TRUE; |
281 | case 'g': | 281 | break; |
282 | break; | 282 | case 'g': |
283 | default: | 283 | break; |
284 | usage(sed_usage); | 284 | default: |
285 | } | 285 | usage(sed_usage); |
286 | } | 286 | } |
287 | } | 287 | } |
288 | cp = pos; | 288 | } |
289 | /* fprintf(stderr, "replace '%s' with '%s'\n", needle, newNeedle); */ | 289 | cp = pos; |
290 | break; | 290 | /* fprintf(stderr, "replace '%s' with '%s'\n", needle, newNeedle); */ |
291 | 291 | break; | |
292 | case 'a': /* APPEND */ | 292 | |
293 | if (strlen(cp) < 2) | 293 | case 'a': /* APPEND */ |
294 | break; | 294 | if (strlen(cp) < 2) |
295 | sed_f = f_append; | 295 | break; |
296 | appendline = ++cp; | 296 | sed_f = f_append; |
297 | /* fprintf(stderr, "append '%s'\n", appendline); */ | 297 | appendline = ++cp; |
298 | break; | 298 | /* fprintf(stderr, "append '%s'\n", appendline); */ |
299 | } | 299 | break; |
300 | 300 | } | |
301 | stopNow = TRUE; | 301 | |
302 | break; | 302 | stopNow = TRUE; |
303 | 303 | break; | |
304 | default: | 304 | |
305 | usage(sed_usage); | 305 | default: |
306 | } | 306 | usage(sed_usage); |
307 | } | 307 | } |
308 | } | 308 | } |
309 | } | ||
310 | } | ||
309 | 311 | ||
310 | if (argc == 0) { | 312 | if (argc == 0) { |
311 | switch (sed_f) { | 313 | switch (sed_f) { |
@@ -39,13 +39,7 @@ static const char find_usage[] = "find [PATH...] [EXPRESSION]\n\n" | |||
39 | "\nEXPRESSION may consist of:\n" | 39 | "\nEXPRESSION may consist of:\n" |
40 | "\t-follow\n\t\tDereference symbolic links.\n" | 40 | "\t-follow\n\t\tDereference symbolic links.\n" |
41 | "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" | 41 | "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" |
42 | "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n\n" | 42 | "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n"; |
43 | #if defined BB_REGEXP | ||
44 | "This version of find matches full regular expresions.\n"; | ||
45 | #else | ||
46 | "This version of find matches strings (not regular expresions).\n"; | ||
47 | #endif | ||
48 | |||
49 | 43 | ||
50 | 44 | ||
51 | static int fileAction(const char *fileName, struct stat *statbuf) | 45 | static int fileAction(const char *fileName, struct stat *statbuf) |
diff --git a/findutils/find.c b/findutils/find.c index 6346d454f..2c1039b53 100644 --- a/findutils/find.c +++ b/findutils/find.c | |||
@@ -39,13 +39,7 @@ static const char find_usage[] = "find [PATH...] [EXPRESSION]\n\n" | |||
39 | "\nEXPRESSION may consist of:\n" | 39 | "\nEXPRESSION may consist of:\n" |
40 | "\t-follow\n\t\tDereference symbolic links.\n" | 40 | "\t-follow\n\t\tDereference symbolic links.\n" |
41 | "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" | 41 | "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" |
42 | "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n\n" | 42 | "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n"; |
43 | #if defined BB_REGEXP | ||
44 | "This version of find matches full regular expresions.\n"; | ||
45 | #else | ||
46 | "This version of find matches strings (not regular expresions).\n"; | ||
47 | #endif | ||
48 | |||
49 | 43 | ||
50 | 44 | ||
51 | static int fileAction(const char *fileName, struct stat *statbuf) | 45 | static int fileAction(const char *fileName, struct stat *statbuf) |
@@ -82,7 +82,7 @@ static inline int at_last(FILE * fp) | |||
82 | if (feof(fp)) | 82 | if (feof(fp)) |
83 | return 1; | 83 | return 1; |
84 | else { | 84 | else { |
85 | char ch; | 85 | int ch; |
86 | 86 | ||
87 | if ((ch = fgetc(fp)) == EOF) | 87 | if ((ch = fgetc(fp)) == EOF) |
88 | res++; | 88 | res++; |
@@ -183,129 +183,131 @@ extern int sed_main(int argc, char **argv) | |||
183 | usage(sed_usage); | 183 | usage(sed_usage); |
184 | } | 184 | } |
185 | 185 | ||
186 | if (**argv == '-') { | 186 | while (argc > 1) { |
187 | argc--; | 187 | if (**argv == '-') { |
188 | cp = *argv++; | 188 | argc--; |
189 | stopNow = FALSE; | 189 | cp = *argv++; |
190 | 190 | stopNow = FALSE; | |
191 | while (*++cp && stopNow == FALSE) { | 191 | |
192 | switch (*cp) { | 192 | while (*++cp && stopNow == FALSE) { |
193 | case 'n': | 193 | switch (*cp) { |
194 | quietFlag = TRUE; | 194 | case 'n': |
195 | break; | 195 | quietFlag = TRUE; |
196 | case 'e': | 196 | break; |
197 | if (*(cp + 1) == 0 && --argc < 0) { | 197 | case 'e': |
198 | usage(sed_usage); | 198 | if (*(cp + 1) == 0 && --argc < 0) { |
199 | } | 199 | usage(sed_usage); |
200 | if (*++cp != 's') | 200 | } |
201 | cp = *argv++; | 201 | if (*++cp != 's') |
202 | 202 | cp = *argv++; | |
203 | /* Read address if present */ | 203 | |
204 | SKIPSPACES(cp); | 204 | /* Read address if present */ |
205 | if (*cp == '$') { | 205 | SKIPSPACES(cp); |
206 | addr_line = LAST_LINE; | 206 | if (*cp == '$') { |
207 | cp++; | 207 | addr_line = LAST_LINE; |
208 | } else { | 208 | cp++; |
209 | if (isdigit(*cp)) { /* LINE ADDRESS */ | 209 | } else { |
210 | line_s = cp; | 210 | if (isdigit(*cp)) { /* LINE ADDRESS */ |
211 | while (isdigit(*cp)) | 211 | line_s = cp; |
212 | cp++; | 212 | while (isdigit(*cp)) |
213 | if (cp > line_s) { | 213 | cp++; |
214 | /* numeric line */ | 214 | if (cp > line_s) { |
215 | saved = *cp; | 215 | /* numeric line */ |
216 | *cp = '\0'; | 216 | saved = *cp; |
217 | addr_line = atoi(line_s); | 217 | *cp = '\0'; |
218 | *cp = saved; | 218 | addr_line = atoi(line_s); |
219 | } | 219 | *cp = saved; |
220 | } else if (*cp == '/') { /* PATTERN ADDRESS */ | 220 | } |
221 | pos = addr_pattern = cp + 1; | 221 | } else if (*cp == '/') { /* PATTERN ADDRESS */ |
222 | pos = strchr(pos, '/'); | 222 | pos = addr_pattern = cp + 1; |
223 | if (!pos) | 223 | pos = strchr(pos, '/'); |
224 | usage(sed_usage); | 224 | if (!pos) |
225 | *pos = '\0'; | 225 | usage(sed_usage); |
226 | cp = pos + 1; | 226 | *pos = '\0'; |
227 | } | 227 | cp = pos + 1; |
228 | } | 228 | } |
229 | 229 | } | |
230 | SKIPSPACES(cp); | 230 | |
231 | if (*cp == '!') { | 231 | SKIPSPACES(cp); |
232 | negated++; | 232 | if (*cp == '!') { |
233 | cp++; | 233 | negated++; |
234 | } | 234 | cp++; |
235 | 235 | } | |
236 | /* Read command */ | 236 | |
237 | 237 | /* Read command */ | |
238 | SKIPSPACES(cp); | 238 | |
239 | switch (*cp) { | 239 | SKIPSPACES(cp); |
240 | case 's': /* REPLACE */ | 240 | switch (*cp) { |
241 | if (strlen(cp) <= 3 || *(cp + 1) != '/') | 241 | case 's': /* REPLACE */ |
242 | break; | 242 | if (strlen(cp) <= 3 || *(cp + 1) != '/') |
243 | sed_f = f_replace; | 243 | break; |
244 | 244 | sed_f = f_replace; | |
245 | pos = needle = cp + 2; | 245 | |
246 | 246 | pos = needle = cp + 2; | |
247 | for (;;) { | 247 | |
248 | pos = strchr(pos, '/'); | 248 | for (;;) { |
249 | if (pos == NULL) { | 249 | pos = strchr(pos, '/'); |
250 | usage(sed_usage); | 250 | if (pos == NULL) { |
251 | } | 251 | usage(sed_usage); |
252 | if (*(pos - 1) == '\\') { | 252 | } |
253 | pos++; | 253 | if (*(pos - 1) == '\\') { |
254 | continue; | 254 | pos++; |
255 | } | 255 | continue; |
256 | break; | 256 | } |
257 | } | 257 | break; |
258 | *pos = 0; | 258 | } |
259 | newNeedle = ++pos; | 259 | *pos = 0; |
260 | for (;;) { | 260 | newNeedle = ++pos; |
261 | pos = strchr(pos, '/'); | 261 | for (;;) { |
262 | if (pos == NULL) { | 262 | pos = strchr(pos, '/'); |
263 | usage(sed_usage); | 263 | if (pos == NULL) { |
264 | } | 264 | usage(sed_usage); |
265 | if (*(pos - 1) == '\\') { | 265 | } |
266 | pos++; | 266 | if (*(pos - 1) == '\\') { |
267 | continue; | 267 | pos++; |
268 | } | 268 | continue; |
269 | break; | 269 | } |
270 | } | 270 | break; |
271 | *pos = 0; | 271 | } |
272 | if (pos + 2 != 0) { | 272 | *pos = 0; |
273 | while (*++pos) { | 273 | if (pos + 2 != 0) { |
274 | switch (*pos) { | 274 | while (*++pos) { |
275 | case 'i': | 275 | switch (*pos) { |
276 | ignoreCase = TRUE; | 276 | case 'i': |
277 | break; | 277 | ignoreCase = TRUE; |
278 | case 'p': | 278 | break; |
279 | printFlag = TRUE; | 279 | case 'p': |
280 | break; | 280 | printFlag = TRUE; |
281 | case 'g': | 281 | break; |
282 | break; | 282 | case 'g': |
283 | default: | 283 | break; |
284 | usage(sed_usage); | 284 | default: |
285 | } | 285 | usage(sed_usage); |
286 | } | 286 | } |
287 | } | 287 | } |
288 | cp = pos; | 288 | } |
289 | /* fprintf(stderr, "replace '%s' with '%s'\n", needle, newNeedle); */ | 289 | cp = pos; |
290 | break; | 290 | /* fprintf(stderr, "replace '%s' with '%s'\n", needle, newNeedle); */ |
291 | 291 | break; | |
292 | case 'a': /* APPEND */ | 292 | |
293 | if (strlen(cp) < 2) | 293 | case 'a': /* APPEND */ |
294 | break; | 294 | if (strlen(cp) < 2) |
295 | sed_f = f_append; | 295 | break; |
296 | appendline = ++cp; | 296 | sed_f = f_append; |
297 | /* fprintf(stderr, "append '%s'\n", appendline); */ | 297 | appendline = ++cp; |
298 | break; | 298 | /* fprintf(stderr, "append '%s'\n", appendline); */ |
299 | } | 299 | break; |
300 | 300 | } | |
301 | stopNow = TRUE; | 301 | |
302 | break; | 302 | stopNow = TRUE; |
303 | 303 | break; | |
304 | default: | 304 | |
305 | usage(sed_usage); | 305 | default: |
306 | } | 306 | usage(sed_usage); |
307 | } | 307 | } |
308 | } | 308 | } |
309 | } | ||
310 | } | ||
309 | 311 | ||
310 | if (argc == 0) { | 312 | if (argc == 0) { |
311 | switch (sed_f) { | 313 | switch (sed_f) { |