#include #include #include char *str_replace(char *inchar, char *outchar, char *instring) { char inchars[501]= "" ; char outchars[501] = ""; char sbuffer[501]; char *pos = instring, *apos; if (strlen(inchar) >= 1) { if (*(inchar + strlen(inchar) - 1) == '"' && *inchar == '"') { strcpy(inchars, (inchar + 1)); *(inchars + strlen(inchars) - 1) = 0; } else if (*(inchar + strlen(inchar) - 1) == 39 && *inchar == 39) { strcpy(inchars, (inchar + 1)); *(inchars + strlen(inchars) - 1) = 0; } else { strcpy(inchars, inchar); } if (*(outchar + strlen(outchar) - 1) == '"' && *outchar == '"') { strcpy(outchars, (outchar + 1)); *(outchars + strlen(outchars) - 1) = 0; } else if (*(outchar + strlen(outchar) - 1) == 39 && *outchar == 39) { strcpy(outchars, (outchar + 1)); *(outchars + strlen(outchars) - 1) = 0; } else { strcpy(outchars, outchar); } if (strlen(inchars) >= 1) { while ((apos = strstr(pos, inchars))) { *apos = 0; sprintf(sbuffer, "%s%s%s", instring, outchars, (apos + strlen(inchars))); strcpy(instring, sbuffer); pos = apos; pos++; } } } return instring; } int main(int argc, char *argv[]) { FILE *ourfp, *outfp, *vourfp; char buffer[1001], *rbuffer, from[501] = "", to[501] = "", outf[501] = ""; char arg[501] = "",argv1[501] = "",argv2[501] = "",argv3[501] = "",argv4[501] = "",argv5[501] = ""; if (argc > 1) { strcpy(argv1, argv[1]); if (argc >= 3) strcpy(argv2, argv[2]); if (argc >= 4) strcpy(argv3, argv[3]); if (argc >= 5) strcpy(argv4, argv[4]); if (argc >= 6) strcpy(argv5, argv[5]); if (strlen(argv1)) { ourfp = fopen(argv1, "r"); if (ourfp) { while ((rbuffer = fgets(buffer, 1000, ourfp))) { if (strlen(argv2) && strlen(argv3)) { if (!strcmp(argv2, "-n") && strlen(argv2) == 2) { strcpy(from, argv[3]); strcpy(to, argv[4]); } else if (!strcmp(argv2, "-w") && strlen(argv2) == 2) { strcpy(outf, "y"); outfp = fopen(argv1, "w"); strcpy(from, argv[4]); strcpy(to, argv[5]); } else if (!strcmp(argv2, "-a") && strlen(argv2) == 2) { strcpy(outf, "y"); outfp = fopen(argv1, "a"); strcpy(from, argv[4]); strcpy(to, argv[5]); } else if (strlen(from) == 0) { strcpy(from, argv[2]); strcpy(to, argv[3]); } if (strlen(outf) > 0) { fprintf(outfp, "%s", str_replace(from, to, buffer)); } else { printf(str_replace(from, to, buffer)); } } else { printf("%s", buffer); } } if (strlen(outf) > 0) fclose(outfp); fclose(ourfp); } else { strcpy(arg, argv1); strcpy(arg, str_replace("?", "", arg)); strcpy(arg, str_replace("*", "", arg)); if (strlen(arg) == strlen(argv1)) printf("%s does not exist.", argv1); } } } return 0; }