while((c = getopt(argc, argv, "n:c:p:"))) { switch(c) { case 'n': topn = atoi(optarg); if(topn < 1) topn = 10; break; case 'c': code = atoi(optarg); if(code < 0 || code > 15) usage(argv[0]); break; case 'p': pn++; break; default: usage(argv[0]); break; } } if((optind == argc) || (argc - optind > 2)) usage(argv[0]); { names = (char **)malloc(sizeof(char *) * (pn + 1)); pn = 0; getoptreset(); while((c = getopt(argc, argv, "n:c:p:"))) { if(c == 'p') names[pn++] = optarg; } names[pn] = NULL; } av = argv + optind; fp = fopen(av[0], "r"); if (fp == 0) { fprintf(stderr, "Couldn't open file %s for read", av[0]); perror(""); exit(1); } if (fstat(fileno(fp), &fstats) < 0) { fprintf(stderr, "Couldn't fstat file %s", av[0]); perror(""); exit(1); }