#include "traceaction.h" struct Arguments { int action_index; int executable_index; } Args; void parseArguments(int argc, char **argv) { int option_index=0; char **origargv = argv; char c; static struct option long_options[] = { {0,0,0,0} }; while (1) { c = getopt_long(argc, argv, "hv", long_options, &option_index); if (c==-1) break; switch (c) { default: usage(); fprintf(stderr, "UNKNOWN return from getopt\n"); exit(0); } } if (optind == argc) { usage(); exit(0); } Args.action_index = 1; Args.executable_index = optind; fprintf(stderr, "action=%s executable=%s\n", origargv[Args.action_index], origargv[Args.executable_index]); if (optind < argc) { fprintf(stderr, "executable arguments:\n"); while (optind]\n"); } FILE * openTrace(char *basename) { char ext[]=".trc"; int n=strlen(basename); char *path=malloc(n+strlen(ext)+1); FILE *f; strcpy(path,basename); strcpy(&path[n],ext); f=fopen(path, "w+"); if (f==NULL) perror(path); return f; }