msed: replace while loops with c string functions

pull/239/head
Sekulum Forka 1 year ago
parent 63739502ac
commit e8eacb1957

@ -114,24 +114,19 @@ sed(char *file)
if (!v)
continue;
v++;
while (*v && (*v == ' ' || *v == '\t'))
v++;
v += strspn(v, " \t");
v = strdup(v);
char *e = expr;
while (*e) {
while (*e &&
(*e == ' ' || *e == '\t' || *e == '\n' || *e == ';'))
e++;
*headersel = 0;
e += strspn(e, " \t\n;");
if (*e == '/') {
e++;
char *s = e;
// parse_headers, sets headersel
while (*e && *e != '/')
e++;
e = strchr(e, '/');
snprintf(headersel, sizeof headersel,
"^(%.*s)*:", (int)(e-s), s);
for (s = headersel; *s && *(s+1); s++)
@ -167,8 +162,7 @@ sed(char *file)
fprintf(stderr, "msed: unterminated a command\n");
exit(1);
}
while (*e && *e != sep)
e++;
e = strchr(e, sep);
if (*e == sep)
e++;
if (!(*e == ' ' || *e == ';' || *e == '\n' || !*e)) {
@ -179,22 +173,18 @@ sed(char *file)
case 'c':
sep = *++e;
s = ++e;
while (*e && *e != sep)
e++;
e = strchr(e, sep);
free(v);
v = strndup(s, e-s);
break;
case 's':
sep = *++e;
s = ++e;
while (*e && *e != sep)
e++;
e = strchr(e, sep);
char *t = ++e;
while (*e && *e != sep)
e++;
e = strchr(e, sep);
char *u = ++e;
while (*e == 'd' || *e == 'g' || *e == 'i')
e++;
e += strspn(e, "dgi");
if (!(*e == ' ' || *e == ';' || *e == '\n' || !*e)) {
fprintf(stderr, "msed: unterminated s command\n");
@ -226,8 +216,7 @@ sed(char *file)
exit(1);
}
}
while (*e && *e != ';' && *e != '\n')
e++;
e += strcspn(e, ";\n");
}
if (v) {
printhdr(h, 0);
@ -241,17 +230,14 @@ sed(char *file)
char *hs, *he;
char *e = expr;
while (*e) {
while (*e &&
(*e == ' ' || *e == '\t' || *e == '\n' || *e == ';'))
e++;
e += strspn(e, " \t\n;");
hs = he = 0;
if (*e == '/') {
e++;
hs = e;
// parse_headers, sets headersel
while (*e && *e != '/')
e++;
e = strchr(e, '/');
he = e;
if (*e)
e++;
@ -281,8 +267,7 @@ sed(char *file)
exit(1);
}
s = ++e;
while (*e && *e != sep)
e++;
e = strchr(e, sep);
v = strndup(s, e-s);
}
@ -305,8 +290,7 @@ sed(char *file)
// ignore here;
break;
}
while (*e && *e != ';' && *e != '\n')
e++;
e += strcspn(e, ";\n");
}
printf("\n");

Loading…
Cancel
Save