nulib2/nufxlib/nufxlib.def
Andy McFadden e2088e64d3 Distinguish Unicode and Mac OS Roman strings
NufxLib has historically made no effort to distinguish between
the character set used for filenames on the local disk, and for
filenames stored within the archive.  Now all Unicode filename
strings use the UNICHAR type and have "UNI" in the name, and all
Mac OS Roman strings have "MOR" in the name.  (The naming
convention makes it obvious when you're assigning the wrong thing;
on Linux both formats are char*, so the compiler won't tell you
if you get it wrong.)

The distinction is necessary because filesystems generally support
Unicode these days, but on Windows you need to use a separate
set of wide-character file I/O functions.  (On Linux it all works
with "narrow" strings, and the UTF-8 encoding is interpreted by
applications.)  The character set used for NuFX archive filenames
is MOR, matching what GS/OS + HFS supported, and we want to be able
to convert back and forth between MOR and a Unicode representation.

This change updates the various character types and string names,
adds conversion functions, and updates NuLib2 for proper execution
on Linux.  It does not include the (probably extensive) changes
required for Windows UTF-16 support.  Instead, the conversion
functions are no-ops, which should result in NuLib2 for Windows
continuing to behave in the same slightly broken way.

This adds "test-names", which exercises Unicode filenames a bit.
It will not pass on Win32.

Also, tweaked the Linux makefiles to have explicit dependencies,
rather than empty space and an expectation that "makedepend" exists.

Also, minor source code cleanups.

While this probably doesn't affect binary compatibility -- it's
mainly a matter of naming and string interpretation -- there's
enough going on that it should be considered an API revision, so
this updates the version to 3.0.0.
2015-01-02 17:14:34 -08:00

70 lines
1.7 KiB
Modula-2

; NufxLib library exported symbols
;
; This is redundant with the __declspec(dllexport) declarations enabled
; with the NUFXLIB_EXPORTS symbol. If we're just building a DLL, there's
; no need for this file. However, the objects we're building are used for
; both the static library and the dynamic library, and we don't want to
; have exports in the static library. If we do, the linker will create
; .lib and .exp files for every executable we link against it. This is
; mostly harmless, but a tad messy. I don't expect the interface to change,
; so there's not much of a maintenance burden here.
;
EXPORTS
NuAbort
NuAddFile
NuAddRecord
NuAddThread
NuClose
NuContents
NuConvertMORToUNI
NuConvertUNIToMOR
NuCreateDataSinkForBuffer
NuCreateDataSinkForFP
NuCreateDataSinkForFile
NuCreateDataSourceForBuffer
NuCreateDataSourceForFP
NuCreateDataSourceForFile
NuDataSinkGetOutCount
NuDataSourceSetRawCrc
NuDebugDumpArchive
NuDelete
NuDeleteRecord
NuDeleteThread
NuExtract
NuExtractRecord
NuExtractThread
NuFlush
NuFreeDataSink
NuFreeDataSource
NuGetAttr
NuGetExtraData
NuGetMasterHeader
NuGetRecord
NuGetRecordIdxByName
NuGetRecordIdxByPosition
NuGetValue
NuGetVersion
NuIsPresizedThreadID
NuOpenRO
NuOpenRW
NuRecordCopyAttr
NuRecordCopyThreads
NuRecordGetNumThreads
NuRename
NuSetErrorHandler
NuSetErrorMessageHandler
NuSetExtraData
NuSetGlobalErrorMessageHandler
NuSetOutputPathnameFilter
NuSetProgressUpdater
NuSetRecordAttr
NuSetSelectionFilter
NuSetValue
NuStrError
NuStreamOpenRO
NuTest
NuTestFeature
NuTestRecord
NuThreadGetByIdx
NuUpdatePresizedThread