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 >
Wrap
C/C++ Source or Header
|
1996-12-06
|
4KB
|
124 lines
#define NAME "GetXpkSubLibData"
#define REVISION "1"
/* Programmheader
Name: GetXpkSubLibData
Author: SDI
Distribution: PD
Description: prints data of sub libraries
Compileropts: -
Linkeropts: -
1.1 06.12.96 : excluded PrintFlag functions
*/
#include <pragma/xpksub_lib.h>
#include <pragma/dos_lib.h>
#include <pragma/exec_lib.h>
#include <xpk/xpksub.h>
#include "SDI_defines.h"
#include "PrintFlags.c"
#define PARAM "LIBID/A"
struct Library *XpkSubBase = 0;
struct RDArgs *rda = 0;
ULONG DosVersion = 37;
void WriteMode(struct XpkMode *, ULONG);
void main(void)
{
STRPTR name = "compressors/xpk____.library";
STRPTR str;
if((rda = ReadArgs(PARAM, (LONG *) &str, 0)))
{
struct XpkInfo *xi;
CopyMem(str,name+15,4); // copies the LibName
if((XpkSubBase = OpenLibrary(name, 0)) &&
(xi = XpksPackerInfo()))
{
VPrintf(
"xi_XpkInfoVersion : %d\n" /* Version number of this structure */
"xi_LibVersion : %d\n" /* The version of this sublibrary */
"xi_MasterVersion : %d\n" /* The required master lib version */
"xi_ModesVersion : %d\n" /* Version number of mode descriptors */
"xi_Name : %s\n" /* Brief name of the packer, 20 char max */
"xi_LongName : %s\n" /* Full name of the packer 30 char max */
"xi_Description : %s\n" /* Short packer desc., 70 char max */
,xi);
str = (STRPTR) &(xi->xi_ID);
VPrintf("xi_ID : '%.4s'\nxi_Flags : ", &str);
{
ULONG i = xi->xi_Flags;
PrintFlag(&i, XPKIF_PK_CHUNK, "XPKIF_PK_CHUNK");
PrintFlag(&i, XPKIF_PK_STREAM, "XPKIF_PK_STREAM");
PrintFlag(&i, XPKIF_PK_ARCHIVE, "XPKIF_PK_ARCHIVE");
PrintFlag(&i, XPKIF_UP_CHUNK, "XPKIF_UP_CHUNK");
PrintFlag(&i, XPKIF_UP_STREAM, "XPKIF_UP_STREAM");
PrintFlag(&i, XPKIF_UP_ARCHIVE, "XPKIF_UP_ARCHIVE");
PrintFlag(&i, XPKIF_HOOKIO, "XPKIF_HOOKIO");
PrintFlag(&i, XPKIF_CHECKING, "XPKIF_CHECKING");
PrintFlag(&i, XPKIF_PREREADHDR, "XPKIF_PREREADHDR");
PrintFlag(&i, XPKIF_ENCRYPTION, "XPKIF_ENCRYPTION");
PrintFlag(&i, XPKIF_NEEDPASSWD, "XPKIF_NEEDPASSWD");
PrintFlag(&i, XPKIF_MODES, "XPKIF_MODES");
PrintFlag(&i, XPKIF_LOSSY, "XPKIF_LOSSY");
PrintEndFlag(i, xi->xi_Flags);
}
VPrintf(
"xi_MaxPkInChunk : %ld\n" /* Max input chunk size for packing */
"xi_MinPkInChunk : %ld\n" /* Min input chunk size for packing */
"xi_DefPkInChunk : %ld\n" /* Default packing chunk size */
"xi_PackMsg : %s\n" /* Packing message, present tense */
"xi_UnpackMsg : %s\n" /* Unpacking message, present tense */
"xi_PackedMsg : %s\n" /* Packing message, past tense */
"xi_UnpackedMsg : %s\n" /* Unpacking message, past tense */
"xi_DefMode : %d\n" /* Default mode number */
"xi_Pad : %d\n" /* for future use */
,&(xi->xi_MaxPkInChunk));
VPrintf("xi_Reserved : %ld,%ld,%ld,%ld,%ld,%ld\n", xi->xi_Reserved);
WriteMode(xi->xi_ModeDesc, 1);
}
}
if(XpkSubBase)
CloseLibrary(XpkSubBase);
if(rda)
FreeArgs(rda);
}
void WriteMode(struct XpkMode *m, ULONG num)
{
STRPTR str = (STRPTR) &(m->xm_Description);
VPrintf("\nXpkMode No %ld:\n", &num);
VPrintf("xm_Upto : %ld\nxm_Flags : ", &(m->xm_Upto));
{
ULONG i = m->xm_Flags;
PrintFlag(&i, XPKMF_A3000SPEED, "XPKMF_A3000SPEED");
PrintFlag(&i, XPKMF_PK_NOCPU, "XPKMF_PK_NOCPU");
PrintFlag(&i, XPKMF_UP_NOCPU, "XPKMF_UP_NOCPU");
PrintEndFlag(i, m->xm_Flags);
}
VPrintf(
"xm_PackMemory : %ld\n" /* Extra memory required during packing */
"xm_UnpackMemory : %ld\n" /* Extra memory during unpacking */
"xm_PackSpeed : %ld\n" /* Approx packing speed in K per second */
"xm_UnpackSpeed : %ld\n" /* Approx unpacking speed in K per second */
"xm_Ratio : %d\n" /* CF in 0.1% for AmigaVision executable */
"xm_ChunkSize : %d\n" /* Desired chunk size in K (!!) for this mode*/
, &(m->xm_PackMemory));
VPrintf("xm_Description : '%.10s'\n", &str);
if(m->xm_Next)
WriteMode(m->xm_Next, num+1);
}