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