106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  * EX05CON.C
 | |
|  *
 | |
|  *  C/DOS Example program for ArchiveLib 2.0
 | |
|  *
 | |
|  *  Copyright (c) Greenleaf Software, Inc. 1994 - 1996
 | |
|  *  All Rights Reserved
 | |
|  *
 | |
|  * MEMBERS/FUNCTIONS DEMONSTRATED
 | |
|  *
 | |
|  *  ALArchiveGetComment()
 | |
|  *  ALEntryGetComment()
 | |
|  *  ALEntryGetCompressedSize()
 | |
|  *  ALEntryGetMark()
 | |
|  *
 | |
|  * DESCRIPTION
 | |
|  *
 | |
|  *  This example program gives a brief listing of an archive's contents.
 | |
|  *  If you don't specify an archive name on the command line, by
 | |
|  *  default it will display the contents of dos00.gal.  If you don't have a
 | |
|  *  copy of dos00.gal already, you can create one using EX00CON.
 | |
|  *
 | |
|  * REVISION HISTORY
 | |
|  *
 | |
|  *  February 1, 1996  2.0A  : Second release
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| #include <conio.h>
 | |
| 
 | |
| #include "arclib.h"
 | |
| #include "glarc.h"
 | |
| #include "pkarc.h"
 | |
| 
 | |
| int dump( hALEntryList list );
 | |
| 
 | |
| int main( int argc, char *argv[] )
 | |
| {
 | |
|  hALArchive archive;
 | |
|  hALEntryList list;
 | |
|  char *comment;
 | |
| 
 | |
|  printf( "Archive Library 2.0\nEX05CON.C\n\n" );
 | |
|  printf( "This example program gives a brief listing of an archive's contents.\n" );
 | |
|  printf( "If you don't specify an archive name on the command line, by\n" );
 | |
|  printf( "default it will display the contents of dos00.gal.  If you don't have a\n" );
 | |
|  printf( "copy of dos00.gal already, you can create one using EX00CON.\n" );
 | |
|  getch();
 | |
| 
 | |
|  if ( argc == 2 )
 | |
| #if defined( ZIP )
 | |
|     archive = newALPkArchive( argv[ 1 ] );
 | |
|  else
 | |
|     archive = newALPkArchive( "dos00.zip" );
 | |
| #else
 | |
|      archive = newALGlArchive( argv[ 1 ] );
 | |
|  else
 | |
|      archive = newALGlArchive( "dos00.gal" );
 | |
| #endif
 | |
|  list = newALListCopyTools( 0 );
 | |
|  ALArchiveReadDirectory( archive, list );
 | |
|  printf( "\n" );
 | |
|  comment = ALArchiveGetComment( archive );
 | |
|  if ( comment )
 | |
|      printf( "Archive comment: %s\n", comment );
 | |
|  dump( list );
 | |
|  return 1;
 | |
| }
 | |
| 
 | |
| int dump( hALEntryList list )
 | |
| {
 | |
|  long total = 0;
 | |
|  long tsize = 0;
 | |
|  long tcomp = 0;
 | |
|  hALEntry entry;
 | |
| 
 | |
|  entry = ALEntryListGetFirstEntry( list );
 | |
|  if ( entry == 0 ) {
 | |
|      printf( "No entries in archive\n" );
 | |
|      return 1;
 | |
|  }
 | |
|  printf( "============================================================================\n" );
 | |
|  printf( "M            Name                Size        Comp   Comment\n" );
 | |
|  printf( "----------------------------------------------------------------------------\n" );
 | |
|  while ( entry != 0 ) {
 | |
|      total++;
 | |
|      tsize += ALStorageGetSize( ALEntryGetStorage( entry ) );
 | |
|      tcomp += ALEntryGetCompressedSize( entry );
 | |
|      printf( ALEntryGetMark( entry ) ? "*" : " " );
 | |
|      printf( "%24s", ALStorageGetName( ALEntryGetStorage( entry ) ) );
 | |
|      printf( "%12ld", ALStorageGetSize( ALEntryGetStorage( entry ) ) );
 | |
|      printf( "%12ld", ALEntryGetCompressedSize( entry ) );
 | |
|      printf( " %s", ALEntryGetComment( entry ) );
 | |
|      printf( "\n" );
 | |
|      entry = ALEntryGetNextEntry( entry );
 | |
|  }
 | |
|  printf( "----------------------------------------------------------------------------\n" );
 | |
|  printf( " Total          " );
 | |
|  printf( "%9ld", total );
 | |
|  printf( "%12ld", tsize );
 | |
|  printf( "%12ld\n", tcomp );
 | |
|  return 0;
 | |
| }
 |