Skip to content

Commit cf1afff

Browse files
committed
release: prepare Sally v1.0.20
Squash the current public work branch into a single release commit. The archived local branch archived/work-2026-06-30-v1.0.20-pre-squash keeps the detailed pre-squash history.
1 parent 2017a16 commit cf1afff

312 files changed

Lines changed: 42911 additions & 1421 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ add_library(salext MODULE
524524
"${SAL_SRC}/shellext/shellext.c"
525525
"${SAL_SRC}/shellext/shexinit.c"
526526
"${SAL_SRC}/shexreg.c"
527+
"${SAL_SRC}/shexreg_ipc_names.c"
527528
"${SAL_SRC}/shellext/shellext.rc"
528529
)
529530

cmake/git_version.cmake

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
find_package(Git QUIET)
66

7+
set(SALLY_LOCAL_DEV_VERSION "1.0.20" CACHE STRING "Sally local development version base")
8+
79
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
810
# Get the latest tag
911
execute_process(
@@ -26,8 +28,12 @@ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
2628
)
2729

2830
if(GIT_TAG_RESULT EQUAL 0 AND GIT_HASH_RESULT EQUAL 0)
29-
# Strip leading 'v' if present (v1.0.0 -> 1.0.0)
30-
string(REGEX REPLACE "^v" "" GIT_TAG_VERSION "${GIT_TAG}")
31+
if(SALLY_LOCAL_DEV_VERSION)
32+
set(GIT_TAG_VERSION "${SALLY_LOCAL_DEV_VERSION}")
33+
else()
34+
# Strip leading 'v' if present (v1.0.0 -> 1.0.0)
35+
string(REGEX REPLACE "^v" "" GIT_TAG_VERSION "${GIT_TAG}")
36+
endif()
3137

3238
# Check if we're exactly on the tag
3339
execute_process(

cmake/sal_plugin.cmake

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,23 @@ if(NOT DEFINED SAL_ROOT)
88
include("${CMAKE_CURRENT_LIST_DIR}/sal_common.cmake")
99
endif()
1010

11-
# sal_add_plugin_lang(NAME <plugin_name>)
11+
# sal_add_plugin_lang(NAME <plugin_name>
12+
# [SOURCE_DIR <plugin_root>]
13+
# )
1214
# Adds the English language file (.slg) for a plugin
1315
# Looks for lang/lang.rc in the plugin directory
1416
function(sal_add_plugin_lang)
15-
cmake_parse_arguments(PARSE_ARGV 0 LANG "" "NAME" "")
17+
cmake_parse_arguments(PARSE_ARGV 0 LANG "" "NAME;SOURCE_DIR" "")
1618

1719
if(NOT LANG_NAME)
1820
message(FATAL_ERROR "sal_add_plugin_lang: NAME is required")
1921
endif()
2022

21-
set(PLUGIN_DIR "${SAL_PLUGINS}/${LANG_NAME}")
23+
if(LANG_SOURCE_DIR)
24+
get_filename_component(PLUGIN_DIR "${LANG_SOURCE_DIR}" ABSOLUTE)
25+
else()
26+
set(PLUGIN_DIR "${SAL_PLUGINS}/${LANG_NAME}")
27+
endif()
2228
set(LANG_RC "${PLUGIN_DIR}/lang/lang.rc")
2329

2430
if(NOT EXISTS "${LANG_RC}")
@@ -64,6 +70,7 @@ endfunction()
6470

6571
# sal_add_plugin(NAME <plugin_name>
6672
# SOURCES <source_files>...
73+
# [SOURCE_DIR <plugin_root>]
6774
# [INCLUDES <include_dirs>...]
6875
# [DEFINES <preprocessor_defines>...]
6976
# [LIBS <libraries>...]
@@ -77,7 +84,7 @@ endfunction()
7784
function(sal_add_plugin)
7885
cmake_parse_arguments(PARSE_ARGV 0 PLUGIN
7986
"NO_SHARED;NO_PCH;NO_LANG"
80-
"NAME;RC;DEF;PCH"
87+
"NAME;SOURCE_DIR;RC;DEF;PCH"
8188
"SOURCES;INCLUDES;DEFINES;LIBS"
8289
)
8390

@@ -86,7 +93,11 @@ function(sal_add_plugin)
8693
endif()
8794

8895
set(TARGET_NAME "plugin_${PLUGIN_NAME}")
89-
set(PLUGIN_DIR "${SAL_PLUGINS}/${PLUGIN_NAME}")
96+
if(PLUGIN_SOURCE_DIR)
97+
get_filename_component(PLUGIN_DIR "${PLUGIN_SOURCE_DIR}" ABSOLUTE)
98+
else()
99+
set(PLUGIN_DIR "${SAL_PLUGINS}/${PLUGIN_NAME}")
100+
endif()
90101

91102
# Default PCH header
92103
if(NOT PLUGIN_PCH)
@@ -188,7 +199,7 @@ function(sal_add_plugin)
188199

189200
# Build language file if it exists (unless NO_LANG is specified)
190201
if(NOT PLUGIN_NO_LANG)
191-
sal_add_plugin_lang(NAME ${PLUGIN_NAME})
202+
sal_add_plugin_lang(NAME ${PLUGIN_NAME} SOURCE_DIR "${PLUGIN_DIR}")
192203
endif()
193204

194205
message(STATUS "Added plugin: ${PLUGIN_NAME}")

cmake/targets/sally_sources.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ set(SALLY_SOURCES
1515
"${SAL_SRC}/color.cpp"
1616
"${SAL_SRC}/common/allochan.cpp"
1717
"${SAL_SRC}/common/array.cpp"
18+
"${SAL_SRC}/common/BuildScriptADSProbe.cpp"
19+
"${SAL_SRC}/common/BuildScript.cpp"
20+
"${SAL_SRC}/common/CommandShellService.cpp"
21+
"${SAL_SRC}/common/ExternalToolRunner.cpp"
22+
"${SAL_SRC}/common/HeadlessScriptExecutor.cpp"
23+
"${SAL_SRC}/common/ViewerEditorLauncher.cpp"
24+
"${SAL_SRC}/common/InstanceNamespace.cpp"
25+
"${SAL_SRC}/common/PanelTextPainter.cpp"
26+
"${SAL_SRC}/common/OperationsCore.cpp"
27+
"${SAL_SRC}/common/WorkerDirectHeadless.cpp"
1828
"${SAL_SRC}/common/handles.cpp"
1929
"${SAL_SRC}/common/heap.cpp"
2030
"${SAL_SRC}/common/messages.cpp"
@@ -137,6 +147,7 @@ set(SALLY_SOURCES
137147
"${SAL_SRC}/shellib.cpp"
138148
"${SAL_SRC}/shellsup.cpp"
139149
"${SAL_SRC}/shexreg.c"
150+
"${SAL_SRC}/shexreg_ipc_names.c"
140151
"${SAL_SRC}/shiconov.cpp"
141152
"${SAL_SRC}/snooper.cpp"
142153
"${SAL_SRC}/sort.cpp"

doc/DEV.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ A few Altap Salamander 4.0 plugins are either not included or cannot be compiled
3333

3434
- **PictView**: The engine `pvw32cnv.dll` is not open-sourced. Consider switching to [WIC](https://learn.microsoft.com/en-us/windows/win32/wic/-wic-about-windows-imaging-codec) or another library.
3535
- **Encrypt**: Incompatible with modern SSD disks and has been deprecated.
36-
- **UnRAR**: Missing [unrar.dll](https://www.rarlab.com/rar_add.htm) (solvable, open source).
36+
- **UnRAR**: RAR handling is statically linked into `salunrar.dll` from vendored [RARLAB UnRAR source](https://www.rarlab.com/rar_add.htm), which is source-available/freeware for handling RAR archives and is not GPL/OSI-free.
3737
- **FTP**: Missing [OpenSSL](https://www.openssl.org/) libraries (solvable, open source).
3838
- **WinSCP**: Requires Embarcadero C++ Builder to build.
3939

doc/third_party.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@ Copyright (C) Microsoft Corporation 1993-1997
3434

3535
=== Alexander Roshal ===
3636
Portions of UnRAR plugin utilizes decompression library written by Alexander Roshal.
37-
Copyright (C) 1993-2019 Alexander Roshal
37+
Copyright (C) 1993-2024 Alexander Roshal
38+
The vendored UnRAR source is statically linked into salunrar.dll and is
39+
distributed under the upstream UnRAR freeware/source-available terms in
40+
src/plugins/unrar/unrarsrc/license.txt.
41+
It may be used to handle RAR archives, but may not be used to develop a
42+
RAR/WinRAR-compatible archiver or recreate the proprietary RAR compression
43+
algorithm.
3844

3945
=== Martin Prikryl ===
4046
Portions of WinSCP plugin licensed from Martin Prikryl.

0 commit comments

Comments
 (0)