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:
parent
0bddeb367c
commit
7d5599d80a
21
src/main.c
21
src/main.c
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue