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 );
 | |
| }
 |