int main(int argc, char* argv[]){ TParseArg* args; char *output = NULL; int* res = NULL; FILE* file; // Creo el parseador de argumentos args = ParseArg_new(4); // Agrego los argumentos a parsear, si uso valores por defecto como NULL con tama~no 0, // estoy haciendo qe sean obligatorios los argumentos ParseArg_addArg(args, NULL, 'h', "help", NULL, 0); ParseArg_addArg(args, NULL, 'V', "version", NULL, 0); ParseArg_addArg(args, &parse_resolution, 'r', "resolution", NULL, 0); ParseArg_addArg(args, &ParseArg_parseStr, 'o', "output", NULL, 0); ParseArg_parse(args, argc, argv); if(ParseArg_getArg(args, 'h')){ usage(argv[0]); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'V')){ version(argv[0]); ParseArg_delete(args); return 0; } if(!(output = (char*) ParseArg_getArg(args, 'o'))){ ParseArg_delete(args); return 1; } if(output[0] == '-'){ file = stdout; }else{ file = fopen(output, "wb"); if(!file){ free(output); ParseArg_delete(args); return 1; } } if(!(res = (int*) ParseArg_getArg(args, 'r'))){ free(output); ParseArg_delete(args); return 1; } print_board(file, res[0], res[1]); if(file != stdout) fclose(file); free(res); free(output); ParseArg_delete(args); return 0; }
int main(int argc, char* argv[]){ if (argc < 1){ fprintf(stderr,"No se especifico ningun comando. Ingrese -h para mostrar la ayuda\n"); return 1; } TParseArg* args; char* file; int fd = 1; int i=0; int lines=0; int words=0; int bytes=0; int flagsPassed = 0; // Creo el parseador de argumentos args = ParseArg_new(5); // Agrego los argumentos a parsear, si uso valores por defecto como NULL con tama~no 0, // estoy haciendo qe sean obligatorios los argumentos ParseArg_addArg(args, NULL, 'V', "version", NULL, 0); ParseArg_addArg(args, NULL, 'h', "help", NULL, 0); ParseArg_addArg(args, NULL, 'w', "words", NULL, 0); ParseArg_addArg(args, NULL, 'l', "lines", NULL, 0); ParseArg_addArg(args, NULL, 'c', "bytes", NULL, 0); ParseArg_parse(args, argc, argv); //Si no tengo ninguno de los argumentos y tengo un -, entonces parametro invalido if( !(ParseArg_getArg(args,'V')) && !(ParseArg_getArg(args,'h')) && !(ParseArg_getArg(args,'w')) && !(ParseArg_getArg(args,'l')) && !(ParseArg_getArg(args,'c'))){ for ( i = 0 ; i < argc ; i++ ){ if (argv[i][0]=='-'){ fprintf(stderr,"Parametro invalido. Ingrese -h para mostrar la ayuda\n"); return 1; } } } if(ParseArg_getArg(args, 'h')){ flagsPassed++; usage(argv[0]); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'V')){ flagsPassed++; version(argv[0]); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'l')){ flagsPassed++; } if(ParseArg_getArg(args, 'w')){ flagsPassed++; } if(ParseArg_getArg(args, 'c')){ flagsPassed++; } //Si la diferencia entre argumentos y flags es mayor a 2 entonces //tengo mas de 1 archivo y los leo todos //if ( 1 + argc - flagsPassed >= 2 ){ int linesTotal = 0; int wordsTotal = 0; int bytesTotal = 0; if ( argc -1 == flagsPassed ){ fd = 0; file = ""; } // Supongo que los archivos siempre estan al final (dsp de los argumentos) // Loopeo por todos los archivos i = flagsPassed +1 ; while ( i < argc || fd == 0){ if (fd !=0){ file = argv[i]; fd = open(file,O_RDONLY); } wc(fd, &lines, &words ,&bytes); if(ParseArg_getArg(args, 'l')){ printf("%d \t ",lines); } if(ParseArg_getArg(args, 'w')){ printf("%d \t ",words); } if(ParseArg_getArg(args, 'c')){ printf("%d \t ",bytes); } //Por defecto ejecuta esta if (flagsPassed==0){ printf("%d \t %d \t%d \t",lines,words,bytes); } printf("%s \n",file); linesTotal = linesTotal + lines; wordsTotal = wordsTotal + words; bytesTotal = bytesTotal + bytes; i++; fd = 1; } //Imprime TOTAL cuando hay mas de 1 archivo if (argc - flagsPassed > 2){ if(ParseArg_getArg(args, 'l')){ printf("%d \t ",linesTotal); } if(ParseArg_getArg(args, 'w')){ printf("%d \t ",wordsTotal); } if(ParseArg_getArg(args, 'c')){ printf("%d \t ",bytesTotal); } if (flagsPassed==0){ printf("%d \t %d \t%d \t",linesTotal,wordsTotal,bytesTotal); } printf("total \n"); } ParseArg_delete(args); return 0; }
int main(int argc, char* argv[]){ if (argc < 2){ fprintf(stderr,"No se especifico ningun comando\n"); return 1; } TParseArg* args; char *output = NULL; char *input = NULL; int* res = NULL; FILE* inFile; FILE* outFile; // Creo el parseador de argumentos args = ParseArg_new(6); // Agrego los argumentos a parsear, si uso valores por defecto como NULL con tama~no 0, // estoy haciendo qe sean obligatorios los argumentos ParseArg_addArg(args, NULL, 'h', "help", NULL, 0); ParseArg_addArg(args, NULL, 'v', "version", NULL, 0); ParseArg_addArg(args, NULL, 'e', "encode", NULL, 0); ParseArg_addArg(args, NULL, 'd', "decode", NULL, 0); ParseArg_addArg(args, &ParseArg_parseStr, 'o', "output", NULL, 0); ParseArg_addArg(args, &ParseArg_parseStr, 'i', "input", NULL, 0); ParseArg_parse(args, argc, argv); if(ParseArg_getArg(args, 'h')){ usage(); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'v')){ version(argv[0]); ParseArg_delete(args); return 0; } input = (char*) ParseArg_getArg(args, 'i'); output = (char*) ParseArg_getArg(args, 'o'); if(input == NULL){ inFile = stdin; }else{ inFile = fopen(input, "r"); if(!inFile){ free(input); ParseArg_delete(args); return 1; } } if(output == NULL){ outFile = stdout; }else{ outFile = fopen(output, "wb"); if(!outFile){ free(output); ParseArg_delete(args); return 1; } } if(ParseArg_getArg(args, 'e')){ encode(inFile,outFile); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'd')){ decode(inFile,outFile); ParseArg_delete(args); return 0; } if( !(ParseArg_getArg(args,'e')) || !(ParseArg_getArg(args,'d')) || !(ParseArg_getArg(args,'h')) || !(ParseArg_getArg(args,'v'))){ perror("No se especifico un comando valido"); return 1; } if(outFile != stdout) fclose(outFile); if(inFile != stdin) fclose(inFile); free(res); free(output); free(input); ParseArg_delete(args); return 0; }
int main(int argc, char* argv[]){ TParseArg* args; char *output = NULL; int* res = NULL; int modo = 0; /* Creo el parseador de argumentos */ args = ParseArg_new(4); /* Agrego los argumentos a parsear, si uso valores por defecto como NULL con tama~no 0, */ /* estoy haciendo qe sean obligatorios los argumentos */ ParseArg_addArg(args, NULL, 'h', "help", NULL, 0); ParseArg_addArg(args, NULL, 'V', "version", NULL, 0); ParseArg_addArg(args, NULL, 'B', "bubble", NULL, 0); ParseArg_addArg(args, NULL, 'H', "heap", NULL, 0); ParseArg_parse(args, argc, argv); if (ParseArg_getArg(args, 'B')){ modo=BUBBLE; } if (ParseArg_getArg(args, 'H')){ modo=HEAP; } if (ParseArg_getArg(args, 'h')){ modo=HELP; } if (ParseArg_getArg(args, 'V')){ modo=VERSION; } if(modo == 0){ fprintf(stderr,"Vea la ayuda para ver como ejecutar el programa\n"); return 1; } if(ParseArg_getArg(args, 'h')){ usage(argv[0]); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'V')){ version(argv[0]); ParseArg_delete(args); return 0; } if (argc > 2){ int i; for ( i=2 ; i<argc ; i++) ordenarArchivo(argv[i],modo); }else if (argc == 2){ ordenarArchivo(NULL, modo); }else{ fprintf(stderr,"Vea la ayuda para ver como ejecutar el programa\n"); return 1; } free(res); free(output); ParseArg_delete(args); return 0; }
int main(int argc, char* argv[]){ if (argc < 2){ fprintf(stderr,"No se especifico ningun comando\n"); return 1; } TParseArg* args; char *input = NULL; int* res = NULL; int fd; int i; int* lines; int* words; int* bytes; int flagsPassed = 0; // Creo el parseador de argumentos args = ParseArg_new(5); // Agrego los argumentos a parsear, si uso valores por defecto como NULL con tama~no 0, // estoy haciendo qe sean obligatorios los argumentos ParseArg_addArg(args, NULL, 'V', "version", NULL, 0); ParseArg_addArg(args, NULL, 'h', "help", NULL, 0); ParseArg_addArg(args, NULL, 'w', "words", NULL, 0); ParseArg_addArg(args, NULL, 'l', "lines", NULL, 0); ParseArg_addArg(args, NULL, 'c', "bytes", NULL, 0); //ParseArg_addArg(args, &ParseArg_parseStr, " ", "", NULL, 0); ParseArg_parse(args, argc, argv); if(ParseArg_getArg(args, 'h')){ flagsPassed++; usage(argv[0]); ParseArg_delete(args); return 0; } if(ParseArg_getArg(args, 'l')){ flagsPassed++; printf("l\n"); //ParseArg_delete(args); //return 0; } if(ParseArg_getArg(args, 'w')){ flagsPassed++; printf("w\n"); //ParseArg_delete(args); //return 0; } if(ParseArg_getArg(args, 'c')){ flagsPassed++; printf("c\n"); //ParseArg_delete(args); //return 0; } if(ParseArg_getArg(args, 'V')){ flagsPassed++; printf("V\n"); version(argv[0]); ParseArg_delete(args); return 0; } //Si no tengo argumentos tengo que leer de stdin y hacer todo if (argc == 1 ){ //CONTAR BYTES, PALABRAS Y LINEAS DEL ARCHIVO STDIN } //Si la diferencia entre argumentos y flags es mayor a 2 entonces //tengo mas de 1 archivo y los leo todos printf("flags %d\n",flagsPassed); if ( 1 + argc - flagsPassed > 2 ){ for ( i = flagsPassed+1 ; i < argc ; i++ ){ //printf("en i: %d %s \n",i, argv[argc+flagsPassed-i]); fd = open(argv[argc+flagsPassed-i], O_RDONLY, S_IRUSR|S_IWUSR); wc(fd, lines, words ,bytes); printf("Lines: %d \t words: %d \t bytes: %d \n",*lines,*words,*bytes); } } //Si la diferencia es 2, puede ser un archivo o stdin //TODO: Poner en el informe que los archivos siempre van dsp de los argumentos if ( 1 + argc - flagsPassed == 2 ){ printf("archivo o stdin\n"); printf("es el %s", argv[1+argc-flagsPassed]); fd = open(argv[argc+flagsPassed-i], O_RDONLY, S_IRUSR|S_IWUSR); wc(fd, lines, words ,bytes); printf("Lines: %d \t words: %d \t bytes: %d \n",*lines,*words,*bytes); } //input = (char*) ParseArg_getArg(args, ' '); //if(input == NULL){ // printf("es stdin\n"); // inFile = stdin; //}else{ // printf("es archivo \n"); // inFile = fopen(input, "r"); // if(!inFile){ // free(input); // ParseArg_delete(args); // return 1; // } //} // if(inFile != stdin) // fclose(inFile); if( !(ParseArg_getArg(args,'V')) || !(ParseArg_getArg(args,'h')) || !(ParseArg_getArg(args,'w')) || !(ParseArg_getArg(args,'l') || !(ParseArg_getArg(args,'c')))){ fprintf(stderr,"Parametro invalido\n"); return 1; } free(res); free(input); ParseArg_delete(args); return 0; }