You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
674 B
C
33 lines
674 B
C
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
int main(int argc, char **argv) {
|
|
char buf[512];
|
|
while(fgets(buf, sizeof(buf), stdin)) {
|
|
char *from = buf;
|
|
char *to = strchr(buf, '\t');
|
|
if(!to) continue;
|
|
*to = 0;
|
|
to++;
|
|
|
|
char *end = strchr(to, '\n');
|
|
if(end) *end = 0;
|
|
|
|
printf("s/");
|
|
for(unsigned char *c = from; *c; c++) {
|
|
if(*c > 127) printf("\\x%02x", *c);
|
|
else if(strchr("$.*[\\^/", *c)) printf("\\%c", *c);
|
|
else printf("%c", *c);
|
|
}
|
|
printf("/");
|
|
for(unsigned char *c = to; *c; c++) {
|
|
if(strchr("/", *c)) printf("\\%c", *c);
|
|
else if(strchr("'", *c)) printf("',$%02x,'", *c);
|
|
else printf("%c", *c);
|
|
}
|
|
printf("/g\n");
|
|
}
|
|
|
|
return 0;
|
|
}
|