Le programme n'accepte plus stdin pour entrée

(Incompatible avec le fait que l'algo. de Huffman doive
lire l'entrée en deux passes)
This commit is contained in:
Mattéo Delabre 2016-11-19 21:41:05 +01:00
parent 0bddeb367c
commit 7d5599d80a
1 changed files with 14 additions and 7 deletions

View File

@ -38,9 +38,8 @@ static error_t parse_opt(int key, char* arg, struct argp_state* state) {
case ARGP_KEY_ARG: case ARGP_KEY_ARG:
switch (state->arg_num) { switch (state->arg_num) {
case 0: case 0:
// Premier argument : fichier d'entrée. Si omis, // Premier argument : fichier d'entrée
// utilisation de l'entrée standard args->source = fopen(arg, "rb");
args->source = fopen(arg, "r");
if (args->source == NULL) { if (args->source == NULL) {
argp_error( argp_error(
@ -53,7 +52,7 @@ static error_t parse_opt(int key, char* arg, struct argp_state* state) {
case 1: case 1:
// Second argument : fichier de sortie. Si omis, // Second argument : fichier de sortie. Si omis,
// utilisation de la sortie standard // utilisation de la sortie standard
args->dest = fopen(arg, "w"); args->dest = fopen(arg, "wb");
if (args->dest == NULL) { if (args->dest == NULL) {
argp_error( argp_error(
@ -65,11 +64,19 @@ static error_t parse_opt(int key, char* arg, struct argp_state* state) {
default: default:
argp_error( argp_error(
state, "Trop d'arguments - L'argument %s est superflu", state, "Trop d'arguments (l'argument %s est superflu)",
arg arg
); );
} }
break;
case ARGP_KEY_END:
if (state->arg_num < 1) {
argp_error(
state, "Fichier d'entrée manquant (le premier argument "
" est obligatoire)"
);
}
break; break;
default: default:
@ -108,7 +115,7 @@ static struct argp_option options[] = {
static struct argp argp = { static struct argp argp = {
.options = options, .options = options,
.parser = parse_opt, .parser = parse_opt,
.args_doc = "[SOURCE [DEST]]", .args_doc = "SOURCE [DEST]",
.doc = "Compresse ou décompresse SOURCE vers DEST en utilisant " .doc = "Compresse ou décompresse SOURCE vers DEST en utilisant "
"l'algorithme de Huffman (par défaut, compresse SOURCE vers DEST)." "l'algorithme de Huffman (par défaut, compresse SOURCE vers DEST)."
}; };
@ -123,7 +130,7 @@ int main(int argc, char** argv) {
Args args = { Args args = {
.verbose = FALSE, .verbose = FALSE,
.compress = TRUE, .compress = TRUE,
.source = stdin, .source = NULL,
.dest = stdout .dest = stdout
}; };