summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/awk.c2
-rw-r--r--editors/sed.c167
-rw-r--r--miscutils/dc.c6
-rw-r--r--modutils/modprobe.c12
-rw-r--r--networking/ifupdown.c9
-rw-r--r--networking/wget.c2
-rw-r--r--shell/bbsh.c2
-rw-r--r--util-linux/mount.c3
8 files changed, 98 insertions, 105 deletions
diff --git a/editors/awk.c b/editors/awk.c
index e91c376..b776dd7 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -1470,7 +1470,7 @@ static int awk_split(char *s, node *spl, char **slist)
}
} else { /* space split */
while (*s) {
- while (isspace(*s)) s++;
+ s = skip_whitespace(s);
if (! *s) break;
n++;
while (*s && !isspace(*s))
diff --git a/editors/sed.c b/editors/sed.c
index 30f35ce..e261415 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -63,29 +63,29 @@
/* Each sed command turns into one of these structures. */
typedef struct sed_cmd_s {
- /* Ordered by alignment requirements: currently 36 bytes on x86 */
+ /* Ordered by alignment requirements: currently 36 bytes on x86 */
- /* address storage */
- regex_t *beg_match; /* sed -e '/match/cmd' */
- regex_t *end_match; /* sed -e '/match/,/end_match/cmd' */
- regex_t *sub_match; /* For 's/sub_match/string/' */
- int beg_line; /* 'sed 1p' 0 == apply commands to all lines */
- int end_line; /* 'sed 1,3p' 0 == one line only. -1 = last line ($) */
+ /* address storage */
+ regex_t *beg_match; /* sed -e '/match/cmd' */
+ regex_t *end_match; /* sed -e '/match/,/end_match/cmd' */
+ regex_t *sub_match; /* For 's/sub_match/string/' */
+ int beg_line; /* 'sed 1p' 0 == apply commands to all lines */
+ int end_line; /* 'sed 1,3p' 0 == one line only. -1 = last line ($) */
- FILE *file; /* File (sw) command writes to, -1 for none. */
- char *string; /* Data string for (saicytb) commands. */
+ FILE *file; /* File (sw) command writes to, -1 for none. */
+ char *string; /* Data string for (saicytb) commands. */
- unsigned short which_match; /* (s) Which match to replace (0 for all) */
+ unsigned short which_match; /* (s) Which match to replace (0 for all) */
- /* Bitfields (gcc won't group them if we don't) */
- unsigned int invert:1; /* the '!' after the address */
- unsigned int in_match:1; /* Next line also included in match? */
- unsigned int no_newline:1; /* Last line written by (sw) had no '\n' */
- unsigned int sub_p:1; /* (s) print option */
+ /* Bitfields (gcc won't group them if we don't) */
+ unsigned int invert:1; /* the '!' after the address */
+ unsigned int in_match:1; /* Next line also included in match? */
+ unsigned int no_newline:1; /* Last line written by (sw) had no '\n' */
+ unsigned int sub_p:1; /* (s) print option */
- /* GENERAL FIELDS */
- char cmd; /* The command char: abcdDgGhHilnNpPqrstwxy:={} */
- struct sed_cmd_s *next; /* Next command (linked list, NULL terminated) */
+ /* GENERAL FIELDS */
+ char cmd; /* The command char: abcdDgGhHilnNpPqrstwxy:={} */
+ struct sed_cmd_s *next; /* Next command (linked list, NULL terminated) */
} sed_cmd_t;
static const char *const semicolon_whitespace = "; \n\r\t\v";
@@ -162,7 +162,7 @@ void sed_free_and_close_stuff(void)
static void cleanup_outname(void)
{
- if(bbg.outname) unlink(bbg.outname);
+ if(bbg.outname) unlink(bbg.outname);
}
/* strdup, replacing "\n" with '\n', and "\delimiter" with 'delimiter' */
@@ -343,36 +343,36 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, char *substr)
if(isspace(substr[idx])) continue;
switch (substr[idx]) {
- /* Replace all occurrences */
- case 'g':
- if (match[0] != '^') sed_cmd->which_match = 0;
- break;
- /* Print pattern space */
- case 'p':
- sed_cmd->sub_p = 1;
- break;
- /* Write to file */
- case 'w':
- {
- char *temp;
- idx+=parse_file_cmd(sed_cmd,substr+idx,&temp);
+ /* Replace all occurrences */
+ case 'g':
+ if (match[0] != '^') sed_cmd->which_match = 0;
+ break;
+ /* Print pattern space */
+ case 'p':
+ sed_cmd->sub_p = 1;
+ break;
+ /* Write to file */
+ case 'w':
+ {
+ char *temp;
+ idx+=parse_file_cmd(sed_cmd,substr+idx,&temp);
- break;
- }
- /* Ignore case (gnu exension) */
- case 'I':
- cflags |= REG_ICASE;
- break;
- /* Comment */
- case '#':
- while(substr[++idx]);
- /* Fall through */
- /* End of command */
- case ';':
- case '}':
- goto out;
- default:
- bb_error_msg_and_die("bad option in substitution expression");
+ break;
+ }
+ /* Ignore case (gnu exension) */
+ case 'I':
+ cflags |= REG_ICASE;
+ break;
+ /* Comment */
+ case '#':
+ while(substr[++idx]);
+ /* Fall through */
+ /* End of command */
+ case ';':
+ case '}':
+ goto out;
+ default:
+ bb_error_msg_and_die("bad option in substitution expression");
}
}
out:
@@ -420,7 +420,7 @@ static char *parse_cmd_args(sed_cmd_t *sed_cmd, char *cmdstr)
} else if (strchr(":btT", sed_cmd->cmd)) {
int length;
- while(isspace(*cmdstr)) cmdstr++;
+ cmdstr = skip_whitespace(cmdstr);
length = strcspn(cmdstr, semicolon_whitespace);
if (length) {
sed_cmd->string = xstrndup(cmdstr, length);
@@ -517,7 +517,7 @@ static void add_cmd(char *cmdstr)
}
/* skip whitespace before the command */
- while (isspace(*cmdstr)) cmdstr++;
+ cmdstr = skip_whitespace(cmdstr);
/* Check for inversion flag */
if (*cmdstr == '!') {
@@ -525,7 +525,7 @@ static void add_cmd(char *cmdstr)
cmdstr++;
/* skip whitespace before the command */
- while (isspace(*cmdstr)) cmdstr++;
+ cmdstr = skip_whitespace(cmdstr);
}
/* last part (mandatory) will be a command */
@@ -724,7 +724,7 @@ static int puts_maybe_newline(char *s, FILE *file, int missing_newline, int no_n
fputs(s,file);
if(!no_newline) fputc('\n',file);
- if(ferror(file)) {
+ if(ferror(file)) {
xfunc_error_retval = 4; /* It's what gnu sed exits with... */
bb_error_msg_and_die(bb_msg_write_error);
}
@@ -1167,40 +1167,43 @@ int sed_main(int argc, char **argv)
FILE *file;
for (i = optind; i < argc; i++) {
+ struct stat statbuf;
+ int nonstdoutfd;
+
if(!strcmp(argv[i], "-") && !bbg.in_place) {
add_input_file(stdin);
process_files();
- } else {
- file = bb_wfopen(argv[i], "r");
- if (file) {
- if(bbg.in_place) {
- struct stat statbuf;
- int nonstdoutfd;
-
- bbg.outname=xstrndup(argv[i],strlen(argv[i])+6);
- strcat(bbg.outname,"XXXXXX");
- if(-1==(nonstdoutfd=mkstemp(bbg.outname)))
- bb_error_msg_and_die("no temp file");
- bbg.nonstdout=fdopen(nonstdoutfd,"w");
-
- /* Set permissions of output file */
-
- fstat(fileno(file),&statbuf);
- fchmod(nonstdoutfd,statbuf.st_mode);
- add_input_file(file);
- process_files();
- fclose(bbg.nonstdout);
-
- bbg.nonstdout=stdout;
- unlink(argv[i]);
- rename(bbg.outname,argv[i]);
- free(bbg.outname);
- bbg.outname=0;
- } else add_input_file(file);
- } else {
- status = EXIT_FAILURE;
- }
+ continue;
}
+ file = bb_wfopen(argv[i], "r");
+ if (!file) {
+ status = EXIT_FAILURE;
+ continue;
+ }
+ if(!bbg.in_place) {
+ add_input_file(file);
+ continue;
+ }
+
+ bbg.outname=xstrndup(argv[i],strlen(argv[i])+6);
+ strcat(bbg.outname,"XXXXXX");
+ if(-1==(nonstdoutfd=mkstemp(bbg.outname)))
+ bb_error_msg_and_die("no temp file");
+ bbg.nonstdout=fdopen(nonstdoutfd,"w");
+
+ /* Set permissions of output file */
+
+ fstat(fileno(file),&statbuf);
+ fchmod(nonstdoutfd,statbuf.st_mode);
+ add_input_file(file);
+ process_files();
+ fclose(bbg.nonstdout);
+
+ bbg.nonstdout=stdout;
+ unlink(argv[i]);
+ rename(bbg.outname,argv[i]);
+ free(bbg.outname);
+ bbg.outname=0;
}
if(bbg.input_file_count>bbg.current_input_file) process_files();
}
diff --git a/miscutils/dc.c b/miscutils/dc.c
index fd53901..7b64057 100644
--- a/miscutils/dc.c
+++ b/miscutils/dc.c
@@ -179,10 +179,10 @@ static void stack_machine(const char *argument)
*/
static char *get_token(char **buffer)
{
- char *start = NULL;
- char *current = *buffer;
+ char *start = NULL;
+ char *current;
- while (isspace(*current)) { current++; }
+ current = skip_whitespace(*buffer);
if (*current != 0) {
start = current;
while (!isspace(*current) && *current != 0) { current++; }
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index ba24791..5d62ae5 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -76,15 +76,13 @@ static int parse_tag_value ( char *buffer, char **ptag, char **pvalue )
{
char *tag, *value;
- while ( isspace ( *buffer ))
- buffer++;
+ buffer = skip_whitespace ( buffer );
tag = value = buffer;
while ( !isspace ( *value ))
if (!*value) return 0;
else value++;
*value++ = 0;
- while ( isspace ( *value ))
- value++;
+ value = skip_whitespace ( value );
if (!*value) return 0;
*ptag = tag;
@@ -311,11 +309,9 @@ static void include_conf ( struct dep_t **first, struct dep_t **current, char *b
}
}
else if (( strncmp ( buffer, "include", 7 ) == 0 ) && isspace ( buffer [7] )) {
+ int fdi; char *filename;
- int fdi; char *filename = buffer + 8;
-
- while ( isspace ( *filename ))
- filename++;
+ filename = skip_whitespace ( buffer + 8 );
if (( fdi = open ( filename, O_RDONLY )) >= 0 ) {
include_conf(first, current, buffer, buflen, fdi);
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 45407f9..ede2f89 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -572,10 +572,7 @@ static char *next_word(char **buf)
}
/* Skip over leading whitespace */
- word = *buf;
- while (isspace(*word)) {
- ++word;
- }
+ word = skip_whitespace(*buf);
/* Skip over comments */
if (*word == '#') {
@@ -712,9 +709,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
}
/* ship any trailing whitespace */
- while (isspace(*buf_ptr)) {
- ++buf_ptr;
- }
+ buf_ptr = skip_whitespace(buf_ptr);
if (buf_ptr[0] != '\0') {
bb_error_msg("too many parameters \"%s\"", buf);
diff --git a/networking/wget.c b/networking/wget.c
index a0d3e15..090b58d 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -302,7 +302,7 @@ int wget_main(int argc, char **argv)
s = buf;
while (*s != '\0' && !isspace(*s)) ++s;
- while (isspace(*s)) ++s;
+ s = skip_whitespace(s);
// FIXME: no error check
// xatou wouldn't work: "200 OK"
status = atoi(s);
diff --git a/shell/bbsh.c b/shell/bbsh.c
index 77e186d..791983a 100644
--- a/shell/bbsh.c
+++ b/shell/bbsh.c
@@ -119,7 +119,7 @@ static char *parse_pipeline(char *cmdline, struct pipeline *line)
char *end;
// Skip leading whitespace and detect end of line.
- while (isspace(*start)) start++;
+ start = skip_whitespace(start);
if (!*start || *start=='#') {
if (ENABLE_BBSH_JOBCTL) line->cmdlinelen = start-cmdline;
return 0;
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 5ced48f..2c5e231 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -203,8 +203,7 @@ static llist_t *get_block_backed_filesystems(void)
while ((buf = xmalloc_getline(f)) != 0) {
if (!strncmp(buf, "nodev", 5) && isspace(buf[5]))
continue;
- fs = buf;
- while (isspace(*fs)) fs++;
+ fs = skip_whitespace(buf);
if (*fs=='#' || *fs=='*' || !*fs) continue;
llist_add_to_end(&list, xstrdup(fs));