#include #include char fin[], fon[]; void parsefiles(argc, argv, iex, oex, parm) int argc; char **argv; char *iex; char *oex; int *parm; { register char *p; register char *q; char *d; int file2; if (argc < 2 || argc > 4 || (parm == 0 && argc > 3)) { if (parm == 0) { fprintf(stderr, "Usage: %s2%s []\n", iex, oex); } else { fprintf(stderr, "Usage: %s2%s [] [, default %d]\n", iex, oex, *parm); } exit(1); } d = 0; q = fin; for (p = argv[1]; *p; p++) { *q++ = *p; if (*p == '.') d = q; else if (*p == '\\') d = 0; } if (d == 0) { *q++ = '.'; d = q; for (p = iex; *p; p++) *q++ = *p; } *q++ = 0; file2 = 0; if (argc > 2) { if (parm) { int v = 0; for (q = argv[argc-1]; *q; q++) { if (*q >= '0' && *q <= '9') { v = 10*v + *q - '0'; } else { if (argc == 3) { file2 = 1; goto getfile; } else { fprintf(stderr, "Invalid number\n"); exit(1); } } } *parm = v; if (argc > 3) { file2 = 1; } } else { file2 = 1; } } getfile: q = fon; if (!file2) { for (p = fin; p < d; p++) *q++ = *p; for (p = oex; *p; p++) *q++ = *p; *q++ = 0; } else { d = 0; for (p = argv[2]; *p; p++) { *q++ = *p; if (*p == '.') d = q; else if (*p == '\\') d = 0; } if (d == 0) { *q++ = '.'; d = q; for (p = oex; *p; p++) *q++ = *p; } *q++ = 0; } }