int main(int argc, char *argv[]) { int c, fflag; setprogname(*argv); fflag = 0; while ((c = getopt(argc, argv, "ae:f:nE")) != -1) switch (c) { case 'a': aflag = 1; break; case 'e': eflag = 1; add_compunit(CU_STRING, optarg); break; case 'f': fflag = 1; add_compunit(CU_FILE, optarg); break; case 'n': nflag = 1; break; case 'E': ere = REG_EXTENDED; break; default: case '?': (void)fprintf(stderr, "usage:\t%s [-aEn] script [file ...]\n\t%s [-aEn] [-e script] ... [-f script_file] ... [file ...]\n", getprogname(), getprogname()); exit(1); } argc -= optind; argv += optind; /* First usage case; script is the first arg */ if (!eflag && !fflag && *argv) { add_compunit(CU_STRING, *argv); argv++; } compile(); /* Continue with first and start second usage */ if (*argv) for (; *argv; argv++) add_file(*argv); else add_file(NULL); process(); cfclose(prog, NULL); if (fclose(stdout)) err(FATAL, "stdout: %s", strerror(errno)); exit (0); }
int main(int argc, char *argv[]) { int c, fflag; char *temp_arg; (void) setlocale(LC_ALL, ""); fflag = 0; inplace = NULL; while ((c = getopt(argc, argv, "EI:ae:f:i:lnru")) != -1) switch (c) { case 'r': /* Gnu sed compat */ case 'E': rflags = REG_EXTENDED; break; case 'I': inplace = optarg; ispan = 1; /* span across input files */ break; case 'a': aflag = 1; break; case 'e': eflag = 1; if ((temp_arg = malloc(strlen(optarg) + 2)) == NULL) err(1, "malloc"); strcpy(temp_arg, optarg); strcat(temp_arg, "\n"); add_compunit(CU_STRING, temp_arg); break; case 'f': fflag = 1; add_compunit(CU_FILE, optarg); break; case 'i': inplace = optarg; ispan = 0; /* don't span across input files */ break; case 'l': if(setvbuf(stdout, NULL, _IOLBF, 0) != 0) warnx("setting line buffered output failed"); break; case 'n': nflag = 1; break; case 'u': if(setvbuf(stdout, NULL, _IONBF, 0) != 0) warnx("setting unbuffered output failed"); break; default: case '?': usage(); } argc -= optind; argv += optind; /* First usage case; script is the first arg */ if (!eflag && !fflag && *argv) { add_compunit(CU_STRING, *argv); argv++; } compile(); /* Continue with first and start second usage */ if (*argv) for (; *argv; argv++) add_file(*argv); else add_file(NULL); process(); cfclose(prog, NULL); if (fclose(stdout)) err(1, "stdout"); exit(rval); }
int sed_main(int argc, char *argv[]) { int c, fflag; char *temp_arg; // init all flags: aflag = eflag = sed_nflag = rflags = 0; infile = NULL; outfile = NULL; fl_nextp = &files; if (files != NULL) { while (files != NULL) { struct s_flist *next = files->next; free(files); files = next; } } cu_nextp = &script; if (script != NULL) { while (script != NULL) { struct s_compunit *next = script->next; free(script); script = next; } } rval = 0; /* Exit status */ (void) setlocale(LC_ALL, ""); fflag = 0; inplace = NULL; while ((c = getopt(argc, argv, "Eae:f:i:ln")) != -1) switch (c) { case 'E': rflags = REG_EXTENDED; break; case 'a': aflag = 1; break; case 'e': eflag = 1; if ((temp_arg = malloc(strlen(optarg) + 2)) == NULL) fprintf(stderr, "sed: malloc: %s\n", strerror(errno)); // err(1, "malloc"); strcpy(temp_arg, optarg); strcat(temp_arg, "\n"); add_compunit(CU_STRING, temp_arg); break; case 'f': fflag = 1; add_compunit(CU_FILE, optarg); break; case 'i': inplace = optarg; break; case 'l': if(setlinebuf(stdout) != 0) fprintf(stderr, "sed: setlinebuf() failed\n"); // warnx("setlinebuf() failed"); break; case 'n': sed_nflag = 1; break; default: case '?': usage(); } argc -= optind; argv += optind; /* First usage case; script is the first arg */ if (!eflag && !fflag && *argv) { add_compunit(CU_STRING, *argv); argv++; } compile(); /* Continue with first and start second usage */ if (*argv) for (; *argv; argv++) add_file(*argv); else add_file(NULL); process(); cfclose(prog, NULL); // if (fclose(stdout)) // err(1, "stdout"); // exit(rval); if ((infile != NULL) && (infile != stdin)) fclose(infile); if ((outfile != NULL) && (outfile != stdout)) fclose(outfile); return 0; }
int main(int argc, char *argv[]) { int c, fflag; char *temp_arg; (void) setlocale(LC_ALL, ""); #ifndef TEXT_DOMAIN #define TEXT_DOMAIN "SYS_TEST" #endif (void) textdomain(TEXT_DOMAIN); fflag = 0; inplace = NULL; while ((c = getopt_long(argc, argv, "EI::ae:f:i::lnr", lopts, NULL)) != -1) switch (c) { case 'r': /* Gnu sed compat */ case 'E': rflags = REG_EXTENDED; break; case 'I': if (optarg != NULL) inplace = optarg; else inplace = ""; ispan = 1; /* span across input files */ break; case 'a': aflag = 1; break; case 'e': eflag = 1; if (asprintf(&temp_arg, "%s\n", optarg) < 1) err(1, "asprintf"); add_compunit(CU_STRING, temp_arg); break; case 'f': fflag = 1; add_compunit(CU_FILE, optarg); break; case 'i': if (optarg != NULL) inplace = optarg; else inplace = ""; ispan = 0; /* don't span across input files */ break; case 'l': /* On SunOS, setlinebuf "returns no useful value */ (void) setlinebuf(stdout); break; case 'n': nflag = 1; break; default: case '?': usage(); } argc -= optind; argv += optind; /* First usage case; script is the first arg */ if (!eflag && !fflag && *argv) { add_compunit(CU_STRING, *argv); argv++; } compile(); /* Continue with first and start second usage */ if (*argv) for (; *argv; argv++) add_file(*argv); else add_file(NULL); process(); cfclose(prog, NULL); if (fclose(stdout)) err(1, "stdout"); return (rval); }