limpeza do código
This commit is contained in:
parent
79d2ab1c5a
commit
0082116cf0
1 changed files with 4 additions and 21 deletions
25
src/hdoc.c
25
src/hdoc.c
|
@ -16,67 +16,50 @@ typedef enum {
|
||||||
OPT_HELP
|
OPT_HELP
|
||||||
} Option;
|
} Option;
|
||||||
|
|
||||||
// Trata argumentos recebidos
|
|
||||||
int parse_arg(char *arg);
|
int parse_arg(char *arg);
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
char *file = NULL;
|
char *file = NULL;
|
||||||
char *mode = NULL;
|
char *mode = NULL;
|
||||||
|
|
||||||
// Verificação do número de argumentos...
|
if (argc == 2) {
|
||||||
if (argc < 2 || argc > 3) {
|
|
||||||
// Só pode haver 2 ou 3 argumentos...
|
|
||||||
return print_error_usage(MSG_ARGC_ERROR, argv[0]);
|
|
||||||
} else if (argc == 2) {
|
|
||||||
// Invocação com 2 argumentos...
|
|
||||||
switch (parse_arg(argv[1])) {
|
switch (parse_arg(argv[1])) {
|
||||||
case OPT_HELP:
|
case OPT_HELP:
|
||||||
// Imprime ajuda e termina...
|
|
||||||
return print_usage(EXIT_SUCCESS, argv[0]);
|
return print_usage(EXIT_SUCCESS, argv[0]);
|
||||||
case OPT_NAME:
|
case OPT_NAME:
|
||||||
// Arquivo existe?
|
|
||||||
if (access(argv[1], F_OK) == 0) {
|
if (access(argv[1], F_OK) == 0) {
|
||||||
// Sem opções, só arquivos novos!
|
|
||||||
return print_error_usage(MSG_FILE_EXISTS, argv[0]);
|
return print_error_usage(MSG_FILE_EXISTS, argv[0]);
|
||||||
}
|
}
|
||||||
// Nome do novo arquivo...
|
|
||||||
file = argv[1];
|
file = argv[1];
|
||||||
mode = "w";
|
mode = "w";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Nome do arquivo não pode começar com '-'!
|
|
||||||
return print_error_usage(MSG_INVALID_ARG, argv[0]);
|
return print_error_usage(MSG_INVALID_ARG, argv[0]);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (argc == 3) {
|
||||||
// Invocação com 3 argumentos...
|
|
||||||
for (int i = 1; argv[i] != NULL; i++) {
|
for (int i = 1; argv[i] != NULL; i++) {
|
||||||
switch (parse_arg(argv[i])) {
|
switch (parse_arg(argv[i])) {
|
||||||
case OPT_NAME:
|
case OPT_NAME:
|
||||||
// Só pode haver uma definição de nome...
|
|
||||||
if (file == NULL) file = argv[i];
|
if (file == NULL) file = argv[i];
|
||||||
break;
|
break;
|
||||||
case OPT_OVERWRITE:
|
case OPT_OVERWRITE:
|
||||||
// Só pode haver uma definição de modo...
|
|
||||||
if (mode == NULL) mode = "w";
|
if (mode == NULL) mode = "w";
|
||||||
break;
|
break;
|
||||||
case OPT_APPEND:
|
case OPT_APPEND:
|
||||||
// Só pode haver uma definição de modo...
|
|
||||||
if (mode == NULL) mode = "a";
|
if (mode == NULL) mode = "a";
|
||||||
break;
|
break;
|
||||||
case OPT_HELP:
|
case OPT_HELP:
|
||||||
// Exibe ajuda e termina com sucesso...
|
|
||||||
return print_usage(EXIT_SUCCESS, argv[0]);
|
return print_usage(EXIT_SUCCESS, argv[0]);
|
||||||
case OPT_ERROR:
|
case OPT_ERROR:
|
||||||
// Algum dos argumentos é inválido...
|
|
||||||
print_error_fmt(MSG_INVALID_FMT, argv[i]);
|
print_error_fmt(MSG_INVALID_FMT, argv[i]);
|
||||||
return print_usage(EXIT_FAILURE, argv[0]);
|
return print_usage(EXIT_FAILURE, argv[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tem que haver um nome e um modo depois do loop...
|
|
||||||
if (file == NULL || mode == NULL) {
|
if (file == NULL || mode == NULL) {
|
||||||
return print_error_usage(MSG_INCORRECT_ALL, argv[0]);
|
return print_error_usage(MSG_INCORRECT_ALL, argv[0]);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return print_error_usage(MSG_ARGC_ERROR, argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *fstr = fopen(file, mode);
|
FILE *fstr = fopen(file, mode);
|
||||||
|
|
Loading…
Add table
Reference in a new issue