função print_error_msg

This commit is contained in:
Blau Araujo 2025-06-20 09:04:24 -03:00
parent aebe5977a7
commit 79d2ab1c5a
3 changed files with 15 additions and 16 deletions

View file

@ -16,7 +16,8 @@ typedef enum {
OPT_HELP OPT_HELP
} Option; } 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) { int main(int argc, char **argv) {
@ -24,10 +25,9 @@ int main(int argc, char **argv) {
char *mode = NULL; char *mode = NULL;
// Verificação do número de argumentos... // Verificação do número de argumentos...
if (argc == 1 || argc > 3) { if (argc < 2 || argc > 3) {
// Só pode haver 2 ou 3 argumentos... // Só pode haver 2 ou 3 argumentos...
print_error(MSG_ARGC_ERROR); return print_error_usage(MSG_ARGC_ERROR, argv[0]);
return print_usage(EXIT_FAILURE, argv[0]);
} else if (argc == 2) { } else if (argc == 2) {
// Invocação com 2 argumentos... // Invocação com 2 argumentos...
switch (parse_arg(argv[1])) { switch (parse_arg(argv[1])) {
@ -38,8 +38,7 @@ int main(int argc, char **argv) {
// Arquivo existe? // Arquivo existe?
if (access(argv[1], F_OK) == 0) { if (access(argv[1], F_OK) == 0) {
// Sem opções, só arquivos novos! // Sem opções, só arquivos novos!
print_error(MSG_FILE_EXISTS); return print_error_usage(MSG_FILE_EXISTS, argv[0]);
return print_usage(EXIT_FAILURE, argv[0]);
} }
// Nome do novo arquivo... // Nome do novo arquivo...
file = argv[1]; file = argv[1];
@ -47,8 +46,7 @@ int main(int argc, char **argv) {
break; break;
default: default:
// Nome do arquivo não pode começar com '-'! // Nome do arquivo não pode começar com '-'!
print_error(MSG_INVALID_ARG); return print_error_usage(MSG_INVALID_ARG, argv[0]);
return print_usage(EXIT_FAILURE, argv[0]);
} }
} else { } else {
// Invocação com 3 argumentos... // 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... // Tem que haver um nome e um modo depois do loop...
if (file == NULL || mode == NULL) { if (file == NULL || mode == NULL) {
print_error(MSG_INCORRECT_ALL); return print_error_usage(MSG_INCORRECT_ALL, argv[0]);
return print_usage(EXIT_FAILURE, argv[0]);
} }
} }
@ -87,16 +84,12 @@ int main(int argc, char **argv) {
perror(MSG_FOPEN_ERROR); perror(MSG_FOPEN_ERROR);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
char line[BUFSIZ]; char line[BUFSIZ];
puts(MSG_EOF_HINT); puts(MSG_EOF_HINT);
while (1) { while (1) {
printf(MSG_PROMPT);
if (fgets(line, BUFSIZ, stdin) == NULL) break; if (fgets(line, BUFSIZ, stdin) == NULL) break;
fprintf(fstr, "%s", line); fprintf(fstr, "%s", line);
} }
putchar('\n');
fclose(fstr); fclose(fstr);
return EXIT_SUCCESS; return EXIT_SUCCESS;

View file

@ -16,7 +16,7 @@ const char *MSG_USAGE =
" -h Exibe esta ajuda.\n\n"; " -h Exibe esta ajuda.\n\n";
const char *MSG_EOF_HINT = "Tecle Ctrl+D para terminar..."; const char *MSG_EOF_HINT = "Tecle Ctrl+D para terminar...";
const char *MSG_PROMPT = "> "; // const char *MSG_PROMPT = "> ";
// Mensagens de erro // Mensagens de erro
const char *MSG_ARGC_ERROR = "Número incorreto de argumentos!\n\n"; 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); fprintf(stream, MSG_USAGE, prog_name);
return status; return status;
} }
int print_error_usage(const char *err, char *prog_name) {
print_error(err);
return print_usage(EXIT_FAILURE, prog_name);
}

View file

@ -7,7 +7,7 @@
// Mensagens de uso e ajuda // Mensagens de uso e ajuda
extern const char *MSG_USAGE; extern const char *MSG_USAGE;
extern const char *MSG_EOF_HINT; extern const char *MSG_EOF_HINT;
extern const char *MSG_PROMPT; // extern const char *MSG_PROMPT;
// Mensagens de erro // Mensagens de erro
extern const char *MSG_ARGC_ERROR; extern const char *MSG_ARGC_ERROR;
@ -24,5 +24,6 @@ void print_error_fmt(const char *fmt, const char *arg);
// Impressão da ajuda // Impressão da ajuda
int print_usage(int status, char *prog_name); int print_usage(int status, char *prog_name);
int print_error_usage(const char *err, char *prog_name);
#endif // MESSAGES_H #endif // MESSAGES_H