#include "arguments.h" #include "common.h" #include #include error_t parseArgument(int key, char* arg, struct argp_state* state) { Args* args = state->input; switch (key) { case 'v': args->verbose = TRUE; break; case 'd': args->compress = FALSE; break; case ARGP_KEY_ARG: switch (state->arg_num) { case 0: // Premier argument : fichier d'entrée args->source = fopen(arg, "rb"); if (args->source == NULL) { argp_error( state, "%s: %s", arg, strerror(errno) ); } break; case 1: // Second argument : fichier de sortie. Si omis, // utilisation de la sortie standard args->dest = fopen(arg, "wb"); if (args->dest == NULL) { argp_error( state, "%s: %s", arg, strerror(errno) ); } break; default: argp_error( state, "trop d'arguments (l'argument %s, numéro %d " "est superflu)", arg, state->arg_num + 1 ); } break; case ARGP_KEY_END: if (state->arg_num < 1) { argp_error(state, "fichier d'entrée manquant"); } break; default: return ARGP_ERR_UNKNOWN; } return 0; }