bool JarFile::open() { if ((fd = ::open(_filename, O_RDONLY)) < 0) { fprintf(stderr, "open failed.\n"); return false; } if (!init_inflation()) return false; return true; }
int main(int argc, char **argv) { int c; int retval = 0; int fileindex; int options = 0; regex_t *regexp; regex_t *nl_exp = NULL; char *regexpstr = NULL; while((c = getopt(argc, argv, "bce:insVw")) != -1) { switch(c) { case 'b': options |= JG_PRINT_BYTEOFFSET; break; case 'c': options |= JG_PRINT_COUNT; break; case 'e': if(!(regexpstr = (char *) malloc(strlen(optarg) + 1))) { fprintf(stderr, "Malloc failure.\n"); fprintf(stderr, "Error: %s\n", strerror(errno)); exit(1); } strcpy(regexpstr, optarg); break; case 'i': options |= JG_IGNORE_CASE; break; case 'n': options |= JG_PRINT_LINE_NUMBER; break; case 's': options |= JG_SUPRESS_ERROR; break; case 'v': options |= JG_INVERT; break; case 'V': printf("%s\n", GVERSION); exit(0); case 'w': options |= JG_WORD_EXPRESSIONS; break; default: fprintf(stderr, "Unknown option -%c\n", c); fprintf(stderr, Usage, argv[0]); exit(1); } } if(!regexpstr){ if(((argc - optind) >= 2)) { regexpstr = argv[optind]; fileindex = optind + 1; } else { fprintf(stderr, "Invalid arguments.\n"); fprintf(stderr, Usage, argv[0]); exit(1); } } else if((argc - optind) == 1) { fileindex = optind; } else { fprintf(stderr, "Invalid arguments.\n"); fprintf(stderr, Usage, argv[0]); exit(1); } if(opt_valid(options)) { regexp = create_regexp(regexpstr, options); if(options & JG_PRINT_LINE_NUMBER) nl_exp = create_regexp("\n", 0); init_inflation(); for(; fileindex < argc; fileindex++) jargrep(regexp, nl_exp, argv[fileindex], options); regfree(regexp); if(options & JG_PRINT_LINE_NUMBER) regfree(nl_exp); } else { retval = 1; fprintf(stderr, "Error: Invalid combination of options.\n"); } return retval; }