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