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++]; } }
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; }