função print_error_msg
This commit is contained in:
parent
aebe5977a7
commit
79d2ab1c5a
3 changed files with 15 additions and 16 deletions
21
src/hdoc.c
21
src/hdoc.c
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue