#include "arclib.h" #if !defined( AL_IBM ) #pragma hdrstop #endif #include #include #include "alsimple.h" void my_callback( const char AL_DLL_FAR *name, int object_ratio, int job_ratio ) { if ( name ) cout << "\n" << name << " "; if ( object_ratio >= 0 ) { char buf[ 24 ]; sprintf( buf, "%d%% %d%%", object_ratio, job_ratio ); cout << " \b\b\b\b\b\b\b\b\b\b" << buf; for ( int i = 0 ; i < (int) strlen( buf ) ; i++ ) cout << '\b'; } } int ratio( struct ALZipDir *z ) { return int( 100L - ( ( 100L * z->compressed_size ) / (long) z->size ) ); } main() { int i; int count; int error; struct ALZipDir *z; char *levels[] = { "Stored ", "DeflatN", "DeflatX", "DeflatF", "DeflatS" }; i = ALCreate( "libs.zip", "*.bak, build.*", 0, my_callback ); printf( "\nALCreate() returned %d\n", i ); z = ALReadDir( "libs.zip", &count, &error ); if ( z != 0 && error == AL_SUCCESS ) for ( i = 0 ; i < count ; i++ ) printf( "%7ld %s %7ld %3d%% %02d-%02d-%04d %02d:%02d %s %s\n", z[ i ].size, levels[ z[ i ].level ], z[ i ].compressed_size, ratio( z + i ), z[ i ].month, z[ i ].date, z[ i ].year, z[ i ].hour, z[ i ].minute, z[ i ].name, z[ i ].comment ); ALFreeDir( z ); i = ALAppend( "libs.zip", "*.tr?", 1, my_callback ); printf( "\n" ); return i; }