home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 10 / Sonderheft_12.iso / best-of-tools / packer / xpk3.11 / xpk_source / xpkmaster / test / getxpksublibdata.c next >
C/C++ Source or Header  |  1996-12-06  |  4KB  |  124 lines

  1. #define NAME     "GetXpkSubLibData"
  2. #define REVISION "1"
  3.  
  4. /* Programmheader
  5.  
  6.     Name:        GetXpkSubLibData
  7.     Author:        SDI
  8.     Distribution:    PD
  9.     Description:    prints data of sub libraries
  10.     Compileropts:    -
  11.     Linkeropts:    -
  12.  
  13.  1.1   06.12.96 : excluded PrintFlag functions
  14. */
  15.  
  16. #include <pragma/xpksub_lib.h>
  17. #include <pragma/dos_lib.h>
  18. #include <pragma/exec_lib.h>
  19. #include <xpk/xpksub.h>
  20. #include "SDI_defines.h"
  21. #include "PrintFlags.c"
  22.  
  23. #define PARAM        "LIBID/A"
  24.  
  25. struct Library *XpkSubBase    = 0;
  26. struct RDArgs  *rda        = 0;
  27. ULONG        DosVersion    = 37;
  28.  
  29. void WriteMode(struct XpkMode *, ULONG);
  30.  
  31. void main(void)
  32. {
  33.   STRPTR name = "compressors/xpk____.library";
  34.   STRPTR str;
  35.  
  36.   if((rda = ReadArgs(PARAM, (LONG *) &str, 0)))
  37.   {
  38.     struct XpkInfo *xi;
  39.     CopyMem(str,name+15,4); // copies the LibName
  40.  
  41.     if((XpkSubBase = OpenLibrary(name, 0)) &&
  42.     (xi = XpksPackerInfo()))
  43.     {
  44.       VPrintf(
  45.       "xi_XpkInfoVersion : %d\n"  /* Version number of this structure        */
  46.       "xi_LibVersion     : %d\n"  /* The version of this sublibrary          */
  47.       "xi_MasterVersion  : %d\n"  /* The required master lib version         */
  48.       "xi_ModesVersion   : %d\n"  /* Version number of mode descriptors      */
  49.       "xi_Name           : %s\n"  /* Brief name of the packer, 20 char max   */
  50.       "xi_LongName       : %s\n"  /* Full name of the packer   30 char max   */
  51.       "xi_Description    : %s\n"  /* Short packer desc., 70 char max         */
  52.       ,xi);
  53.       str = (STRPTR) &(xi->xi_ID);
  54.       VPrintf("xi_ID             : '%.4s'\nxi_Flags          : ", &str);
  55.       {
  56.         ULONG i = xi->xi_Flags;
  57.         PrintFlag(&i, XPKIF_PK_CHUNK,    "XPKIF_PK_CHUNK");
  58.         PrintFlag(&i, XPKIF_PK_STREAM,    "XPKIF_PK_STREAM");
  59.         PrintFlag(&i, XPKIF_PK_ARCHIVE,    "XPKIF_PK_ARCHIVE");
  60.         PrintFlag(&i, XPKIF_UP_CHUNK,    "XPKIF_UP_CHUNK");
  61.         PrintFlag(&i, XPKIF_UP_STREAM,    "XPKIF_UP_STREAM");
  62.         PrintFlag(&i, XPKIF_UP_ARCHIVE,    "XPKIF_UP_ARCHIVE");
  63.         PrintFlag(&i, XPKIF_HOOKIO,    "XPKIF_HOOKIO");
  64.         PrintFlag(&i, XPKIF_CHECKING,    "XPKIF_CHECKING");
  65.         PrintFlag(&i, XPKIF_PREREADHDR,    "XPKIF_PREREADHDR");
  66.         PrintFlag(&i, XPKIF_ENCRYPTION,    "XPKIF_ENCRYPTION");
  67.         PrintFlag(&i, XPKIF_NEEDPASSWD,    "XPKIF_NEEDPASSWD");
  68.         PrintFlag(&i, XPKIF_MODES,    "XPKIF_MODES");
  69.         PrintFlag(&i, XPKIF_LOSSY,    "XPKIF_LOSSY");
  70.         PrintEndFlag(i, xi->xi_Flags);
  71.       }
  72.  
  73.       VPrintf(
  74.       "xi_MaxPkInChunk   : %ld\n" /* Max input chunk size for packing        */
  75.       "xi_MinPkInChunk   : %ld\n" /* Min input chunk size for packing        */
  76.       "xi_DefPkInChunk   : %ld\n" /* Default packing chunk size              */
  77.       "xi_PackMsg        : %s\n"  /* Packing message, present tense          */
  78.       "xi_UnpackMsg      : %s\n"  /* Unpacking message, present tense        */
  79.       "xi_PackedMsg      : %s\n"  /* Packing message, past tense             */
  80.       "xi_UnpackedMsg    : %s\n"  /* Unpacking message, past tense           */
  81.       "xi_DefMode        : %d\n"  /* Default mode number                     */
  82.       "xi_Pad            : %d\n"  /* for future use                          */
  83.       ,&(xi->xi_MaxPkInChunk));
  84.       VPrintf("xi_Reserved       : %ld,%ld,%ld,%ld,%ld,%ld\n", xi->xi_Reserved);
  85.  
  86.       WriteMode(xi->xi_ModeDesc, 1);
  87.     }
  88.   }
  89.   if(XpkSubBase)
  90.     CloseLibrary(XpkSubBase);
  91.   if(rda)
  92.     FreeArgs(rda);
  93. }
  94.  
  95. void WriteMode(struct XpkMode *m, ULONG num)
  96. {
  97.   STRPTR str = (STRPTR) &(m->xm_Description);
  98.   VPrintf("\nXpkMode No %ld:\n", &num);
  99.  
  100.   VPrintf("xm_Upto           : %ld\nxm_Flags          : ", &(m->xm_Upto));
  101.   {
  102.     ULONG i = m->xm_Flags;
  103.     PrintFlag(&i, XPKMF_A3000SPEED,    "XPKMF_A3000SPEED");
  104.     PrintFlag(&i, XPKMF_PK_NOCPU,    "XPKMF_PK_NOCPU");
  105.     PrintFlag(&i, XPKMF_UP_NOCPU,    "XPKMF_UP_NOCPU");
  106.     PrintEndFlag(i, m->xm_Flags);
  107.   }
  108.  
  109.   VPrintf(
  110.   "xm_PackMemory     : %ld\n" /* Extra memory required during packing      */
  111.   "xm_UnpackMemory   : %ld\n" /* Extra memory during unpacking             */
  112.   "xm_PackSpeed      : %ld\n" /* Approx packing speed in K per second      */
  113.   "xm_UnpackSpeed    : %ld\n" /* Approx unpacking speed in K per second    */
  114.   "xm_Ratio          : %d\n"  /* CF in 0.1% for AmigaVision executable     */
  115.   "xm_ChunkSize      : %d\n"  /* Desired chunk size in K (!!) for this mode*/
  116.   , &(m->xm_PackMemory));
  117.  
  118.   VPrintf("xm_Description    : '%.10s'\n", &str);
  119.  
  120.   if(m->xm_Next)
  121.     WriteMode(m->xm_Next, num+1);
  122. }
  123.  
  124.