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