int main( int argc, char **argv ) /*******************************/ { FILE *fp; char drive[ _MAX_DRIVE ]; char dir[ _MAX_DIR ]; char fname[ _MAX_FNAME ]; char ext[ _MAX_EXT ]; char file[ _MAX_PATH ]; char *fn; int i; bool list_file; FILE *fh; bool is_intel; OutputInit(); OutputSetFH( stdout ); Descriptions = FALSE; InterpretComent = TRUE; TranslateIndex = FALSE; list_file = FALSE; is_intel = FALSE; quiet = FALSE; for( i = 1; i < argc; ++i ) { if( argv[i][0] == '-' ) { switch( tolower( argv[i][1] ) ) { case 'l': list_file = TRUE; break; case 'd': Descriptions = TRUE; break; case 'c': InterpretComent = FALSE; break; case 'r': if( strnicmp( argv[i] + 1, "rec=", 4 ) == 0 ) { if( rec_count < 10 ) { if( isdigit( argv[i][5] ) ) { rec_type[ rec_count++ ] = atoi( argv[i] + 5 ); } else { rec_type[ rec_count++ ] = RecNameToNumber( argv[i] + 5 ); } } else { Output( "Maximum 10 record type allowed." CRLF ); OutputFini(); } } else { DumpRaw = TRUE; } break; case 'i': is_intel = FALSE; break; case 'q': quiet = TRUE; break; case 't': TranslateIndex = TRUE; break; default: usage(); } } else { break; } } if( i == argc ) { usage(); } ShowProductInfo(); for( ; i < argc; ++i ) { _splitpath( argv[i], drive, dir, fname, ext ); if( ext[0] == 0 ) { _makepath( file, drive, dir, fname, OBJSUFFIX ); fn = file; } else { fn = argv[i]; } fp = fopen( fn, "rb" ); if( fp == NULL ) { Output( "Cannot open '%s' for reading" CRLF, fn ); leave( 20 ); } if( list_file ) { _makepath( file, drive, dir, fname, LSTSUFFIX ); fh = fopen( file, "w" ); if( fh == NULL ) { Output( "Cannot open '%s' for writing" CRLF, file ); leave( 20 ); } OutputSetFH( fh ); } ProcFile( fp, is_intel ); fclose( fp ); OutputSetFH( stdout ); /* does fclose() if necessary */ } leave( 0 ); return( 0 ); // for the less intelligent compilers }
int main(int ac, char *av[]) { int c; struct timeval tp; #ifdef DEBUG char *optstr = "A:ab:def:G:ghikOpt:U:uwx:z"; #else /* DEBUG */ char *optstr = "A:ab:ef:G:ghikOpt:U:uwx:"; #endif /* DEBUG */ Program = av[0]; gettimeofday(&tp, NULL); Now = tp.tv_sec; while ((c = getopt(ac, av, optstr)) != EOF) { switch (c) { case 'A': /* arg (admin set) */ OptFlags |= OPTA; ProcAdminArg(optarg); break; case 'a': OptFlags |= OPTa; AddRecord(SAM_QUOTA_ADMIN, -1); break; case 'b': /* arg (block count) */ OptFlags |= OPTb; ProcBlockArg(optarg); break; #ifdef DEBUG case 'd': OptFlags |= OPTd; dflag++; break; #endif /* DEBUG */ case 'e': OptFlags |= OPTe; eflag++; pflag++; break; case 'f': /* arg (file count) */ OptFlags |= OPTf; ProcFileArg(optarg); break; case 'G': /* arg (group ID) */ OptFlags |= OPTG; ProcGroupArg(optarg); break; case 'g': OptFlags |= OPTg; AddRecord(SAM_QUOTA_GROUP, getegid()); break; case 'h': /* help. No return */ Help(0); break; case 'i': OptFlags |= OPTi; iflag = INIT_LIMITS_ZERO; break; case 'k': OptFlags |= OPTk; kflag++; break; case 'O': /* Don't print total counts */ OptFlags |= OPTO; tflag = 0; break; case 'p': OptFlags |= OPTp; pflag++; break; case 't': /* arg (grace period) */ OptFlags |= OPTt; ProcTimeArg(optarg); break; case 'U': /* arg (user ID) */ OptFlags |= OPTU; ProcUserArg(optarg); break; case 'u': OptFlags |= OPTu; AddRecord(SAM_QUOTA_USER, geteuid()); break; case 'w': OptFlags |= OPTw; wflag = 0; break; case 'x': /* arg (expiry) */ OptFlags |= OPTx; ProcExpireArg(optarg); break; #ifdef DEBUG case 'z': OptFlags |= OPTz; iflag = INIT_ALL_ZERO; break; #endif /* DEBUG */ default: Help(1); } } for (; optind < ac; optind++) { ProcFile(av[optind]); } /* * Check options for validity. */ #define TWOBITS(a, b, c) ((a & (b | c)) == (b | c)) if (OptFlags & OPTMASK_Set) { if (NFiles == 0 || (OptFlags & (OPTa | OPTg | OPTu))) { fprintf(stderr, "%s: The options require a file.\n", Program); Help(1); } } else { /* just reporting */ } if (TWOBITS(OptFlags, OPTa, OPTA) || TWOBITS(OptFlags, OPTg, OPTG) || TWOBITS(OptFlags, OPTu, OPTU)) { fprintf(stderr, "%s: Incorrect option usage.\n", Program); Help(1); } if (!Err) ProcessFiles(); return (Err ? 10 : 0); }