- First LZMA enhanced NSIS version - experimental

- Added SetCompressorDictSize (only works for LZMA)
- Added SetCompressionLevel (only "works" for zlib and bzip2) - doesn't work for now
- Section is only supposed to get 4 parameters if /o is specified
- Updated version numbers


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3190 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2003-11-24 00:08:58 +00:00
parent 320cefa4b0
commit 594c3ed0f6
84 changed files with 8083 additions and 41 deletions

View file

@ -257,6 +257,9 @@ CEXEBuild::CEXEBuild()
#else
build_compress_whole = false;
#endif
build_compress=1;
build_compress_level=9;
build_compress_dict_size=1<<23;
cur_entries=&build_entries;
cur_datablock=&build_datablock;
@ -288,7 +291,6 @@ CEXEBuild::CEXEBuild()
#endif
build_overwrite=build_last_overwrite=0;
build_compress=1;
build_crcchk=1;
build_datesave=1;
build_optimize_datablock=1;
@ -770,7 +772,11 @@ int CEXEBuild::add_db_data(IMMap *map) // returns offset
db->resize(st + bufferlen + sizeof(int));
int n;
if ((n = compressor->Init(9)) != C_OK)
if (compressor == &lzma_compressor)
n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size);
else
n = compressor->Init(build_compress_level);
if (n != C_OK)
{
ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d).\n", n);
extern void quit(); quit();
@ -907,7 +913,11 @@ int CEXEBuild::add_data(const char *data, int length, IGrowBuf *dblock) // retur
dblock->resize(st+bufferlen+sizeof(int));
int n;
if ((n=compressor->Init(9)) != C_OK)
if (compressor == &lzma_compressor)
n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size);
else
n = compressor->Init(build_compress_level);
if (n != C_OK)
{
ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d).\n",n);
extern void quit(); quit();
@ -2396,9 +2406,14 @@ int CEXEBuild::write_output(void)
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
if (build_compress_whole)
{
if ((compressor->Init(9)) != C_OK)
int n;
if (compressor == &lzma_compressor)
n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size);
else
n = compressor->Init(build_compress_level);
if (n != C_OK)
{
ERROR_MSG("Error: deflateInit() returned < 0\n");
ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d).\n", n);
return PS_ERROR;
}
}
@ -2581,7 +2596,8 @@ int CEXEBuild::write_output(void)
int l = min(build_filebuflen, left);
char *dbptr = (char *) build_datablock.get(dbl - left, l);
#ifdef NSIS_CONFIG_COMPRESSION_SUPPORT
if (build_compress_whole) {
if (build_compress_whole)
{
if (deflateToFile(fp,dbptr,l))
{
fclose(fp);
@ -2794,10 +2810,15 @@ int CEXEBuild::uninstall_generate()
// compress uninstaller too
{
char obuf[65536];
if ((compressor->Init(9)) != C_OK)
int n;
if (compressor == &lzma_compressor)
n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size);
else
n = compressor->Init(build_compress_level);
if (n != C_OK)
{
ERROR_MSG("Error: deflateInit() returned < 0\n");
return PS_ERROR;
ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d).\n", n);
extern void quit(); quit();
}
compressor->SetNextIn((char*)uhd.get(), uhd.getlen());