81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * EX03CON.C
 | 
						|
 *
 | 
						|
 *  C/DOS Example program for ArchiveLib 2.0
 | 
						|
 *
 | 
						|
 *  Copyright (c) Greenleaf Software, Inc. 1994 - 1996
 | 
						|
 *  All Rights Reserved
 | 
						|
 *
 | 
						|
 * MEMBERS/FUNCTIONS DEMONSTRATED
 | 
						|
 *
 | 
						|
 *  ALArchiveDelete()
 | 
						|
 *  ALEntryGetNextEntry()
 | 
						|
 *  ALEntrySetMark()
 | 
						|
 *  ALEntryListClearMarks()
 | 
						|
 *  ALEntryListGetFirstEntry()
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 *  This example program takes the existing dos00.gal archive (create it
 | 
						|
 *  with EX01CON if you don't have it) and deletes every other entry.
 | 
						|
 *  Note that when we call Delete(), we specify an Archive with an empty
 | 
						|
 *  name, which causes ALArchiveBase::Delete() to rename the input to a
 | 
						|
 *  backup, and rename the output to the original input name.  Clear?
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  February 1, 1996  2.0A  : Second release
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <conio.h>
 | 
						|
 | 
						|
#include "arclib.h"
 | 
						|
#include "pkarc.h"
 | 
						|
#include "glarc.h"
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
 hALArchive archive;
 | 
						|
 hALArchive temp;
 | 
						|
 hALEntryList list;
 | 
						|
 hALEntry entry;
 | 
						|
 long total = 0;
 | 
						|
 | 
						|
 printf( "Archive Library 2.0\nEX03CON.C\n\n" );
 | 
						|
 printf( "This example program takes the existing dos00.gal archive (create it\n" );
 | 
						|
 printf( "with EX00CON if you don't have it) and deletes every other entry.\n" );
 | 
						|
 printf( "Note that when we call Delete(), we specify an Archive with an empty\n" );
 | 
						|
 printf( "name, which causes ALArchiveBase::Delete() to rename the input to a\n" );
 | 
						|
 printf( "backup, and rename the output to the original input name.\n" );
 | 
						|
 getch();
 | 
						|
 | 
						|
 printf( "\nDeleting every other object from "
 | 
						|
#if defined( ZIP )
 | 
						|
 "dos00.zip\n" );
 | 
						|
 archive = newALPkArchive( "dos00.zip" );
 | 
						|
 temp = newALPkArchive( "" );
 | 
						|
 list = newALListPkTools( 0, 6, 13, 6 );
 | 
						|
#else
 | 
						|
 "dos00.gal\n" );
 | 
						|
 archive = newALGlArchive( "dos00.gal" );
 | 
						|
 temp = newALGlArchive( "" );
 | 
						|
 list = newALListGlTools( 0, AL_GREENLEAF_LEVEL_4 );
 | 
						|
#endif
 | 
						|
 ALArchiveReadDirectory( archive, list );
 | 
						|
 ALEntryListClearMarks( list, 0 ); /* Clear every mark */
 | 
						|
 | 
						|
 entry = ALEntryListGetFirstEntry( list );
 | 
						|
 while ( entry ) {
 | 
						|
      total++;
 | 
						|
      if (total % 2) {
 | 
						|
          ALEntrySetMark( entry );
 | 
						|
          printf( "Deleting: %s\n",
 | 
						|
                  ALStorageGetName( ALEntryGetStorage( entry ) ) );
 | 
						|
      }
 | 
						|
      entry = ALEntryGetNextEntry( entry );
 | 
						|
 }
 | 
						|
 return ALArchiveDelete( archive, list, temp );
 | 
						|
}
 |