home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 21 / CD_ASCQ_21_040595.iso / dos / prg / c / complzw / dcompr.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-01  |  2.2 KB  |  68 lines

  1. /////////////////////////////////////////////////////////////////////////
  2. // Programme principal de décompression.
  3. // Il n'y a rien d'intéressant ici, si ce n'est l'analyse des arguments
  4. // et l'appel de la fonction de décompression à laquelle on les transmet.
  5. /////////////////////////////////////////////////////////////////////////
  6.  
  7. #include "lzw.h"
  8. #include <fstream.h>
  9. #include <string.h>
  10. #include <dir.h>
  11.  
  12. #define NBITS            13    // nous viderons le dico à saturation du code de 13 bits
  13. #define PETIT_NOM    "dcompr"
  14. #define GRAND_NOM        "Décompression"
  15.  
  16. #include "traite.inc"    // fichier inclu (jouant le rôle d'un .cpp, pas .h)
  17.                                 // servant à paramétrer (rendre très semblables) les
  18.                                 // traitements de compression et de décompression
  19.  
  20.  
  21. // compr_ou_dcompr est une variable de type LZW_membre
  22. // défini dans traite.inc ; c'est donc un pointeur sur
  23. // la fonction de compression, membre de la classe LZW
  24.  
  25. LZW_membre    compr_ou_dcompr = &LZW::decompresse ;
  26.  
  27.  
  28. int main( int argc, char * argv[] )
  29. {
  30.     // Analyse des arguments de la ligne de commande.
  31.     //
  32.     // Deux formes sont permises :
  33.     //
  34.     // - dcompr source cible    décomprime source vers cible
  35.     // - dcompr @ordres        un fichier de commandes comprenant une succes-
  36.     //                                    sion de lignes analogues au cas précédent :
  37.     //                                    source1 cible1
  38.     //                                    source2 cible2
  39.     //                                    ...
  40.     // NB : usage() est une fonction définie dans traite.inc : elle affiche
  41.     // en sortie standard les règles d'utilisation énoncées ci-dessus.
  42.     //
  43.     // Comme d'habitude, main renvoie un int qui est exploitable en tant que
  44.     // que errorcode dans un fichier batch sous MsDos.
  45.  
  46.     switch( argc )    // selon le nombre d'arguments (argc-1)
  47.     {
  48.         // 2 arguments : ne doivent pas commencer par @
  49.         case 3    :    if( argv[ 1 ][ 0 ] == '@' || argv[ 2 ][ 0 ] == '@' )
  50.                         {
  51.                             usage() ;    return 1 ;
  52.                         }
  53.                         return traite_un( compr_ou_dcompr, argv[ 1 ], argv[ 2 ] ) ;
  54.  
  55.         // 1 argument : doit commencer par @ (fichier d'ordres)
  56.         case 2    :  if( argv[ 1 ][ 0 ] != '@' )
  57.                         {
  58.                             usage() ;    return 1 ;
  59.                         }
  60.                         return traite_plusieurs( compr_ou_dcompr, argv[ 1 ] ) ;
  61.  
  62.         // tout autre nombre d'arguments est erroné
  63.         case 0     :
  64.         case 1     :
  65.         default    :    usage() ;    return 1 ;
  66.     }
  67. }
  68.