diff --git a/src/hdoc.c b/src/hdoc.c index 408c84f..84182be 100644 --- a/src/hdoc.c +++ b/src/hdoc.c @@ -16,7 +16,8 @@ typedef enum { OPT_HELP } Option; -int parse_arg(char *arg); // Trata argumentos na linha de comando +// Trata argumentos recebidos +int parse_arg(char *arg); int main(int argc, char **argv) { @@ -24,10 +25,9 @@ int main(int argc, char **argv) { char *mode = NULL; // Verificação do número de argumentos... - if (argc == 1 || argc > 3) { + if (argc < 2 || argc > 3) { // Só pode haver 2 ou 3 argumentos... - print_error(MSG_ARGC_ERROR); - return print_usage(EXIT_FAILURE, argv[0]); + return print_error_usage(MSG_ARGC_ERROR, argv[0]); } else if (argc == 2) { // Invocação com 2 argumentos... switch (parse_arg(argv[1])) { @@ -38,8 +38,7 @@ int main(int argc, char **argv) { // Arquivo existe? if (access(argv[1], F_OK) == 0) { // Sem opções, só arquivos novos! - print_error(MSG_FILE_EXISTS); - return print_usage(EXIT_FAILURE, argv[0]); + return print_error_usage(MSG_FILE_EXISTS, argv[0]); } // Nome do novo arquivo... file = argv[1]; @@ -47,8 +46,7 @@ int main(int argc, char **argv) { break; default: // Nome do arquivo não pode começar com '-'! - print_error(MSG_INVALID_ARG); - return print_usage(EXIT_FAILURE, argv[0]); + return print_error_usage(MSG_INVALID_ARG, argv[0]); } } else { // Invocação com 3 argumentos... @@ -77,8 +75,7 @@ int main(int argc, char **argv) { } // Tem que haver um nome e um modo depois do loop... if (file == NULL || mode == NULL) { - print_error(MSG_INCORRECT_ALL); - return print_usage(EXIT_FAILURE, argv[0]); + return print_error_usage(MSG_INCORRECT_ALL, argv[0]); } } @@ -87,16 +84,12 @@ int main(int argc, char **argv) { perror(MSG_FOPEN_ERROR); return EXIT_FAILURE; } - char line[BUFSIZ]; puts(MSG_EOF_HINT); while (1) { - printf(MSG_PROMPT); if (fgets(line, BUFSIZ, stdin) == NULL) break; fprintf(fstr, "%s", line); } - putchar('\n'); - fclose(fstr); return EXIT_SUCCESS; diff --git a/src/messages.c b/src/messages.c index 92e9af7..8787147 100644 --- a/src/messages.c +++ b/src/messages.c @@ -16,7 +16,7 @@ const char *MSG_USAGE = " -h Exibe esta ajuda.\n\n"; const char *MSG_EOF_HINT = "Tecle Ctrl+D para terminar..."; -const char *MSG_PROMPT = "> "; +// const char *MSG_PROMPT = "> "; // Mensagens de erro const char *MSG_ARGC_ERROR = "Número incorreto de argumentos!\n\n"; @@ -61,3 +61,8 @@ int print_usage(int status, char *prog_name) { fprintf(stream, MSG_USAGE, prog_name); return status; } + +int print_error_usage(const char *err, char *prog_name) { + print_error(err); + return print_usage(EXIT_FAILURE, prog_name); +} diff --git a/src/messages.h b/src/messages.h index c9e0dec..8356267 100644 --- a/src/messages.h +++ b/src/messages.h @@ -7,7 +7,7 @@ // Mensagens de uso e ajuda extern const char *MSG_USAGE; extern const char *MSG_EOF_HINT; -extern const char *MSG_PROMPT; +// extern const char *MSG_PROMPT; // Mensagens de erro extern const char *MSG_ARGC_ERROR; @@ -24,5 +24,6 @@ void print_error_fmt(const char *fmt, const char *arg); // Impressão da ajuda int print_usage(int status, char *prog_name); +int print_error_usage(const char *err, char *prog_name); #endif // MESSAGES_H