home *** CD-ROM | disk | FTP | other *** search
- /////////////////////////////////////////////////////////////////////////
- // Programme principal de compression.
- // Il n'y a rien d'intéressant ici, si ce n'est l'analyse des arguments
- // et l'appel de la fonction de compression à laquelle ils sont transmis.
- /////////////////////////////////////////////////////////////////////////
-
- #include "lzw.h"
- #include <fstream.h>
- #include <string.h>
- #include <dir.h>
-
- #define NBITS 13 // nous viderons le dico à saturation du code de 13 bits
-
- #define PETIT_NOM "compr"
- #define GRAND_NOM "Compression"
-
- #include "traite.inc" // fichier inclu (jouant le rôle d'un .cpp, pas .h)
- // servant à paramétrer (rendre très semblables) les
- // traitements de compression et de décompression
-
-
- // compr_ou_dcompr est une variable de type LZW_membre
- // défini dans traite.inc ; c'est donc un pointeur sur
- // la fonction de compression, membre de la classe LZW
-
- LZW_membre compr_ou_dcompr = &LZW::compresse ;
-
-
-
- int main( int argc, char * argv[] )
- {
- // Analyse des arguments de la ligne de commande.
- //
- // Deux formes sont permises :
- //
- // - compr source cible comprime source vers cible
- // - compr @ordres un fichier de commandes comprenant une succes-
- // sion de lignes analogues au cas précédent :
- // source1 cible1
- // source2 cible2
- // ...
- // NB : usage() est une fonction définie dans traite.inc : elle affiche
- // en sortie standard les règles d'utilisation énoncées ci-dessus.
- //
- // Comme d'habitude, main renvoie un int qui est exploitable en tant que
- // que errorcode dans un fichier batch sous MsDos.
-
- switch( argc ) // selon le nombre d'arguments (argc-1)
- {
- // 2 arguments : ne doivent pas commencer par @
- case 3 : if( argv[ 1 ][ 0 ] == '@' || argv[ 2 ][ 0 ] == '@' )
- {
- usage() ; return 1 ;
- }
- return traite_un( compr_ou_dcompr, argv[ 1 ], argv[ 2 ] ) ;
-
- // 1 argument : doit commencer par @ (fichier d'ordres)
- case 2 : if( argv[ 1 ][ 0 ] != '@' )
- {
- usage() ; return 1 ;
- }
- return traite_plusieurs( compr_ou_dcompr, argv[ 1 ] ) ;
-
- // tout autre nombre d'arguments est erroné
- case 0 :
- case 1 :
- default : usage() ; return 1 ;
- }
- }
-