Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

127 lines
3.0 KiB

/* File: C:\WACKER\xfer\cmprs0.c
* created from HAWIN sources
* cmprs0.c -- Functions common to compression and decompression
*
* Copyright 1989,1994 by Hilgraeve Inc. -- Monroe, MI
* All rights reserved
*
* $Revision: 1 $
* $Date: 10/05/98 1:16p $
*/
#include <windows.h>
#include <tdll\stdtyp.h>
#include <tdll\mc.h>
#if !defined(BYTE)
#define BYTE unsigned char
#endif
#include "cmprs.h"
#include "cmprs.hh"
// debug_init(__FILE__)
/* Routines to handle overall compression enable and disable. */
void *compress_tblspace;
/* These variables are shared by the compression and decompression routines */
unsigned long ulHoldReg;
int sBitsLeft;
int sCodeBits;
unsigned int usMaxCode;
unsigned int usFreeCode;
unsigned int usxCmprsStatus = COMPRESS_IDLE;
int fxLastBuildGood = FALSE;
int fFlushable = FALSE; // True if compression stream can
// flushed and resumed
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* compress_enable
*
* DESCRIPTION:
* Called to determine whether compression is feasible, and if it is to
* allocate the necessary memory to do so.
*
* ARGUMENTS:
* none
*
* RETURNS:
* If compression was already enabled, returns TRUE.
* If compression was not previously enabled, or if it was disabled,
* returns TRUE if memory is available for compression, FALSE otherwise.
*/
int compress_enable(void)
{
#if defined(DOS_HOST)
static struct s_cmprs_node tbl[MAXNODES+2];
compress_tblspace = (void *)&tbl;
return TRUE;
#else
if (compress_tblspace != (void *)0)
return(TRUE);
else
{
compress_tblspace = malloc(sizeof(struct s_cmprs_node)*(MAXNODES+2));
return(compress_tblspace != (void *)0);
}
#endif
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* compress_disable
*
* DESCRIPTION
* Disables file compression and released memory used for compression tables.
* Has no effect if compression was not enabled.
*
* ARGUMENTS:
* none
*
* RETURNS:
* nothing
*/
void compress_disable(void)
{
#if !defined(DOS_HOST)
if (compress_tblspace != (void *)0)
free(compress_tblspace);
compress_tblspace = (void *)0;
#endif
usxCmprsStatus = COMPRESS_IDLE;
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* compress_status
*
* DESCRIPTION:
* Returns current status of compression -- whether idle, active, or shutdown.
* Applies to both compression and decompression.
*
* ARGUMENTS:
* none
*
* RETURNS:
* COMPRESS_IDLE if compression has not been activated or has been stopped
* normally
* COMPRESS_ACTIVE if compression is currently active.
* COMPRESS_SHUTDOWN if compression has been activated but shut itself down
* upon determining that the compression is not effective
* on the current file.
*/
unsigned int compress_status(void)
{
return usxCmprsStatus;
}
/* end of cmprs0.c */