int main(int argc, char *argv[]) { // Declare variables //char buf[1]; /* int i; struct pstat *userpstat; // Allocate memory for the pstat table userpstat = malloc(sizeof(struct pstat)); // Fire a system call to populate the pstat table if(getpinfo(userpstat) != 0) { printf(1, "Error: system call to getpinfo failed\n"); return 1; } */ // Check if turning on or off if(strcmp(argv[1], "off") != 0) { pstats(1); } else { pstats(0); } /* // Display the header row for(i = 0; i < 64; i ++) { if(userpstat->inuse[i] == 1) { printf(1, "%d (%s),", userpstat->pid[i], userpstat->pname[i]); } } */ // All done! exit(); }
int main (int argc, char *argv[]) { char *version_string = "Algebraic Preprocessor (Aprepro)"; int c; time_t time_val; struct tm *time_structure; char *asc_time = NULL; char *include_file = NULL; #define NO_ARG 0 #define IS_ARG 1 #define OP_ARG 2 static struct option long_options[] = { {"debug", NO_ARG, 0, 'd'}, {"statistics", NO_ARG, 0, 's'}, {"copyright", NO_ARG, 0, 'C'}, {"comment", IS_ARG, 0, 'c'}, {"version", NO_ARG, 0, 'v'}, {"interactive", NO_ARG, 0, 'i'}, {"include", IS_ARG, 0, 'I'}, {"exit_on", NO_ARG, 0, 'e'}, {"help", NO_ARG, 0, 'h'}, {"nowarning", NO_ARG, 0, 'W'}, {"messages", NO_ARG, 0, 'M'}, {"quiet", NO_ARG, 0, 'q'}, {"immutable", NO_ARG, 0, 'X'}, {"one_based_index", NO_ARG, 0, '1'}, {NULL, NO_ARG, NULL, 0} }; int option_index = 0; extern int optind; extern char *optarg; myname = strrchr (argv[0], '/'); if (myname == NULL) myname = argv[0]; else myname++; /* Process command line options */ initialize_options(&ap_options); ap_options.end_on_exit = False; while ((c = getopt_long (argc, argv, "c:dDsSvViI:eEwWmMhHCqX1", long_options, &option_index)) != EOF) { switch (c) { case 'c': NEWSTR(optarg, ap_options.comment); break; case 'd': case 'D': ap_options.debugging = True; ap_options.info_msg = True; ap_options.warning_msg = True; break; case 's': case 'S': /* Print hash statistics */ ap_options.statistics = True; break; case 'C': /* Print copyright message */ ap_options.copyright = True; break; case 'v': case 'V': fprintf (stderr, "%s: (%s) %s\n", version_string, qainfo[2], qainfo[1]); break; case 'i': ap_options.interactive = True; break; case 'I': /* * Check whether optarg specifies a file or a directory * If a file, it is an include file, * If a directory, it is an include_path */ if (is_directory(optarg)) { NEWSTR(optarg, ap_options.include_path); } else { NEWSTR(optarg, include_file); } break; case 'e': case 'E': ap_options.end_on_exit = True; break; case 'W': ap_options.warning_msg = False; break; case 'q': ap_options.quiet = True; break; case 'M': ap_options.info_msg = True; break; case 'X': ap_options.immutable = True; break; case '1': ap_options.one_based_index = True; break; case 'h': case 'H': usage(); exit(EXIT_SUCCESS); break; case '?': default: /* getopt will print a message for us */ usage (); exit(EXIT_FAILURE); break; } } /* Process remaining options. If '=' in word, then it is of the form * var=value. Set the value. If '=' not found, process remaining * options as input and output files */ while (optind < argc && strchr(argv[optind], '=') && !strchr(argv[optind], '/')) { char *var, *val; double value; symrec *s; var = argv[optind++]; val = strchr (var, '='); if (val == NULL) { fprintf(stderr, "ERROR: '%s' is not a valid form for assiging a variable; it will not be defined\n", var); } else { *val++ = '\0'; if (!check_valid_var(var)) { fprintf(stderr, "ERROR: '%s' is not a valid form for a variable; it will not be defined\n", var); } else { if (strchr(val, '"') != NULL) { /* Should be a string variable */ char *pt = strrchr(val, '"'); if (pt != NULL) { val++; *pt = '\0'; if (var[0] == '_') s = putsym(var, SVAR, 0); else s = putsym(var, IMMSVAR, 0); NEWSTR(val, s->value.svar); } else { fprintf(stderr, "ERROR: Missing trailing \" in definition of variable '%s'; it will not be defined\n", var); } } else { int err = sscanf (val, "%lf", &value); if (err <= 0) { fprintf(stderr, "ERROR: Could not parse value in assignment of variable '%s'; it will not be defined\n", var); } else { if (var[0] == '_') s = putsym (var, VAR, 0); else s = putsym (var, IMMVAR, 0); s->value.var = value; } } } } } if (ap_options.copyright == True) copyright_output(); /* Assume stdin, recopy if and when it is changed */ yyin = stdin; yyout = stdout; if (argc > optind) { add_input_file(argv[optind]); } else { NEWSTR ("stdin", ap_file_list[nfile].name); SET_FILE_LIST (nfile, 0, False, 1); } if (argc > ++optind) { yyout = open_file(argv[optind], "w"); } else { /* Writing to stdout */ if (ap_options.interactive) setbuf (yyout, (char *) NULL); } state_immutable = ap_options.immutable; time_val = time ((time_t*)NULL); time_structure = localtime (&time_val); asc_time = asctime (time_structure); /* NOTE: asc_time includes \n at end of string */ if (!ap_options.quiet) { if (state_immutable) { fprintf (yyout, "%s Aprepro (%s) [immutable mode] %s", ap_options.comment, qainfo[2], asc_time); } else { fprintf (yyout, "%s Aprepro (%s) %s", ap_options.comment, qainfo[2], asc_time); } } if (include_file) { nfile++; add_input_file(include_file); /* Include file specified on command line is processed in immutable * state. Reverts back to global immutable state at end of file. */ state_immutable = True; echo = False; } srand((unsigned)time_val); init_table (ap_options.comment); yyparse (); if (ap_options.debugging > 0) dumpsym (VAR, 0); if (ap_options.statistics > 0) pstats (); add_to_log(myname, 0); return (EXIT_SUCCESS); } /* NOTREACHED */