void give_version_extended_perl(void) { give_version(); fprintf(stdout, "Characteristics of this binary:\n"); fprintf(stdout, " Perl Version : %s (%s)\n", AC_perl_vers, AC_perl_prog); fprintf(stdout, " Perl I/O Layer : %s\n", PERL_IO_LAYER_ID); fprintf(stdout, " Perl Library : %s/CORE/libperl.a\n", AC_perl_archlib); fprintf(stdout, " Perl DynaLoader : %s\n", AC_perl_dla); fprintf(stdout, " System Libs : %s\n", AC_perl_libs); fprintf(stdout, " Built User : %s\n", AC_build_user); fprintf(stdout, " Built Time : %s\n", AC_build_time_iso); fprintf(stdout, "\n"); }
int main(int argc, char **argv) { int fpStdout; int fpStdin; char *cp; char c; int pos = -1; char *progname; int nBuf, p; char ca[1024]; char *title = ""; char *name = "iSelect"; int stripco = FALSE; int stripws = FALSE; int resultline = FALSE; int keyresultline = FALSE; int browsealways = FALSE; int allselectable = FALSE; int multiselect = FALSE; int exitnoselect = FALSE; int i; char *keystr; char *abortstr = NULL; char *tagbegin = "<"; char *tagend = ">"; /* * argument handling */ /* canonicalize program name */ if ((cp = strrchr(argv[0], '/')) != NULL) progname = cp+1; else progname = argv[0]; argv[0] = progname; /* parse the option arguments */ opterr = 0; while ((c = getopt_long(argc, argv, "d:cfaep:k:mn:t:SPKQ:Vh", options, NULL)) != (char)(-1)) { if (optarg == NULL) optarg = "(null)"; switch (c) { case 'd': tagbegin = strdup(optarg); if ((cp = strchr(tagbegin, ',')) == NULL) { fprintf(stderr, "iSelect: bad argument to option '%c'\n", optopt); fprintf(stderr, "Try `%s --help' for more information.\n", progname); exit(EX_USAGE); } *cp++ = NUL; tagend = cp; break; case 'c': stripco = TRUE; break; case 'f': browsealways = TRUE; break; case 'a': allselectable = TRUE; break; case 'e': exitnoselect = TRUE; break; case 'p': pos = atoi(optarg); break; case 'k': configure_custom_key(optarg); break; case 'm': multiselect = TRUE; break; case 'n': name = strdup(optarg); break; case 't': title = strdup(optarg); break; case 'S': stripws = TRUE; break; case 'P': resultline = TRUE; break; case 'K': keyresultline = TRUE; break; case 'Q': abortstr = strdup(optarg); break; case 'V': give_version(progname); exit(EX_OK); case 'h': give_usage(progname); exit(EX_OK); case '?': fprintf(stderr, "iSelect: invalid option: '%c'\n", optopt); fprintf(stderr, "Try `%s --help' for more information.\n", progname); exit(EX_USAGE); case ':': fprintf(stderr, "iSelect: missing argument to option '%c'\n", optopt); fprintf(stderr, "Try `%s --help' for more information.\n", progname); exit(EX_USAGE); } } /* * read input */ if (optind < argc) { /* browsing text is given as arguments */ nBuf = 0; for (; optind < argc; ++optind) { cp = (argv[optind] == NULL ? "" : argv[optind]); sprintf(caBuf+nBuf, "%s\n", cp); nBuf += strlen(cp)+1; } caBuf[nBuf++] = NUL; } else if (optind == argc && !feof(stdin)) { /* browsing text is given on stdin */ nBuf = 0; while ((c = fgetc(stdin)) != (char)(EOF)) { caBuf[nBuf++] = c; } caBuf[nBuf++] = NUL; /* save stdin filehandle and reconnect it to tty */ fpStdin = dup(0); close(0); open("/dev/tty", O_RDONLY); } else { give_usage(progname); exit(EX_USAGE); } /* * preserve stdout filehandle for result string, i.e. * use the terminal directly for output */ fpStdout = dup(1); close(1); open("/dev/tty", O_RDWR); pos = (pos < 1 ? 1 : pos); p = iSelect(caBuf, pos-1, title, name, tagbegin, tagend, stripco, stripws, browsealways, allselectable, multiselect, exitnoselect, &keystr); /* * give back the result string to the user via * the stdout file handle */ if (p != -1) { for (i = 0; i < nLines; i++) { if (spaLines[i]->fSelected) { if (resultline) { sprintf(ca, "%d:", i+1); write(fpStdout, ca, strlen(ca)); } if (keyresultline) { sprintf(ca, "%s:", keystr); write(fpStdout, ca, strlen(ca)); } write(fpStdout, spaLines[i]->cpResult, strlen(spaLines[i]->cpResult)); sprintf(ca, "\n"); write(fpStdout, ca, strlen(ca)); } } } else { if (abortstr != NULL) write(fpStdout, abortstr, strlen(abortstr)); } exit(0); }