Esempio n. 1
0
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;
}
Esempio n. 2
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;
}
Esempio n. 3
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;
}
Esempio n. 4
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;
}
Esempio n. 5
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;
}