Made a number of changes to allow NufxLib to be used as a Win32 DLL.

This commit is contained in:
Andy McFadden 2002-12-06 01:04:20 +00:00
parent fef1a7bed5
commit 4c7aee4815
7 changed files with 984 additions and 133 deletions

View File

@ -104,7 +104,7 @@ Nu_ValidateNuArchive(const NuArchive* pArchive)
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuStreamOpenRO(FILE* infp, NuArchive** ppArchive)
{
NuError err;
@ -117,7 +117,7 @@ NuStreamOpenRO(FILE* infp, NuArchive** ppArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuContents(NuArchive* pArchive, NuCallback contentFunc)
{
NuError err;
@ -134,7 +134,7 @@ NuContents(NuArchive* pArchive, NuCallback contentFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuExtract(NuArchive* pArchive)
{
NuError err;
@ -151,7 +151,7 @@ NuExtract(NuArchive* pArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuTest(NuArchive* pArchive)
{
NuError err;
@ -175,7 +175,7 @@ NuTest(NuArchive* pArchive)
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuOpenRO(const char* filename, NuArchive** ppArchive)
{
NuError err;
@ -185,7 +185,7 @@ NuOpenRO(const char* filename, NuArchive** ppArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuExtractRecord(NuArchive* pArchive, NuRecordIdx recordIdx)
{
NuError err;
@ -199,7 +199,7 @@ NuExtractRecord(NuArchive* pArchive, NuRecordIdx recordIdx)
return err;
}
NuError
NUFXLIB_API NuError
NuExtractThread(NuArchive* pArchive, NuThreadIdx threadIdx,
NuDataSink* pDataSink)
{
@ -214,7 +214,7 @@ NuExtractThread(NuArchive* pArchive, NuThreadIdx threadIdx,
return err;
}
NuError
NUFXLIB_API NuError
NuGetRecord(NuArchive* pArchive, NuRecordIdx recordIdx,
const NuRecord** ppRecord)
{
@ -229,7 +229,7 @@ NuGetRecord(NuArchive* pArchive, NuRecordIdx recordIdx,
return err;
}
NuError
NUFXLIB_API NuError
NuGetRecordIdxByName(NuArchive* pArchive, const char* name,
NuRecordIdx* pRecordIdx)
{
@ -244,7 +244,7 @@ NuGetRecordIdxByName(NuArchive* pArchive, const char* name,
return err;
}
NuError
NUFXLIB_API NuError
NuGetRecordIdxByPosition(NuArchive* pArchive, unsigned long position,
NuRecordIdx* pRecordIdx)
{
@ -266,7 +266,7 @@ NuGetRecordIdxByPosition(NuArchive* pArchive, unsigned long position,
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuOpenRW(const char* archivePathname, const char* tmpPathname,
unsigned long flags, NuArchive** ppArchive)
{
@ -278,7 +278,7 @@ NuOpenRW(const char* archivePathname, const char* tmpPathname,
return err;
}
NuError
NUFXLIB_API NuError
NuFlush(NuArchive* pArchive, long* pStatusFlags)
{
NuError err;
@ -292,7 +292,7 @@ NuFlush(NuArchive* pArchive, long* pStatusFlags)
return err;
}
NuError
NUFXLIB_API NuError
NuAbort(NuArchive* pArchive)
{
NuError err;
@ -306,7 +306,7 @@ NuAbort(NuArchive* pArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuAddRecord(NuArchive* pArchive, const NuFileDetails* pFileDetails,
NuRecordIdx* pRecordIdx)
{
@ -321,7 +321,7 @@ NuAddRecord(NuArchive* pArchive, const NuFileDetails* pFileDetails,
return err;
}
NuError
NUFXLIB_API NuError
NuAddThread(NuArchive* pArchive, NuRecordIdx recordIdx, NuThreadID threadID,
NuDataSource* pDataSource, NuThreadIdx* pThreadIdx)
{
@ -337,7 +337,7 @@ NuAddThread(NuArchive* pArchive, NuRecordIdx recordIdx, NuThreadID threadID,
return err;
}
NuError
NUFXLIB_API NuError
NuAddFile(NuArchive* pArchive, const char* pathname,
const NuFileDetails* pFileDetails, short isFromRsrcFork,
NuRecordIdx* pRecordIdx)
@ -354,7 +354,7 @@ NuAddFile(NuArchive* pArchive, const char* pathname,
return err;
}
NuError
NUFXLIB_API NuError
NuRename(NuArchive* pArchive, NuRecordIdx recordIdx, const char* pathname,
char fssep)
{
@ -370,7 +370,7 @@ NuRename(NuArchive* pArchive, NuRecordIdx recordIdx, const char* pathname,
}
NuError
NUFXLIB_API NuError
NuSetRecordAttr(NuArchive* pArchive, NuRecordIdx recordIdx,
const NuRecordAttr* pRecordAttr)
{
@ -385,7 +385,7 @@ NuSetRecordAttr(NuArchive* pArchive, NuRecordIdx recordIdx,
return err;
}
NuError
NUFXLIB_API NuError
NuUpdatePresizedThread(NuArchive* pArchive, NuThreadIdx threadIdx,
NuDataSource* pDataSource, long* pMaxLen)
{
@ -401,7 +401,7 @@ NuUpdatePresizedThread(NuArchive* pArchive, NuThreadIdx threadIdx,
return err;
}
NuError
NUFXLIB_API NuError
NuDelete(NuArchive* pArchive)
{
NuError err;
@ -415,7 +415,7 @@ NuDelete(NuArchive* pArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuDeleteRecord(NuArchive* pArchive, NuRecordIdx recordIdx)
{
NuError err;
@ -429,7 +429,7 @@ NuDeleteRecord(NuArchive* pArchive, NuRecordIdx recordIdx)
return err;
}
NuError
NUFXLIB_API NuError
NuDeleteThread(NuArchive* pArchive, NuThreadIdx threadIdx)
{
NuError err;
@ -450,7 +450,7 @@ NuDeleteThread(NuArchive* pArchive, NuThreadIdx threadIdx)
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuClose(NuArchive* pArchive)
{
NuError err;
@ -466,7 +466,7 @@ NuClose(NuArchive* pArchive)
return err;
}
NuError
NUFXLIB_API NuError
NuGetMasterHeader(NuArchive* pArchive, const NuMasterHeader** ppMasterHeader)
{
NuError err;
@ -477,7 +477,7 @@ NuGetMasterHeader(NuArchive* pArchive, const NuMasterHeader** ppMasterHeader)
return err;
}
NuError
NUFXLIB_API NuError
NuGetExtraData(NuArchive* pArchive, void** ppData)
{
NuError err;
@ -490,7 +490,7 @@ NuGetExtraData(NuArchive* pArchive, void** ppData)
return err;
}
NuError
NUFXLIB_API NuError
NuSetExtraData(NuArchive* pArchive, void* pData)
{
NuError err;
@ -501,7 +501,7 @@ NuSetExtraData(NuArchive* pArchive, void* pData)
return err;
}
NuError
NUFXLIB_API NuError
NuGetValue(NuArchive* pArchive, NuValueID ident, NuValue* pValue)
{
NuError err;
@ -512,7 +512,7 @@ NuGetValue(NuArchive* pArchive, NuValueID ident, NuValue* pValue)
return err;
}
NuError
NUFXLIB_API NuError
NuSetValue(NuArchive* pArchive, NuValueID ident, NuValue value)
{
NuError err;
@ -523,7 +523,7 @@ NuSetValue(NuArchive* pArchive, NuValueID ident, NuValue value)
return err;
}
NuError
NUFXLIB_API NuError
NuGetAttr(NuArchive* pArchive, NuAttrID ident, NuAttr* pAttr)
{
NuError err;
@ -534,7 +534,7 @@ NuGetAttr(NuArchive* pArchive, NuAttrID ident, NuAttr* pAttr)
return err;
}
NuError
NUFXLIB_API NuError
NuDebugDumpArchive(NuArchive* pArchive)
{
#if defined(DEBUG_MSGS)
@ -554,7 +554,7 @@ NuDebugDumpArchive(NuArchive* pArchive)
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuCreateDataSourceForFile(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, const char* pathname, short isFromRsrcFork,
NuDataSource** ppDataSource)
@ -563,7 +563,7 @@ NuCreateDataSourceForFile(NuThreadFormat threadFormat, short doClose,
otherLen, pathname, (Boolean)(isFromRsrcFork != 0), ppDataSource);
}
NuError
NUFXLIB_API NuError
NuCreateDataSourceForFP(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, FILE* fp, long offset, long length,
NuDataSource** ppDataSource)
@ -572,7 +572,7 @@ NuCreateDataSourceForFP(NuThreadFormat threadFormat, short doClose,
otherLen, fp, offset, length, ppDataSource);
}
NuError
NUFXLIB_API NuError
NuCreateDataSourceForBuffer(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, const unsigned char* buffer, long offset,
long length, NuDataSource** ppDataSource)
@ -581,13 +581,13 @@ NuCreateDataSourceForBuffer(NuThreadFormat threadFormat, short doClose,
otherLen, buffer, offset, length, ppDataSource);
}
NuError
NUFXLIB_API NuError
NuFreeDataSource(NuDataSource* pDataSource)
{
return Nu_DataSourceFree(pDataSource);
}
NuError
NUFXLIB_API NuError
NuDataSourceSetRawCrc(NuDataSource* pDataSource, unsigned short crc)
{
if (pDataSource == nil)
@ -596,7 +596,7 @@ NuDataSourceSetRawCrc(NuDataSource* pDataSource, unsigned short crc)
return kNuErrNone;
}
NuError
NUFXLIB_API NuError
NuCreateDataSinkForFile(short doExpand, NuValue convertEOL,
const char* pathname, char fssep, NuDataSink** ppDataSink)
{
@ -604,7 +604,7 @@ NuCreateDataSinkForFile(short doExpand, NuValue convertEOL,
fssep, ppDataSink);
}
NuError
NUFXLIB_API NuError
NuCreateDataSinkForFP(short doExpand, NuValue convertEOL, FILE* fp,
NuDataSink** ppDataSink)
{
@ -612,7 +612,7 @@ NuCreateDataSinkForFP(short doExpand, NuValue convertEOL, FILE* fp,
ppDataSink);
}
NuError
NUFXLIB_API NuError
NuCreateDataSinkForBuffer(short doExpand, NuValue convertEOL,
unsigned char* buffer, unsigned long bufLen, NuDataSink** ppDataSink)
{
@ -620,13 +620,13 @@ NuCreateDataSinkForBuffer(short doExpand, NuValue convertEOL,
bufLen, ppDataSink);
}
NuError
NUFXLIB_API NuError
NuFreeDataSink(NuDataSink* pDataSink)
{
return Nu_DataSinkFree(pDataSink);
}
NuError
NUFXLIB_API NuError
NuDataSinkGetOutCount(NuDataSink* pDataSink, ulong* pOutCount)
{
if (pDataSink == nil || pOutCount == nil)
@ -643,13 +643,13 @@ NuDataSinkGetOutCount(NuDataSink* pDataSink, ulong* pOutCount)
* ===========================================================================
*/
const char*
NUFXLIB_API const char*
NuStrError(NuError err)
{
return Nu_StrError(err);
}
NuError
NUFXLIB_API NuError
NuGetVersion(long* pMajorVersion, long* pMinorVersion, long* pBugVersion,
const char** ppBuildDate, const char** ppBuildFlags)
{
@ -657,7 +657,7 @@ NuGetVersion(long* pMajorVersion, long* pMinorVersion, long* pBugVersion,
ppBuildDate, ppBuildFlags);
}
NuError
NUFXLIB_API NuError
NuTestFeature(NuFeature feature)
{
NuError err = kNuErrUnsupFeature;
@ -696,7 +696,7 @@ NuTestFeature(NuFeature feature)
return err;
}
void
NUFXLIB_API void
NuRecordCopyAttr(NuRecordAttr* pRecordAttr, const NuRecord* pRecord)
{
pRecordAttr->fileSysID = pRecord->recFileSysID;
@ -709,7 +709,7 @@ NuRecordCopyAttr(NuRecordAttr* pRecordAttr, const NuRecord* pRecord)
pRecordAttr->archiveWhen = pRecord->recArchiveWhen;
}
NuError
NUFXLIB_API NuError
NuRecordCopyThreads(const NuRecord* pNuRecord, NuThread** ppThreads)
{
if (pNuRecord == nil || ppThreads == nil)
@ -727,7 +727,7 @@ NuRecordCopyThreads(const NuRecord* pNuRecord, NuThread** ppThreads)
return kNuErrNone;
}
unsigned long
NUFXLIB_API unsigned long
NuRecordGetNumThreads(const NuRecord* pNuRecord)
{
if (pNuRecord == nil)
@ -736,7 +736,7 @@ NuRecordGetNumThreads(const NuRecord* pNuRecord)
return pNuRecord->recTotalThreads;
}
const NuThread*
NUFXLIB_API const NuThread*
NuThreadGetByIdx(const NuThread* pNuThread, long idx)
{
if (pNuThread == nil)
@ -744,7 +744,7 @@ NuThreadGetByIdx(const NuThread* pNuThread, long idx)
return &pNuThread[idx]; /* can't range-check here */
}
short
NUFXLIB_API short
NuIsPresizedThreadID(NuThreadID threadID)
{
return Nu_IsPresizedThreadID(threadID);
@ -757,7 +757,7 @@ NuIsPresizedThreadID(NuThreadID threadID)
* ===========================================================================
*/
NuError
NUFXLIB_API NuError
NuSetSelectionFilter(NuArchive* pArchive, NuCallback filterFunc)
{
NuError err;
@ -770,7 +770,7 @@ NuSetSelectionFilter(NuArchive* pArchive, NuCallback filterFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuSetOutputPathnameFilter(NuArchive* pArchive, NuCallback filterFunc)
{
NuError err;
@ -783,7 +783,7 @@ NuSetOutputPathnameFilter(NuArchive* pArchive, NuCallback filterFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuSetProgressUpdater(NuArchive* pArchive, NuCallback updateFunc)
{
NuError err;
@ -796,7 +796,7 @@ NuSetProgressUpdater(NuArchive* pArchive, NuCallback updateFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuSetErrorHandler(NuArchive* pArchive, NuCallback errorFunc)
{
NuError err;
@ -809,7 +809,7 @@ NuSetErrorHandler(NuArchive* pArchive, NuCallback errorFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuSetErrorMessageHandler(NuArchive* pArchive, NuCallback messageHandlerFunc)
{
NuError err;
@ -822,7 +822,7 @@ NuSetErrorMessageHandler(NuArchive* pArchive, NuCallback messageHandlerFunc)
return err;
}
NuError
NUFXLIB_API NuError
NuSetGlobalErrorMessageHandler(NuCallback messageHandlerFunc)
{
/*Assert(!((ulong)messageHandlerFunc % 4));*/

View File

@ -37,7 +37,9 @@ typedef int FLAG;
#endif
#define CONST const
#define FAR
#ifndef FAR
# define FAR
#endif
#define NULLPTR(type) ((type FAR *) NULL)
#define ALLOCTYPE void

776
nufxlib-0/Makefile.dll Executable file
View File

@ -0,0 +1,776 @@
#
# Makefile for building nufxlib as a DLL under Visual C++ (tested with 6.0).
#
# Run with "nmake /f Makefile.dll".
#
# To build without debugging info, use "nmake nodebug=1".
# To build with libz, use "nmake libz=1".
# To build with libbz2, use "nmake libbz2=1".
#
# For libz/libbz2, you need to have the appropriate library either
# in this directory or in a standard location that the linker can find
#
CFG=nufxlib - Win32 Debug
!ifdef NODEBUG
CFG=nufxlib - Win32 Release
!endif
MY_BUILD_FLAGS=
MY_LIB_FLAGS=
!ifdef LIBZ
MY_BUILD_FLAGS = $(MY_BUILD_FLAGS) /D "ENABLE_DEFLATE"
MY_LIB_FLAGS = zlib.lib $(MY_LIB_FLAGS)
!endif
!ifdef LIBBZ2
MY_BUILD_FLAGS = $(MY_BUILD_FLAGS) /D "ENABLE_BZIP2"
MY_LIB_FLAGS = libbz2.lib $(MY_LIB_FLAGS)
!endif
# Microsoft Developer Studio Generated NMAKE File, Based on nufxlib.dsp
!IF "$(CFG)" == ""
CFG=nufxlib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to nufxlib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "nufxlib - Win32 Release" && "$(CFG)" != "nufxlib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "nufxlib.mak" CFG="nufxlib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "nufxlib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "nufxlib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "nufxlib - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\nufxlib.dll"
CLEAN :
-@erase "$(INTDIR)\Archive.obj"
-@erase "$(INTDIR)\ArchiveIO.obj"
-@erase "$(INTDIR)\Bzip2.obj"
-@erase "$(INTDIR)\Compress.obj"
-@erase "$(INTDIR)\Crc16.obj"
-@erase "$(INTDIR)\Debug.obj"
-@erase "$(INTDIR)\Deferred.obj"
-@erase "$(INTDIR)\Deflate.obj"
-@erase "$(INTDIR)\Entry.obj"
-@erase "$(INTDIR)\Expand.obj"
-@erase "$(INTDIR)\FileIO.obj"
-@erase "$(INTDIR)\Funnel.obj"
-@erase "$(INTDIR)\Lzc.obj"
-@erase "$(INTDIR)\Lzw.obj"
-@erase "$(INTDIR)\MiscStuff.obj"
-@erase "$(INTDIR)\MiscUtils.obj"
-@erase "$(INTDIR)\Record.obj"
-@erase "$(INTDIR)\SourceSink.obj"
-@erase "$(INTDIR)\Squeeze.obj"
-@erase "$(INTDIR)\Thread.obj"
-@erase "$(INTDIR)\Value.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\Version.obj"
-@erase "$(OUTDIR)\nufxlib.dll"
-@erase "$(OUTDIR)\nufxlib.exp"
-@erase "$(OUTDIR)\nufxlib.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NUFXLIB_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c $(MY_BUILD_FLAGS)
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nufxlib.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib $(MY_LIB_FLAGS) /nologo /dll /incremental:no /pdb:"$(OUTDIR)\nufxlib.pdb" /machine:I386 /out:"$(OUTDIR)\nufxlib.dll" /implib:"$(OUTDIR)\nufxlib.lib"
LINK32_OBJS= \
"$(INTDIR)\Archive.obj" \
"$(INTDIR)\ArchiveIO.obj" \
"$(INTDIR)\Bzip2.obj" \
"$(INTDIR)\Compress.obj" \
"$(INTDIR)\Crc16.obj" \
"$(INTDIR)\Debug.obj" \
"$(INTDIR)\Deferred.obj" \
"$(INTDIR)\Deflate.obj" \
"$(INTDIR)\Entry.obj" \
"$(INTDIR)\Expand.obj" \
"$(INTDIR)\FileIO.obj" \
"$(INTDIR)\Funnel.obj" \
"$(INTDIR)\Lzc.obj" \
"$(INTDIR)\Lzw.obj" \
"$(INTDIR)\MiscStuff.obj" \
"$(INTDIR)\MiscUtils.obj" \
"$(INTDIR)\Record.obj" \
"$(INTDIR)\SourceSink.obj" \
"$(INTDIR)\Squeeze.obj" \
"$(INTDIR)\Thread.obj" \
"$(INTDIR)\Value.obj" \
"$(INTDIR)\Version.obj"
"$(OUTDIR)\nufxlib.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
SOURCE="$(InputPath)"
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
ALL : $(DS_POSTBUILD_DEP)
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
$(DS_POSTBUILD_DEP) : "$(OUTDIR)\nufxlib.dll"
copy Release\nufxlib.dll .
copy Release\nufxlib.lib .
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\nufxlib.dll" "$(OUTDIR)\nufxlib.bsc"
CLEAN :
-@erase "$(INTDIR)\Archive.obj"
-@erase "$(INTDIR)\Archive.sbr"
-@erase "$(INTDIR)\ArchiveIO.obj"
-@erase "$(INTDIR)\ArchiveIO.sbr"
-@erase "$(INTDIR)\Bzip2.obj"
-@erase "$(INTDIR)\Bzip2.sbr"
-@erase "$(INTDIR)\Compress.obj"
-@erase "$(INTDIR)\Compress.sbr"
-@erase "$(INTDIR)\Crc16.obj"
-@erase "$(INTDIR)\Crc16.sbr"
-@erase "$(INTDIR)\Debug.obj"
-@erase "$(INTDIR)\Debug.sbr"
-@erase "$(INTDIR)\Deferred.obj"
-@erase "$(INTDIR)\Deferred.sbr"
-@erase "$(INTDIR)\Deflate.obj"
-@erase "$(INTDIR)\Deflate.sbr"
-@erase "$(INTDIR)\Entry.obj"
-@erase "$(INTDIR)\Entry.sbr"
-@erase "$(INTDIR)\Expand.obj"
-@erase "$(INTDIR)\Expand.sbr"
-@erase "$(INTDIR)\FileIO.obj"
-@erase "$(INTDIR)\FileIO.sbr"
-@erase "$(INTDIR)\Funnel.obj"
-@erase "$(INTDIR)\Funnel.sbr"
-@erase "$(INTDIR)\Lzc.obj"
-@erase "$(INTDIR)\Lzc.sbr"
-@erase "$(INTDIR)\Lzw.obj"
-@erase "$(INTDIR)\Lzw.sbr"
-@erase "$(INTDIR)\MiscStuff.obj"
-@erase "$(INTDIR)\MiscStuff.sbr"
-@erase "$(INTDIR)\MiscUtils.obj"
-@erase "$(INTDIR)\MiscUtils.sbr"
-@erase "$(INTDIR)\Record.obj"
-@erase "$(INTDIR)\Record.sbr"
-@erase "$(INTDIR)\SourceSink.obj"
-@erase "$(INTDIR)\SourceSink.sbr"
-@erase "$(INTDIR)\Squeeze.obj"
-@erase "$(INTDIR)\Squeeze.sbr"
-@erase "$(INTDIR)\Thread.obj"
-@erase "$(INTDIR)\Thread.sbr"
-@erase "$(INTDIR)\Value.obj"
-@erase "$(INTDIR)\Value.sbr"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\Version.obj"
-@erase "$(INTDIR)\Version.sbr"
-@erase "$(OUTDIR)\nufxlib.bsc"
-@erase "$(OUTDIR)\nufxlib.dll"
-@erase "$(OUTDIR)\nufxlib.exp"
-@erase "$(OUTDIR)\nufxlib.ilk"
-@erase "$(OUTDIR)\nufxlib.lib"
-@erase "$(OUTDIR)\nufxlib.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NUFXLIB_EXPORTS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c $(MY_BUILD_FLAGS)
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nufxlib.bsc"
BSC32_SBRS= \
"$(INTDIR)\Archive.sbr" \
"$(INTDIR)\ArchiveIO.sbr" \
"$(INTDIR)\Bzip2.sbr" \
"$(INTDIR)\Compress.sbr" \
"$(INTDIR)\Crc16.sbr" \
"$(INTDIR)\Debug.sbr" \
"$(INTDIR)\Deferred.sbr" \
"$(INTDIR)\Deflate.sbr" \
"$(INTDIR)\Entry.sbr" \
"$(INTDIR)\Expand.sbr" \
"$(INTDIR)\FileIO.sbr" \
"$(INTDIR)\Funnel.sbr" \
"$(INTDIR)\Lzc.sbr" \
"$(INTDIR)\Lzw.sbr" \
"$(INTDIR)\MiscStuff.sbr" \
"$(INTDIR)\MiscUtils.sbr" \
"$(INTDIR)\Record.sbr" \
"$(INTDIR)\SourceSink.sbr" \
"$(INTDIR)\Squeeze.sbr" \
"$(INTDIR)\Thread.sbr" \
"$(INTDIR)\Value.sbr" \
"$(INTDIR)\Version.sbr"
"$(OUTDIR)\nufxlib.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
$(BSC32) @<<
$(BSC32_FLAGS) $(BSC32_SBRS)
<<
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib $(MY_LIB_FLAGS) /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\nufxlib.pdb" /debug /machine:I386 /out:"$(OUTDIR)\nufxlib.dll" /implib:"$(OUTDIR)\nufxlib.lib" /pdbtype:sept
LINK32_OBJS= \
"$(INTDIR)\Archive.obj" \
"$(INTDIR)\ArchiveIO.obj" \
"$(INTDIR)\Bzip2.obj" \
"$(INTDIR)\Compress.obj" \
"$(INTDIR)\Crc16.obj" \
"$(INTDIR)\Debug.obj" \
"$(INTDIR)\Deferred.obj" \
"$(INTDIR)\Deflate.obj" \
"$(INTDIR)\Entry.obj" \
"$(INTDIR)\Expand.obj" \
"$(INTDIR)\FileIO.obj" \
"$(INTDIR)\Funnel.obj" \
"$(INTDIR)\Lzc.obj" \
"$(INTDIR)\Lzw.obj" \
"$(INTDIR)\MiscStuff.obj" \
"$(INTDIR)\MiscUtils.obj" \
"$(INTDIR)\Record.obj" \
"$(INTDIR)\SourceSink.obj" \
"$(INTDIR)\Squeeze.obj" \
"$(INTDIR)\Thread.obj" \
"$(INTDIR)\Value.obj" \
"$(INTDIR)\Version.obj"
"$(OUTDIR)\nufxlib.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
SOURCE="$(InputPath)"
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
ALL : $(DS_POSTBUILD_DEP)
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
$(DS_POSTBUILD_DEP) : "$(OUTDIR)\nufxlib.dll" "$(OUTDIR)\nufxlib.bsc"
copy Debug\nufxlib.dll .
copy Debug\nufxlib.lib .
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("nufxlib.dep")
!INCLUDE "nufxlib.dep"
!ELSE
!MESSAGE Warning: cannot find "nufxlib.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "nufxlib - Win32 Release" || "$(CFG)" == "nufxlib - Win32 Debug"
SOURCE="Archive.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Archive.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Archive.obj" "$(INTDIR)\Archive.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="ArchiveIO.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\ArchiveIO.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\ArchiveIO.obj" "$(INTDIR)\ArchiveIO.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Bzip2.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Bzip2.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Bzip2.obj" "$(INTDIR)\Bzip2.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Compress.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Compress.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Compress.obj" "$(INTDIR)\Compress.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Crc16.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Crc16.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Crc16.obj" "$(INTDIR)\Crc16.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Debug.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Debug.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Debug.obj" "$(INTDIR)\Debug.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Deferred.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Deferred.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Deferred.obj" "$(INTDIR)\Deferred.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Deflate.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Deflate.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Deflate.obj" "$(INTDIR)\Deflate.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Entry.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Entry.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Entry.obj" "$(INTDIR)\Entry.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Expand.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Expand.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Expand.obj" "$(INTDIR)\Expand.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="FileIO.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\FileIO.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\FileIO.obj" "$(INTDIR)\FileIO.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Funnel.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Funnel.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Funnel.obj" "$(INTDIR)\Funnel.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Lzc.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Lzc.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Lzc.obj" "$(INTDIR)\Lzc.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Lzw.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Lzw.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Lzw.obj" "$(INTDIR)\Lzw.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="MiscStuff.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\MiscStuff.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\MiscStuff.obj" "$(INTDIR)\MiscStuff.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="MiscUtils.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\MiscUtils.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\MiscUtils.obj" "$(INTDIR)\MiscUtils.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Record.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Record.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Record.obj" "$(INTDIR)\Record.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="SourceSink.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\SourceSink.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\SourceSink.obj" "$(INTDIR)\SourceSink.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Squeeze.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Squeeze.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Squeeze.obj" "$(INTDIR)\Squeeze.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Thread.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Thread.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Thread.obj" "$(INTDIR)\Thread.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Value.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Value.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Value.obj" "$(INTDIR)\Value.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
SOURCE="Version.c"
!IF "$(CFG)" == "nufxlib - Win32 Release"
"$(INTDIR)\Version.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ELSEIF "$(CFG)" == "nufxlib - Win32 Debug"
"$(INTDIR)\Version.obj" "$(INTDIR)\Version.sbr" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF
!ENDIF

View File

@ -12,6 +12,10 @@
# in this directory or in a standard location that the compiler can find.
#
!ifdef DLL
ERROR -- use makefile.dll to build the DLL
!endif
# Windows magic
TARGETOS = BOTH
!include <ntwin32.mak>
@ -24,10 +28,10 @@ OBJS4 = Squeeze.obj Thread.obj Value.obj Version.obj
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4)
!ifdef NODEBUG
#OPT = $(cdebug) /D NDEBUG /ML
OPT = $(cdebug) /ML
#OPT = $(cdebug) /D NDEBUG /ML /O2
OPT = $(cdebug) /ML /O2
!else
OPT = $(cdebug) /MLd
OPT = $(cdebug) /MLd /Od
!endif
BUILD_FLAGS = /W3 /GX /D "WIN32"
@ -71,8 +75,8 @@ nufxlib.lib: $(OBJS)
$(link) -lib /out:$(PRODUCT) $(OBJS) /nologo
clean::
del *.obj
del $(PRODUCT)
-del *.obj
-del $(PRODUCT)
Archive.obj: Archive.c NufxLibPriv.h NufxLib.h MiscStuff.h SysDefs.h
ArchiveIO.obj: ArchiveIO.c NufxLibPriv.h NufxLib.h MiscStuff.h SysDefs.h

View File

@ -649,91 +649,119 @@ typedef enum NuFeature {
* ===========================================================================
*/
/*
* Win32 dll magic.
*/
#if defined(_WIN32)
# include <windows.h>
# if defined(NUFXLIB_EXPORTS)
/* building the NufxLib DLL */
# define NUFXLIB_API __declspec(dllexport)
# elif defined (NUFXLIB_DLL)
/* building to link against the NufxLib DLL */
# define NUFXLIB_API __declspec(dllimport)
# else
/* using static libs */
# define NUFXLIB_API
# endif
#else
/* not using Win32... hooray! */
# define NUFXLIB_API
#endif
/* streaming and non-streaming read-only interfaces */
NuError NuStreamOpenRO(FILE* infp, NuArchive** ppArchive);
NuError NuContents(NuArchive* pArchive, NuCallback contentFunc);
NuError NuExtract(NuArchive* pArchive);
NuError NuTest(NuArchive* pArchive);
NUFXLIB_API NuError NuStreamOpenRO(FILE* infp, NuArchive** ppArchive);
NUFXLIB_API NuError NuContents(NuArchive* pArchive, NuCallback contentFunc);
NUFXLIB_API NuError NuExtract(NuArchive* pArchive);
NUFXLIB_API NuError NuTest(NuArchive* pArchive);
/* strictly non-streaming read-only interfaces */
NuError NuOpenRO(const char* archivePathname, NuArchive** ppArchive);
NuError NuExtractRecord(NuArchive* pArchive, NuRecordIdx recordIdx);
NuError NuExtractThread(NuArchive* pArchive, NuThreadIdx threadIdx,
NUFXLIB_API NuError NuOpenRO(const char* archivePathname,NuArchive** ppArchive);
NUFXLIB_API NuError NuExtractRecord(NuArchive* pArchive, NuRecordIdx recordIdx);
NUFXLIB_API NuError NuExtractThread(NuArchive* pArchive, NuThreadIdx threadIdx,
NuDataSink* pDataSink);
NuError NuGetRecord(NuArchive* pArchive, NuRecordIdx recordIdx,
NUFXLIB_API NuError NuGetRecord(NuArchive* pArchive, NuRecordIdx recordIdx,
const NuRecord** ppRecord);
NuError NuGetRecordIdxByName(NuArchive* pArchive, const char* name,
NuRecordIdx* pRecordIdx);
NuError NuGetRecordIdxByPosition(NuArchive* pArchive, unsigned long position,
NUFXLIB_API NuError NuGetRecordIdxByName(NuArchive* pArchive, const char* name,
NuRecordIdx* pRecordIdx);
NUFXLIB_API NuError NuGetRecordIdxByPosition(NuArchive* pArchive,
unsigned long position, NuRecordIdx* pRecordIdx);
/* read/write interfaces */
NuError NuOpenRW(const char* archivePathname, const char* tempPathname,
unsigned long flags, NuArchive** ppArchive);
NuError NuFlush(NuArchive* pArchive, long* pStatusFlags);
NuError NuAddRecord(NuArchive* pArchive, const NuFileDetails* pFileDetails,
NuRecordIdx* pRecordIdx);
NuError NuAddThread(NuArchive* pArchive, NuRecordIdx recordIdx,
NUFXLIB_API NuError NuOpenRW(const char* archivePathname,
const char* tempPathname, unsigned long flags,
NuArchive** ppArchive);
NUFXLIB_API NuError NuFlush(NuArchive* pArchive, long* pStatusFlags);
NUFXLIB_API NuError NuAddRecord(NuArchive* pArchive,
const NuFileDetails* pFileDetails, NuRecordIdx* pRecordIdx);
NUFXLIB_API NuError NuAddThread(NuArchive* pArchive, NuRecordIdx recordIdx,
NuThreadIdx threadID, NuDataSource* pDataSource,
NuThreadIdx* pThreadIdx);
NuError NuAddFile(NuArchive* pArchive, const char* pathname,
NUFXLIB_API NuError NuAddFile(NuArchive* pArchive, const char* pathname,
const NuFileDetails* pFileDetails, short fromRsrcFork,
NuRecordIdx* pRecordIdx);
NuError NuRename(NuArchive* pArchive, NuRecordIdx recordIdx,
NUFXLIB_API NuError NuRename(NuArchive* pArchive, NuRecordIdx recordIdx,
const char* pathname, char fssep);
NuError NuSetRecordAttr(NuArchive* pArchive, NuRecordIdx recordIdx,
NUFXLIB_API NuError NuSetRecordAttr(NuArchive* pArchive, NuRecordIdx recordIdx,
const NuRecordAttr* pRecordAttr);
NuError NuUpdatePresizedThread(NuArchive* pArchive, NuThreadIdx threadIdx,
NuDataSource* pDataSource, long* pMaxLen);
NuError NuDelete(NuArchive* pArchive);
NuError NuDeleteRecord(NuArchive* pArchive, NuRecordIdx recordIdx);
NuError NuDeleteThread(NuArchive* pArchive, NuRecordIdx threadIdx);
NUFXLIB_API NuError NuUpdatePresizedThread(NuArchive* pArchive,
NuThreadIdx threadIdx, NuDataSource* pDataSource, long* pMaxLen);
NUFXLIB_API NuError NuDelete(NuArchive* pArchive);
NUFXLIB_API NuError NuDeleteRecord(NuArchive* pArchive, NuRecordIdx recordIdx);
NUFXLIB_API NuError NuDeleteThread(NuArchive* pArchive, NuRecordIdx threadIdx);
/* general interfaces */
NuError NuClose(NuArchive* pArchive);
NuError NuAbort(NuArchive* pArchive);
NuError NuGetMasterHeader(NuArchive* pArchive,
NUFXLIB_API NuError NuClose(NuArchive* pArchive);
NUFXLIB_API NuError NuAbort(NuArchive* pArchive);
NUFXLIB_API NuError NuGetMasterHeader(NuArchive* pArchive,
const NuMasterHeader** ppMasterHeader);
NuError NuGetExtraData(NuArchive* pArchive, void** ppData);
NuError NuSetExtraData(NuArchive* pArchive, void* pData);
NuError NuGetValue(NuArchive* pArchive, NuValueID ident, NuValue* pValue);
NuError NuSetValue(NuArchive* pArchive, NuValueID ident, NuValue value);
NuError NuGetAttr(NuArchive* pArchive, NuAttrID ident, NuAttr* pAttr);
NuError NuDebugDumpArchive(NuArchive* pArchive);
NUFXLIB_API NuError NuGetExtraData(NuArchive* pArchive, void** ppData);
NUFXLIB_API NuError NuSetExtraData(NuArchive* pArchive, void* pData);
NUFXLIB_API NuError NuGetValue(NuArchive* pArchive, NuValueID ident,
NuValue* pValue);
NUFXLIB_API NuError NuSetValue(NuArchive* pArchive, NuValueID ident,
NuValue value);
NUFXLIB_API NuError NuGetAttr(NuArchive* pArchive, NuAttrID ident,
NuAttr* pAttr);
NUFXLIB_API NuError NuDebugDumpArchive(NuArchive* pArchive);
/* sources and sinks */
NuError NuCreateDataSourceForFile(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, const char* pathname, short isFromRsrcFork,
NuDataSource** ppDataSource);
NuError NuCreateDataSourceForFP(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, FILE* fp, long offset, long length,
NuDataSource** ppDataSource);
NuError NuCreateDataSourceForBuffer(NuThreadFormat threadFormat, short doClose,
unsigned long otherLen, const unsigned char* buffer, long offset,
NUFXLIB_API NuError NuCreateDataSourceForFile(NuThreadFormat threadFormat,
short doClose, unsigned long otherLen, const char* pathname,
short isFromRsrcFork, NuDataSource** ppDataSource);
NUFXLIB_API NuError NuCreateDataSourceForFP(NuThreadFormat threadFormat,
short doClose, unsigned long otherLen, FILE* fp, long offset,
long length, NuDataSource** ppDataSource);
NuError NuFreeDataSource(NuDataSource* pDataSource);
NuError NuDataSourceSetRawCrc(NuDataSource* pDataSource, unsigned short crc);
NuError NuCreateDataSinkForFile(short doExpand, NuValue convertEOL,
NUFXLIB_API NuError NuCreateDataSourceForBuffer(NuThreadFormat threadFormat,
short doClose, unsigned long otherLen, const unsigned char* buffer,
long offset, long length, NuDataSource** ppDataSource);
NUFXLIB_API NuError NuFreeDataSource(NuDataSource* pDataSource);
NUFXLIB_API NuError NuDataSourceSetRawCrc(NuDataSource* pDataSource,
unsigned short crc);
NUFXLIB_API NuError NuCreateDataSinkForFile(short doExpand, NuValue convertEOL,
const char* pathname, char fssep, NuDataSink** ppDataSink);
NuError NuCreateDataSinkForFP(short doExpand, NuValue convertEOL,
NUFXLIB_API NuError NuCreateDataSinkForFP(short doExpand, NuValue convertEOL,
FILE* fp, NuDataSink** ppDataSink);
NuError NuCreateDataSinkForBuffer(short doExpand, NuValue convertEOL,
unsigned char* buffer, unsigned long bufLen,
NUFXLIB_API NuError NuCreateDataSinkForBuffer(short doExpand,
NuValue convertEOL, unsigned char* buffer, unsigned long bufLen,
NuDataSink** ppDataSink);
NuError NuFreeDataSink(NuDataSink* pDataSink);
NuError NuDataSinkGetOutCount(NuDataSink* pDataSink, unsigned long* pOutCount);
NUFXLIB_API NuError NuFreeDataSink(NuDataSink* pDataSink);
NUFXLIB_API NuError NuDataSinkGetOutCount(NuDataSink* pDataSink,
unsigned long* pOutCount);
/* miscellaneous non-archive operations */
NuError NuGetVersion(long* pMajorVersion, long* pMinorVersion,
NUFXLIB_API NuError NuGetVersion(long* pMajorVersion, long* pMinorVersion,
long* pBugVersion, const char** ppBuildDate,
const char** ppBuildFlags);
const char* NuStrError(NuError err);
NuError NuTestFeature(NuFeature feature);
void NuRecordCopyAttr(NuRecordAttr* pRecordAttr, const NuRecord* pRecord);
NuError NuRecordCopyThreads(const NuRecord* pRecord, NuThread** ppThreads);
unsigned long NuRecordGetNumThreads(const NuRecord* pRecord);
const NuThread* NuThreadGetByIdx(const NuThread* pThread, long idx);
short NuIsPresizedThreadID(NuThreadID threadID);
NUFXLIB_API const char* NuStrError(NuError err);
NUFXLIB_API NuError NuTestFeature(NuFeature feature);
NUFXLIB_API void NuRecordCopyAttr(NuRecordAttr* pRecordAttr,
const NuRecord* pRecord);
NUFXLIB_API NuError NuRecordCopyThreads(const NuRecord* pRecord,
NuThread** ppThreads);
NUFXLIB_API unsigned long NuRecordGetNumThreads(const NuRecord* pRecord);
NUFXLIB_API const NuThread* NuThreadGetByIdx(const NuThread* pThread, long idx);
NUFXLIB_API short NuIsPresizedThreadID(NuThreadID threadID);
#define NuGetThread(pRecord, idx) ( (const NuThread*) \
((unsigned long) (idx) < (unsigned long) (pRecord)->recTotalThreads ? \
@ -742,13 +770,16 @@ short NuIsPresizedThreadID(NuThreadID threadID);
/* callback setters */
NuError NuSetSelectionFilter(NuArchive* pArchive, NuCallback filterFunc);
NuError NuSetOutputPathnameFilter(NuArchive* pArchive, NuCallback filterFunc);
NuError NuSetProgressUpdater(NuArchive* pArchive, NuCallback updateFunc);
NuError NuSetErrorHandler(NuArchive* pArchive, NuCallback errorFunc);
NuError NuSetErrorMessageHandler(NuArchive* pArchive,
NUFXLIB_API NuError NuSetSelectionFilter(NuArchive* pArchive,
NuCallback filterFunc);
NUFXLIB_API NuError NuSetOutputPathnameFilter(NuArchive* pArchive,
NuCallback filterFunc);
NUFXLIB_API NuError NuSetProgressUpdater(NuArchive* pArchive,
NuCallback updateFunc);
NUFXLIB_API NuError NuSetErrorHandler(NuArchive* pArchive,NuCallback errorFunc);
NUFXLIB_API NuError NuSetErrorMessageHandler(NuArchive* pArchive,
NuCallback messageHandlerFunc);
NuError NuSetGlobalErrorMessageHandler(NuCallback messageHandlerFunc);
NUFXLIB_API NuError NuSetGlobalErrorMessageHandler(NuCallback messageHandlerFunc);
#ifdef __cplusplus

View File

@ -78,9 +78,30 @@ to build with debugging info, or
nmake -f makefile.msc nodebug=1
to build optimized.
See the makefile for comments about including zlib or libbz2. These
need to be enabled at compile time and linked into the sample apps.
Once the library has been built, "cd samples" and run the same command there.
When it finishes, run "test-basic.exe".
If you want to build NufxLib as a DLL, use "makefile.dll" instead.
If you're using zlib or libbz2, these will need to be linked into the DLL.
You will probably need to set the application that links against it to
use the "multithreaded DLL" version of the C library. (In Visual C++,
go to Project->Settings...->C/C++ tab, select Category: Code Generation,
and in the "Use run-time library" box choose "Multithreaded DLL" for
Release and "Debug Multithreaded DLL" for Debug.)
You have to use the DLL version because NufxLib allows certain calls to
pass in a malloc()ed pointer which the library then takes ownership of.
If nufxlib.dll and the application are using different heaps, the memory
is being allocated on one and freed from another, which doesn't work.
Debug versions of the DLL will halt with an assertion failure, most
likely in a NuFlush or NuClose call. Non-debug versions will silently
leak memory, or possibly corrupt other structures. You can test this
easily by running the "test-basic" application after linking it against
the DLL without specifying "DLL=1" on the makefile line.
Other Notes
===========

View File

@ -8,6 +8,8 @@
# To build without debugging info, use "nmake nodebug=1".
# To build with libz, use "nmake libz=1".
# To build with libbz2, use "nmake libbz2=1".
# If you're linking against nufxlib as a DLL, add "DLL=1", and don't
# specify libz or libbz2.
#
# For libz/libbz2, you need to have the appropriate library either
# in this directory or in a standard location that the linker can find.
@ -20,14 +22,26 @@ TARGETOS = BOTH
NUFXSRCDIR = ..
LIB_PRODUCT = $(NUFXSRCDIR)\nufxlib.lib
!ifdef DLL
### build against the DLL
!ifdef NODEBUG
#OPT = /D NDEBUG /ML /Ogityb2
OPT = /D DEBUG_MSGS /ML /Ogityb2
OPT = /D NUFXLIB_DLL /MD /Ogityb2
LIB_FLAGS = /nodefaultlib:libcd.lib /nologo setargv.obj
!else
OPT = /D NUFXLIB_DLL /D DEBUG_MSGS /MDd /Od
LIB_FLAGS = /nodefaultlib:libc.lib /nologo setargv.obj
!endif
!else
### build against static lib
!ifdef NODEBUG
OPT = /ML /Ogityb2
LIB_FLAGS = /nodefaultlib:libcd.lib /nologo libc.lib setargv.obj
!else
OPT = /D DEBUG_MSGS /MLd /Od
LIB_FLAGS = /nodefaultlib:libc.lib /nologo libcd.lib setargv.obj
!endif
!endif
BUILD_FLAGS = /W3 /GX /D "WIN32" /D "_CONSOLE" /I "$(NUFXSRCDIR)"
@ -66,13 +80,16 @@ test-extract.exe: TestExtract.obj $(LIB_PRODUCT)
$(link) $(ldebug) TestExtract.obj -out:$@ $(NUFXSRCDIR)\nufxlib.lib $(LIB_FLAGS)
clean:
del *.obj
del exerciser.exe
del imgconv.exe
del launder.exe
del test-basic.exe
del test-simple.exe
del test-extract.exe
-del *.obj
-del *.pdb
-del *.ilk
-del *.exp
-del exerciser.exe
-del imgconv.exe
-del launder.exe
-del test-basic.exe
-del test-simple.exe
-del test-extract.exe
Exerciser.obj: Exerciser.c Common.h $(NUFXSRCDIR)\NufxLib.h $(NUFXSRCDIR)\SysDefs.h
ImgConv.obj: ImgConv.c Common.h $(NUFXSRCDIR)\NufxLib.h $(NUFXSRCDIR)\SysDefs.h