void lerArgumentos(int argc, char *argv[]){
	int opt;

	if (argc < 2){
		mostrarAjuda();
	}

	const struct option opcoes[] = {
		{"help", no_argument, 0, 'h'},
		{"verbose", no_argument, 0, 'v'},
		{"alfa", required_argument, 0, 'a'},
		{"beta", required_argument, 0, 'b'},
		{"rho", required_argument, 0, 'r'},
		{"formigas", required_argument, 0, 'f'},
		{"ciclos", required_argument , 0, 'c'},
		{0, 0, 0, 0},
	};

	while((opt = getopt_long(argc, argv, "hva:b:r:f:c:", opcoes, NULL)) != -1) {
		switch (opt) {
			case 'h':
				mostrarAjuda();
				break;
			case 'v':
				verbose = true;
				break;
			case 'a':
				alfa = atof(optarg);
				break;
			case 'b':
				beta = atof(optarg);
				break;
			case 'r':
				rho = atof(optarg);
				break;
			case 'f':
				n_formigas = atoi(optarg);
				break;
			case 'c':
				n_ciclos = atoi(optarg);
				break;
			default:
				mostrarAjuda();
				return;
		}
	}

	if (n_formigas % n_processo != 0){
		erroSair("ERRO: O numero de formigas precisa ser multiplo do numero de processos.");
	}

	if (optind < argc){
		nomeArquivo = argv[optind++];
	}
}
Exemple #2
0
int main(int argc, char *argv[])
{
	int len = 8; /* comprimento da palavra */
	int vezes;
	int register i = 0;

	system("clear"); /* no RuWindows use system(“cls”); */
	puts("\033[32m\tPASSWDGEN (Gerador de Senhas)\033[0m\n");

	/* Inicializa gerador de números randômicos com a hora atual do sistema */
	srand(time(NULL));
	
	if (argc != 2) {
		puts("\033[34mProcessando...\033[0m\n");
		sleep(2);
	}

	switch (argc) {
		case 1:
			gerarSenha(len);
			break;

		case 2:
			if ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0)) {
				mostrarAjuda();
			}

			if ( (strcmp(argv[1], "-v") == 0) || (strcmp(argv[1], "--version") == 0) ) {
				mostrarVersao();
			}
			break;

		case 3:
			/* -l de length (comprimento da senha) */
			if ( (strcmp(argv[1], "-l") == 0) || (strcmp(argv[1], "--length") == 0) ) {
				/* Converte de string para inteiro */
				len = atoi(argv[2]);
				gerarSenha(len);
			}

			/* -a de amount (quantas senhas devem ser geradas) */
			if ( (strcmp(argv[1], "-a") == 0) || (strcmp( argv[1], "--amount") == 0) ) {
				vezes = atoi(argv[2]);
				if ( validarQuantidadeDeVezes(vezes ) )
					exit(1);

				for (i = 0; i < vezes; i++) {
					gerarSenha(len);
				}
			}
			break;

		case 4:
			if (strcmp(argv[1], "-al") == 0) {
				vezes = atoi(argv[2]);
				len = atoi(argv[3]);
			}

			if (strcmp(argv[1], "-la") == 0) {
				len = atoi(argv[2]);
				vezes = atoi(argv[3]);
			}

			if ( validarQuantidadeDeVezes(vezes) ) {
				exit(1);
			}

			for (i = 0; i < vezes; i++) {
				gerarSenha(len);
			}
			break;

		case 5:
			/* -l de length (comprimento da senha) */
			if ( (strcmp(argv[1], "-l") == 0) || (strcmp(argv[1], "--length") == 0) ) {
				/* Converte de string para inteiro */
				len = atoi(argv[2]);
			} else {
				/* -a de amount (quantas senhas devem ser geradas) */
				if ( (strcmp(argv[1], "-a") == 0) || (strcmp( argv[1], "--amount") == 0) ) {
					vezes = atoi(argv[2]);
					if ( validarQuantidadeDeVezes(vezes ) )
						exit(1);
				}
			}

			/* -l de length (comprimento da senha) */
			if ( (strcmp(argv[3], "-l") == 0) || (strcmp(argv[3], "--length") == 0) ) {
				/* Converte de string para inteiro */
				len = atoi(argv[4]);
			} else {
				/* -a de amount (quantas senhas devem ser geradas) */
				if ( (strcmp(argv[3], "-a") == 0) || (strcmp( argv[3], "--amount") == 0) ) {
					vezes = atoi(argv[4]);
					if ( validarQuantidadeDeVezes(vezes ) )
						exit(1);
				}
			}

			for (i = 0; i < vezes; i++) {
				gerarSenha(len);
			}
			break;
		default:
			printf("\n\033[32m\tDigite: passwdgen --help para obter ajuda.\033[0m\n\n");
	}
	puts("");
	return 0;
}