home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
packery
/
xpk_source
/
shell
/
xquery.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-10-19
|
2KB
|
109 lines
/* xQuery - Query packer properties */
char ver[]= "$VER: xQuery 1.2 (" __DATE__ ")";
#include <proto/xpk.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
struct Library *XpkBase = NULL;
char errbuf[XPKERRMSGSIZE];
char line1[200], line2[200], line3[200], line4[200];
char line5[200], line6[200], line7[200];
void
end (const char *text)
{
if (text)
printf (text);
if (XpkBase)
CloseLibrary (XpkBase);
exit (text ? 10 : 0);
}
int
breakfunc (void)
{
end ("***Break\n");
return 0;
}
void
packerquery (char *packer)
{
XPINFO xpinfo;
XMINFO xminfo;
LONG mode, res;
char name[5];
onbreak (breakfunc);
printf ("\23332mPacker :\233m %s\n", packer);
if (res = XpkQueryTags (
XPK_PackerQuery, &xpinfo,
XPK_PackMethod, packer,
TAG_DONE
))
return;
printf ("\23332mName :\233m %s\n", xpinfo.LongName);
printf ("\23332mDescr. :\233m %s\n", xpinfo.Description);
printf ("\23332mDefMode:\233m %d\t", xpinfo.DefMode);
printf ("\23332mDefChunk:\233m %ld Kb\t", xpinfo.DefChunk / 1024);
printf ("\23332mMaxChunk:\233m %ld Kb\n", xpinfo.MaxChunk / 1024);
printf (" Pack Unpack Pack Unpack\n");
printf ("Name Mode Ratio Speed Speed Mem Mem Description\n");
/* FAST 99..100 99.7% 1024K/s 1040K/s 1024K 1024K Gnubbeldubbel */
memcpy (name, packer, 4);
name[4] = 0;
for (mode = 0; mode < 100; mode = xminfo.Upto + 1) {
if (XpkQueryTags (
XPK_ModeQuery, &xminfo,
XPK_PackMethod, packer,
XPK_PackMode, mode,
TAG_DONE
))
break;
printf ("%4.4s %2ld..%-3ld %2ld.%1ld%% %4ldK/s %4ldK/s %4ldK %4ldK %s\n",
name, mode, xminfo.Upto,
xminfo.Ratio / 10, xminfo.Ratio % 10,
xminfo.PackSpeed, xminfo.UnpackSpeed,
xminfo.PackMemory / 1024, xminfo.UnpackMemory / 1024,
xminfo.Description);
}
printf ("\n");
}
void
main (int argc, char *argv[])
{
XPLIST list;
LONG i;
if (!(XpkBase = OpenLibrary (XPKNAME, 0)))
end ("Cannot open " XPKNAME "\n");
if (XpkQueryTags (XPK_PackersQuery, &list, TAG_DONE))
end ("Cannot get information");
if (argc == 1)
for (i = 0; i < list.NumPackers; i++)
packerquery (list.Packer[i]);
else
for (i = 1; i < argc; i++)
packerquery (argv[i]);
end (NULL);
}