recls 1.9.1 (alpha 1) released

Download from https://sourceforge.net/projects/recls/files

recls 1.9.1 (alpha 1) released - 9th February 2010

Summary:
--------

* first release of recls 1.9
* merging 1.8's C++ and STL APIs into one: include <recls/recls.hpp> for new C++ API
* prototypical code coverage
* refactored implicit link functionality
* API type name changes, e.g. recls_fileinfo_t => recls_entryinfo_t, recls_info_t => recls_entry_t
* removed the Recls_OutstandingDetails() API function
* user-specifiable diagnostic logging
* NOTE: this distribution contains only core library and C++ mapping; other language mappings are not included

Details:
--------

Core:

~ include/recls/ftp.h:
~ recls support for FTP is now discriminated in main include (recls/recls.h)

~ include/recls/implicit_link.h:
+ added support for Intel 9, 10, 11
~ changed naming for 64-bit
+ added support for widestring
+ added support for (pseudo-)UNIX

~ include/recls/internal/platform.h:
~ recls support for FTP is now discriminated in main include (recls/recls.h)
+ RECLS_ARCH_IS_X64
+ RECLS_ARCH_IS_IA64
+ RECLS_ARCH_IS_X86
~ minor layout changes

~ include/recls/internal/platform_types.h:
+ string access shims for recls_entryinfo_t
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
~ minor layout changes
+ added data+len string access shims for recls_strptrs_t

~ include/recls/internal/recls_filesize.h:
~ no-namespace compatibility
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
~ minor layout changes
+ added data+len string access shims for recls_strptrs_t

~ include/recls/internal/recls_time.h:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
~ minor layout changes
+ added data+len string access shims for recls_strptrs_t

~ include/recls/internal/retcodes.h:
~ renamed RECLS_RC_INVALID_DIRECTORY to RECLS_RC_PATH_IS_NOT_DIRECTORY
+ added RECLS_RC_DIRECTORY_NOT_FOUND
+ RECLS_RC_ACCESS_DENIED
~ minor layout changes

~ include/recls/recls.h:
~ widestring compatibility
+ added RECLS_F_STOP_ON_ACCESS_FAILURE
~ no-namespace compatibility
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
- Recls_OutstandingDetails()
~ minor layout changes

~ include/recls/recls.hpp:
~ separated FTP functionality out of search_sequence, into new class ftp_search_sequence

~ include/recls/windows.h:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t

~ src/ReclsFileSearch.cpp:
~ improved error-handling (for access-denied)
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/ReclsFileSearch.hpp:
~ improved error-handling (for access-denied)
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t

~ src/ReclsFileSearchDirectoryNode.cpp:
~ widestring compatibility
~ fixed defect in (new) access-denied propagation
~ improved error-handling (for access-denied)
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ removal of dependency on so-called "unsafe" string functions
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ now implemented in terms of types structure

~ src/ReclsFileSearchDirectoryNode.hpp:
~ improved error-handling (for access-denied)
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
~ now implemented in terms of types structure

~ src/ReclsFtpSearchDirectoryNode_windows.cpp:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ removed dependency on so-called "unsafe" string functions
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/ReclsFtpSearchDirectoryNode_windows.hpp:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t

~ src/ReclsFtpSearch_windows.cpp:
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/ReclsSearch.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage

~ src/ReclsSearch.hpp:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t

~ src/api.entryinfo.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ renaming of utility functions

~ src/api.error.cpp:
~ reordered coverage constructs
~ marking files
~ widestring compatibility
+ added code coverage
~ renamed RECLS_RC_INVALID_DIRECTORY to RECLS_RC_PATH_IS_NOT_DIRECTORY
+ added RECLS_RC_DIRECTORY_NOT_FOUND
+ added RECLS_RC_ACCESS_DENIED
~ renaming of utility functions

~ src/api.extended.cpp:
~ split Recls_CombinePaths() into its own source file
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ marking files
~ stat() now rejects too-large path
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ verifies the path for length, either too small or too large
~ fixed defect in stat(), when target does not exist
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.ftp.windows.cpp:
~ reordered coverage constructs
~ marking files
+ added code coverage
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.search.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ removal of dependency on so-called "unsafe" string functions
~ verifies the path for length, either too small or too large
~ recls_debug_printf_() => recls_trace_printf_()
- removal of Recls_OutstandingDetails()
~ using union cast for function cast
~ using constants class constants
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.unix.cpp:
~ reordered coverage constructs
~ marking files
+ added code coverage

~ src/api.util.combine_paths.cpp:
~ exception refactoring
~ split Recls_CombinePaths() into its own source file
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ marking files
~ stat() now rejects too-large path
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ verifies the path for length, either too small or too large
~ fixed defect in stat(), when target does not exist
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.util.create_directory.cpp:
~ separating out exception-handling from main function body, to work around code-generation defect in VC++ 9 (debug, dll)
~ split create_directory and remove_directory into their own source files
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage

~ src/api.util.derive_relative_path.cpp:
~ reordered coverage constructs
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ marking files
~ stat() now rejects too-large path
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ verifies the path for length, either too small or too large
~ fixed defect in stat(), when target does not exist
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.util.remove_directory.cpp:
~ improved exception-handling
~ separating out exception-handling from main function body, to work around code-generation defect in VC++ 9 (debug, dll)
~ split create_directory and remove_directory into their own source files
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage

~ src/api.util.squeeze_path.cpp:
~ refactored exception-handling
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ marking files
~ stat() now rejects too-large path
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ verifies the path for length, either too small or too large
~ fixed defect in stat(), when target does not exist
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.util.stat.cpp:
~ exception refactoring
~ reordered coverage constructs
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ marking files
~ stat() now rejects too-large path
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ verifies the path for length, either too small or too large
~ fixed defect in stat(), when target does not exist
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/api.windows.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions

~ src/impl.atomic.h:
~ recls_debug_printf_() => recls_trace_printf_()

~ src/impl.constants.hpp:
~ reordered coverage constructs
~ marking files
~ improved error-handling (for access-denied)
+ added code coverage
+ constants class
- removal of char array constants

~ src/impl.cover.h:
~ marking files
+ xCover

~ src/impl.entryfunctions.h:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t

~ src/impl.entryinfo.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage
~ removal of dependency on so-called "unsafe" string functions
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/impl.entryinfo.hpp:
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
~ now implemented in terms of types structure

~ src/impl.fileinfo.cpp:
~ reordered coverage constructs
~ marking files
~ recls_fileinfo_t => recls_entryinfo_t and recls_info_t => recls_entry_t
+ added code coverage

~ src/impl.fileinfo.unix.cpp:
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()

~ src/impl.fileinfo.windows.cpp:
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()

~ src/impl.root.h:
- RECLS_TRACE_LEVEL removed, and is not dynamic
~ recls_debug_printf_() => recls_trace_printf_()

~ src/impl.trace.cpp:
~ debug-logging not enabled in release builds
+ added code coverage
~ logging now in terms of recls_char_t
+ added default debug logging functionality
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable

~ src/impl.trace.h:
~ logging now in terms of recls_char_t
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable

~ src/impl.types.ftp.hpp:
~ improved error-handling (for access-denied)
+ added code coverage
+ count_char_instances()
+ count_dir_parts()

~ src/impl.types.hpp:
~ improved error-handling (for access-denied)
+ added code coverage
+ count_char_instances()
+ count_dir_parts()

~ src/impl.util.cpp:
+ added code coverage
~ renaming of utility functions
~ now implemented in terms of types structure

~ src/impl.util.h:
~ renaming of utility functions

~ src/impl.util.unix.cpp:
+ added code coverage
~ removal of dependency on so-called "unsafe" string functions
~ recls_debug_printf_() => recls_trace_printf_()
~ renaming of utility functions

~ src/impl.util.windows.cpp:
+ added code coverage
~ recls_debug_printf_() => recls_trace_printf_()
~ simplified tracing functionality, and made it programmable
~ renaming of utility functions
~ now implemented in terms of types structure

C++ API:

~ include/recls/cpp/exceptions.hpp:
~ documentation corrections
~ no-namespace compatibility

~ include/recls/cpp/ftp_search_sequence.hpp:
~ separated FTP functionality out of search_sequence, into new class ftp_search_sequence
~ search_sequence is now a non-template class
~ safe-string compatible
~ ensures forward compatibility with recls 1.9
~ corrected defect in get_search_relative_path()

~ include/recls/cpp/root_sequence.hpp:
~ root_sequence is now a non-template class

~ include/recls/cpp/search_sequence.hpp:
~ separated FTP functionality out of search_sequence, into new class ftp_search_sequence
~ search_sequence is now a non-template class
~ safe-string compatible
~ ensures forward compatibility with recls 1.9
~ corrected defect in get_search_relative_path()

~ include/recls/cpp/traits.hpp:
~ separated FTP functionality out of search_sequence, into new class ftp_search_sequence
~ safe-string compatible

~ include/recls/cpp/util.hpp:
~ documentation corrections
~ no-namespace compatibility

Makefiles:

~ recls.vc6.dsw:
+ added test.component.util.cpp.remove_directory

~ projects/core/vc6/recls.core.dsp:
~ split Recls_CombinePaths() into its own source file
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ split api.extended.2.cpp into api.util.create_directory.cpp and api.util.remove_directory.cpp

~ build/bc56/makefile:
~ build/bc582/makefile:
~ build/cw8.unix/makefile:
~ build/cw8.win32/makefile:
~ build/dm/makefile:
~ build/gcc34.win32/makefile:
~ build/gcc40.unix/makefile:
~ build/gcc41.unix/makefile:
~ build/gcc42.unix/makefile:
~ build/gcc43.unix/makefile:
~ build/icl10.win32/makefile:
~ build/icl11.win32/makefile:
~ build/icl8.win32/makefile:
~ build/icl9.win32/makefile:
~ build/vc6.unixem/makefile:
~ build/vc6/makefile:
~ build/vc71/makefile:
~ build/vc8.unixem/makefile:
~ build/vc8.x64/makefile:
~ build/vc8/makefile:
~ build/vc9.unixem/makefile:
~ build/vc9.x64/makefile:
~ build/vc9/makefile:
~ split Recls_CombinePaths() into its own source file
~ split Recls_DeriveRelativePath(), Recls_SqueezePath(), Recls_Stat() into their own source files
~ split create_directory and remove_directory into their own source files
+ added test.component.util.cpp.remove_directory
+ added test.component.util.cpp.create_directory
~ cleaning up all files properly
~ updated makefiles, including xCover
~ libs only; xCover-compatibility

Examples:

Test.Unit:

~ test/unit/test.unit.api.squeeze_path/test.unit.api.squeeze_path.c:
+ added code coverage reporting

~ test/unit/test.unit.cpp.squeeze_path/test.unit.cpp.squeeze_path.cpp:
+ added code coverage reporting

Depends on:

* STLSoft 1.9.91 or later
(http://stlsoft.org/)

Posted by Matt Wilson 2010-02-09