Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 37 additions & 25 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
# **recls** Changes <!-- omit in toc -->
# recls - Changes <!-- omit in toc -->


## 1.10.0 (release candidate 3) - 3rd August 2026
## 1.10.0-rc4 - 10th September 2026

* Canonicalised CMake exclusion variables from reserved `CMAKE_NO_*` (`CMAKE_NO_B64`, `CMAKE_NO_PANTHEIOS`, `CMAKE_NO_SHWILD`) to canonical `NO_*` in **CMakeLists.txt** and **prepare_cmake.sh**;
* Added backwards-compatibility mappings with obsolete-variable warnings for legacy `CMAKE_NO_*` in **CMakeLists.txt**;
* Added `RECLS_VER_1_10_0_RC_2`, `RECLS_VER_1_10_0_RC_3`, and `RECLS_VER_1_10_0_RC_4` version definitions, updated `RECLS_VER_AB` to `0xC4`, and provided legacy `RECLS_VER_ALPHABETA` and `RECLS_VER_REVISION` compatibility aliases in **include/recls/recls.h**;
* Standardised top-level headings across C and C++ example companion documentation files (**examples/c/*.md**, **examples/cpp/*.md**);
* Fixed title heading typo in **examples/c/example_c_2.md**;
* Added **example_cpp_4** entry to **EXAMPLES.md**;
* Corrected step numbering, script name, and cross-references in **INSTALL.md**;
* Cleaned up formatting and indentation in **src/incl.winstl.h** and scratch test sources;


## 1.10.0-rc3 - 3rd August 2026

* Added modular GitHub Actions CI (**ci.yml** / **ci-cell.yml**) with install-smoke coverage;
* Removed **HISTORY.md** (content merged into **CHANGES.md**);
Expand All @@ -12,14 +24,14 @@
* Project boilerplate updates (**.gitattributes**, **.vimrc**, **.vscode/settings.json**);


## 1.10.0 (release candidate 2) - 30th June 2025
## 1.10.0-rc2 - 30th June 2025

* Added `recls::device()`, `recls::directory()`, `recls::file()`, and `recls::socket()` stat-like functions, that attempt to obtain a file-system entry and then filter (or throw) for specific file type;
* Added **libver** scratch-test;
* Fixed boilerplate, wherein various 1.10.0-xxx releases were erroneously tagged 1.10.1-xxx;


## 1.10.0 (release candidate 1) - 6th May 2025
## 1.10.0-rc1 - 6th May 2025

* Added `RECLS_F_NO_BREAK_INFINITE_LOOPS` search flag and (initial) supporting logic, which cures the macOS infinite-loop problem;
* Added `RECLS_REMDIR_F_REMOVE_SOCKETS` flag and supporting logic in `Recls_RemoveDirectory()`;
Expand Down Expand Up @@ -55,7 +67,7 @@
* Sorting of **TODO.md** in readiness for 1.11 work streams;


## 1.10.0 (beta 6) - 30th April 2025
## 1.10.0-beta6 - 30th April 2025

* Added support for searching for/stat()-ing devices: `RECLS_F_DEVICES`, `RECLS_RC_ENTRY_IS_DEVICE`, **example_c_10** (which searches for devices), `recls::cpp::entry#is_device()`;
* Ensuring full support across operating systems for `RECLS_F_STOP_ON_ACCESS_FAILURE`, including adding **test.scratch.ignore_inaccessible_nodes**;
Expand All @@ -70,12 +82,12 @@
* Various tidyings and consistency fixes;


## 1.10.0 (beta 5) - 22nd April 2025
## 1.10.0-beta5 - 22nd April 2025

* Added support for searching for/stat()-ing sockets: `RECLS_F_SOCKETS`, `RECLS_RC_ENTRY_IS_FILE`, `RECLS_RC_ENTRY_IS_SOCKET`;


## 1.10.0 (beta 4) - 17th April 2025
## 1.10.0-beta4 - 17th April 2025

* Added `Recls_GetFileSizeGibiBytes()`, `Recls_GetFileSizeKibiBytes()`, `Recls_GetFileSizeMebiBytes()`, `Recls_GetFileSizeTebiBytes()`;
* Fixed calculations (from 1,024 factor to 1,000) for `Recls_GetFileSizeGigaBytes()`, `Recls_GetFileSizeKiloBytes()`, `Recls_GetFileSizeMegaBytes()`;
Expand All @@ -86,7 +98,7 @@
* Removed all Visual C++ solution/project files;


## 1.10.0 (beta 3) - 17th April 2025
## 1.10.0-beta3 - 17th April 2025

* Fixes to `Recls_SqueezePath()`;
* Wholesale improvements to examples (incl. **example_c_2** feedback, optional search-directory, memory-usage fix);
Expand All @@ -95,14 +107,14 @@
* Updated dependency requirements;


## 1.10.0 (beta 2) - 23rd February 2025
## 1.10.0-beta2 - 23rd February 2025

* GCC compatibility;
**test.scratch.with_pantheios**: removed need for function pointer cast;
* Boilerplate and tidying;


## 1.10.0 (beta 1) - 23rd February 2025
## 1.10.0-beta1 - 23rd February 2025

* Added `Recls_IsEntrySocket()` API function and `recls::entry#is_socket()`;
* Renamed API functions `Recls_IsFile*()` => `Recls_IsEntry*()`, and added backwards-compatible functions;
Expand All @@ -111,22 +123,22 @@
* Updated dependency requirements;


## 1.10.0 (alpha 9) - 23rd October 2024
## 1.10.0-alpha9 - 23rd October 2024

* Fleshed out **INSTALL.md**;
* CMake build script consistency and minor fixes;
* Updated dependency requirements (now depends on 0.25+ of **xTests**);
* Project boilerplate / settings / ignores improvements;


## 1.10.0 (alpha 8) - 18th October 2024
## 1.10.0-alpha8 - 18th October 2024

* CMake / GCC / MinGW compatibility improvements;
* Tightening up CMake constructs;
* Visual C++ (19xx+) compatibility;


## 1.10.0 (alpha 7) - 17th October 2024
## 1.10.0-alpha7 - 17th October 2024

* Ensuring all **recls/cpp/*.hpp** files are self-sufficient;
* MinGW compatibility;
Expand All @@ -139,21 +151,21 @@
* Updated compatibility with **xTests** latest;


## 1.10.0 (alpha 6) - 10th July 2024
## 1.10.0-alpha6 - 10th July 2024

* Visual C++ 17 (2022) compatibility;
* CMake Windows compatibility;
* GCC compatibility improvements;


## 1.10.0 (alpha 5) - 4th January 2024
## 1.10.0-alpha5 - 4th January 2024

* Initial CMake support (building and installation; verified on macOS);
* Renamed project boilerplate `.txt` files to `.md` (Markdown);
* Project boilerplate updates;


## 1.10.0 (alpha 3) - 29th March 2021
## 1.10.0-alpha3 - 29th March 2021

* search-relative-path now contains trailing slash for directories when RECLS_F_MARK_DIRS specified;
* VC++ 15, 16 compatibility;
Expand All @@ -165,7 +177,7 @@
* various fixes and refactorings;


## 1.10.0 (alpha 1) - 4th January 2021
## 1.10.0-alpha1 - 4th January 2021

* improved flexibility in treatment of search-directory and patterns;
* significant refactoring, simplification, removal of dead code;
Expand Down Expand Up @@ -233,7 +245,7 @@
* NOTE: depends on STLSoft 1.9.121;


## 1.9.1 (alpha 8) - 4th June 2012
## 1.9.1-alpha8 - 4th June 2012

* changed entry field volumeSerialNumber to deviceId;
* added entry field volumeSerialNumber (and search flag RECLS_F_NODE_INDEX);
Expand All @@ -245,7 +257,7 @@
* NOTE: depends on STLSoft 1.9.113;


## 1.9.1 (alpha 7) - 30th November 2011
## 1.9.1-alpha7 - 30th November 2011

* added numLinks member to recls_entryinfo_t;
* added member numRelativeDirectoryParts to recls_entryinfo_t;
Expand All @@ -270,7 +282,7 @@
* NOTE: depends on STLSoft 1.9.111;


## 1.9.1 (alpha 6) - 18th October 2010
## 1.9.1-alpha6 - 18th October 2010

* recls::entry: added get_file_size() method, ~ deprecated size() method;
* recls::recls_exception: added 'patterns' property;
Expand All @@ -281,7 +293,7 @@
* NOTE: depends on STLSoft 1.9.101;


## 1.9.1 (alpha 5) - 7th June 2010
## 1.9.1-alpha5 - 7th June 2010

* added comparison operators for recls::cpp::entry;
* added subscript operator to recls::cpp::root_sequence;
Expand All @@ -293,7 +305,7 @@
* NOTE: depends on STLSoft 1.9.98;


## 1.9.1 (alpha 4) - 4th April 2010
## 1.9.1-alpha4 - 4th April 2010

* fixed invalid calculation in stat();
* fixed path-relativity defect;
Expand All @@ -303,15 +315,15 @@
* NOTE: depends on STLSoft 1.9.97;


## 1.9.1 (alpha 3) - 10th March 2010
## 1.9.1-alpha3 - 10th March 2010

* Added support for Visual C++ 10 (including makefiles and implicit linking);
* NOTE: bundles shwild 0.9.19;
* NOTE: bundles xTests 0.14.5;
* NOTE: depends on STLSoft 1.9.96;


## 1.9.1 (alpha 2) - 11th February 2010
## 1.9.1-alpha2 - 11th February 2010

* added VC++ 9 (Visual Studio 2008) solution/project files;
* added Recls_GetFileSizeGigaBytes(), Recls_GetFileSizeMegaBytes(), Recls_GetFileSizeKiloBytes() API functions;
Expand All @@ -321,7 +333,7 @@
* NOTE: C++ mapping also depends on STLSoft 1.10 alpha 13 (or later);


## 1.9.1 (alpha 1) - 9th February 2010
## 1.9.1-alpha1 - 9th February 2010

* first release of recls 1.9;
* merging 1.8's C++ and STL APIs into one: include <recls/recls.hpp> for new C++ API;
Expand Down
29 changes: 25 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Purpose: Top-level CMake lists file for recls
#
# Created: 9th October 2019
# Updated: 29th June 2025
# Updated: 10th September 2026
#
# ######################################################################## #

Expand Down Expand Up @@ -166,11 +166,32 @@ if(DEFINED STLSOFT_INCLUDE_DIR)
include_directories(${STLSOFT_INCLUDE_DIR})
endif()

if(DEFINED CMAKE_NO_B64 AND NOT DEFINED NO_B64)

message(WARNING "variable 'CMAKE_NO_B64' is obsolete and will not be supported in a future version; use 'NO_B64' instead")

set(NO_B64 ${CMAKE_NO_B64})
endif()

if(DEFINED CMAKE_NO_PANTHEIOS AND NOT DEFINED NO_PANTHEIOS)

message(WARNING "variable 'CMAKE_NO_PANTHEIOS' is obsolete and will not be supported in a future version; use 'NO_PANTHEIOS' instead")

set(NO_PANTHEIOS ${CMAKE_NO_PANTHEIOS})
endif()

if(DEFINED CMAKE_NO_SHWILD AND NOT DEFINED NO_SHWILD)

message(WARNING "variable 'CMAKE_NO_SHWILD' is obsolete and will not be supported in a future version; use 'NO_SHWILD' instead")

set(NO_SHWILD ${CMAKE_NO_SHWILD})
endif()


# ############################
# b64

if(NOT (CMAKE_NO_B64))
if(NOT NO_B64)

if(BUILD_TESTING)

Expand All @@ -193,7 +214,7 @@ endif()
# ############################
# Pantheios

if(NOT (CMAKE_NO_PANTHEIOS))
if(NOT NO_PANTHEIOS)

if(BUILD_TESTING)

Expand All @@ -212,7 +233,7 @@ endif()
# ############################
# shwild

if(NOT (CMAKE_NO_SHWILD))
if(NOT NO_SHWILD)

if(BUILD_TESTING)

Expand Down
1 change: 1 addition & 0 deletions EXAMPLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
|**example_cpp_1**|C++|[examples/cpp/example_cpp_1/main.cpp](./examples/cpp/example_cpp_1/main.cpp)<br/>[examples/cpp/example_cpp_1.md](./examples/cpp/example_cpp_1.md)|Demonstrates recursive search for all files under a given directory including all appropriate failure handling.|
|**example_cpp_2**|C++|[examples/cpp/example_cpp_2/main.cpp](./examples/cpp/example_cpp_2/main.cpp)<br/>[examples/cpp/example_cpp_2.md](./examples/cpp/example_cpp_2.md)|Demonstrates obtaining `stat()` of home directory using `recls::stat`, then recursive search under that of files matching a complex pattern|
|**example_cpp_3**|C++|[examples/cpp/example_cpp_3/main.cpp](./examples/cpp/example_cpp_3/main.cpp)<br/>[examples/cpp/example_cpp_3.md](./examples/cpp/example_cpp_3.md)|Demonstrates use of `recls::stat()` on current directory or named path, optionally specifying a type filter (use `"--help"` for usage), showing various elements of the path in exploded form|
|**example_cpp_4**|C++|[examples/cpp/example_cpp_4/main.cpp](./examples/cpp/example_cpp_4/main.cpp)<br/>[examples/cpp/example_cpp_4.md](./examples/cpp/example_cpp_4.md)|Demonstrates use of `Recls_RemoveDirectory()`, optionally including files and sockets.|


<!-- ########################### end of file ########################### -->
Expand Down
13 changes: 6 additions & 7 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,23 @@ The primary choice for installation is by use of **CMake**.
$ ./build_cmake.sh
```

(**NOTE**: if you provide the flag `--run-make` (=== `-m`) in step 3 then you do
(**NOTE**: if you provide the flag `--run-make` (=== `-m`) in step 2 then you do
not need this step.)

4. As a check, execute the built test program files via the
**build_run_all_unit_tests.sh** script, as in:
**run_all_unit_tests.sh** script, as in:

```bash
$ ./run_all_unit_tests.sh
```

6. Install the library on the host, via `cmake`, as in:

5. Install the library on the host, via `cmake`, as in:

```bash
$ sudo cmake --install ${SIS_CMAKE_BUILD_DIR:-./_build} --config Release
```

7. Then to use the library, it is a simple matter as follows:
6. Then to use the library, it is a simple matter as follows:

1. Assuming a simplest possible program to verify the installation:

Expand All @@ -83,7 +82,7 @@ The primary choice for installation is by use of **CMake**.

2. Compile your project against **recls**:

Due to the installation step (Step 6 above) there is no requirement
Due to the installation step (Step 5 above) there is no requirement
for an explicit include directory for **recls**:

```bash
Expand All @@ -92,7 +91,7 @@ The primary choice for installation is by use of **CMake**.

3. Link your project against **recls**:

Due to the installation step (Step 6 above) there is no requirement
Due to the installation step (Step 5 above) there is no requirement
for an explicit library directory for **recls**:

```bash
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

| Date | News Item |
| --------------------- | --------------------------------------------------------- |
| 10th September 2026 | [recls 1.10.0 (release candidate 4)](https://github.com/synesissoftware/recls/releases/tag/1.10.0-rc4) released |
| 3rd August 2026 | [recls 1.10.0 (release candidate 3)](https://github.com/synesissoftware/recls/releases/tag/1.10.0-rc3) released |
| 30th June 2025 | recls 1.10.0 (release candidate 2) released |
| 6th May 2025 | recls 1.10.0 (release candidate 1) released |
Expand Down
1 change: 1 addition & 0 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
* [x] ~~~Remove plethora of old makefiles~~~ - ✅;
* [-] ~~~Provide small number of more "intelligent" makefiles~~~ - ❌;
* [ ] Bazel, Jam, SCons, etc. scripts;
* [ ] Remove '--no-b64' flag and associated support (in **prepare_cmake.sh** and **CMakeLists.txt**), rendered redundant by recent improvements to **Pantheios**' CMake usage;


<!-- ########################### end of file ########################### -->
2 changes: 1 addition & 1 deletion examples/c/example_c_1.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_1**
# recls - Example - **example_c_1**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_10.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_10**
# recls - Example - **example_c_10**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_2.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_1**
# recls - Example - **example_c_2**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_3.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_3**
# recls - Example - **example_c_3**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_4.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_4**
# recls - Example - **example_c_4**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_5.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_5**
# recls - Example - **example_c_5**

## Summary

Expand Down
2 changes: 1 addition & 1 deletion examples/c/example_c_6.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# recls Example - **example_c_6**
# recls - Example - **example_c_6**

## Summary

Expand Down
Loading
Loading