which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5403 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  Copyright (C) 1996 Mike White
 | |
|  Permission is granted to any individual or institution to use, copy, or
 | |
|  redistribute this software so long as all of the original files are included,
 | |
|  that it is not sold for profit, and that this copyright notice is retained.
 | |
| 
 | |
| */
 | |
| /* MS Windows Setup  and Take-Down functions bracket calls to
 | |
|  * process_zipfiles().
 | |
|  * These functions allocate and free the necessary buffers, set and clear
 | |
|  * any global variables so that  process_zipfiles()  can be called multiple
 | |
|  * times in the same session of WiZ.
 | |
|  *
 | |
|  * Based on Robert Heath's code in a module I no longer remember
 | |
|  * the name of.
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <windows.h>
 | |
| #ifdef __RSXNT__
 | |
| #  include "win32/rsxntwin.h"
 | |
| #endif
 | |
| #include "version.h"
 | |
| #define UNZIP_INTERNAL
 | |
| #include "unzip.h"
 | |
| #include "windll.h"
 | |
| #include "consts.h"
 | |
| 
 | |
| /* Added typecasts to prevent potential "type mismatch" error messages. */
 | |
| #ifdef REENTRANT
 | |
| #  undef G
 | |
| #  undef __G
 | |
| #  undef __G__
 | |
| #  define G                   (*(struct Globals *)pG)
 | |
| #  define __G                 (struct Globals *)pG
 | |
| #  define __G__               (struct Globals *)pG,
 | |
| #endif
 | |
| 
 | |
| extern HANDLE hwildZipFN;
 | |
| /*
 | |
|     ncflag    = write to stdout if true
 | |
|     ntflag    = test zip file
 | |
|     nvflag    = verbose listing
 | |
|     nUflag    = "update" (extract only newer/new files
 | |
|     nzflag    = display zip file comment
 | |
|     ndflag    = all args are files/dir to be extracted
 | |
|     noflag    = overwrite all files
 | |
|     naflag    = do ASCII-EBCDIC and/or end of line translation
 | |
|     nZIflag   = get Zip Info if true
 | |
|     fPrivilege = restore ACL's if 1, use privileges if 2
 | |
|     lpszZipFN = zip file name
 | |
| */
 | |
| 
 | |
| BOOL WINAPI Unz_SetOpts(pG, C)
 | |
| zvoid * pG;
 | |
| LPDCL C;
 | |
| {
 | |
|     G.qflag=C->fQuiet;  /* Quiet flag */
 | |
|     G.pfnames = &fnames[0];       /* assign default file name vector */
 | |
| 
 | |
|     G.jflag = !C->ndflag;
 | |
|     G.cflag = C->ncflag;
 | |
|     G.overwrite_all = C->noflag;
 | |
|     G.tflag = C->ntflag ;
 | |
|     G.vflag = C->nvflag;
 | |
|     G.zflag = C->nzflag;
 | |
|     G.uflag = C->nUflag;
 | |
|     G.aflag = C->naflag;
 | |
|     G.uflag = C->ExtractOnlyNewer;
 | |
| #ifdef WIN32
 | |
|     G.X_flag = C->fPrivilege;
 | |
| #endif
 | |
|     G.overwrite_all = C->Overwrite;
 | |
|     G.overwrite_none = !G.overwrite_all;
 | |
|     G.sflag = C->SpaceToUnderscore; /* Translate spaces to underscores? */
 | |
|     if (C->nZIflag)
 | |
|       {
 | |
|       G.zipinfo_mode = TRUE;
 | |
|       G.hflag = TRUE;
 | |
|       G.lflag = 10;
 | |
|       G.qflag = 2;
 | |
|       }
 | |
|     else
 | |
|       {
 | |
|       G.zipinfo_mode = FALSE;
 | |
|       }
 | |
| 
 | |
|     G.extract_flag = (!G.zipinfo_mode &&
 | |
|                       !G.cflag && !G.tflag && !G.vflag && !G.zflag
 | |
| #ifdef TIMESTAMP
 | |
|                       && !G.T_flag
 | |
| #endif
 | |
|                      );
 | |
| 
 | |
|     G.xfilespecs = 0;
 | |
| 
 | |
| /* G.wildzipfn needs to be initialized so that do_wild does not wind
 | |
|    up clearing out the zip file name when it returns in process.c
 | |
| */
 | |
|     if ((hwildZipFN = GlobalAlloc(GMEM_MOVEABLE, FILNAMSIZ))== (HGLOBAL)NULL)
 | |
|         return FALSE;
 | |
| 
 | |
|     G.wildzipfn = GlobalLock(hwildZipFN);
 | |
|     lstrcpy(G.wildzipfn, C->lpszZipFN);
 | |
|     _ISO_INTERN(G.wildzipfn);
 | |
| 
 | |
|     return TRUE;    /* set up was OK */
 | |
| }
 | |
| 
 | |
| void FreeDllMem(__GPRO)
 | |
| {
 | |
|     if (G.wildzipfn) {
 | |
|         GlobalUnlock(hwildZipFN);
 | |
|         G.wildzipfn = NULL;
 | |
|     }
 | |
|     if (hwildZipFN)
 | |
|         hwildZipFN = GlobalFree(hwildZipFN);
 | |
| 
 | |
|     G.zipinfo_mode = FALSE;
 | |
| }
 |