commit c4fd9718fca8a4c0230b268be8bece0441aaa78b
Author: Pavel Sanda <[email protected]>
Date: Thu May 28 15:25:07 2026 +0200
Route layout2layout and prefs2prefs through argv form
Retires runCommand() - DiD only, strings not deliverable here from
documents.
Tier 01 DiD / argv 03c: argv-form layout2layout + prefs2prefs;
https://www.mail-archive.com/[email protected]/msg226809.html
Assisted-by: Claude Opus 5
---
src/TextClass.cpp | 32 +++++++++++++++++++++-----------
src/support/filetools.cpp | 25 ++++++++++++++++---------
2 files changed, 37 insertions(+), 20 deletions(-)
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index 3a872c1711..0cac9ef2bf 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -28,6 +28,7 @@
#include "frontends/alert.h"
#include "support/lassert.h"
+#include "support/convert.h"
#include "support/debug.h"
#include "support/FileName.h"
#include "support/filetools.h"
@@ -35,6 +36,7 @@
#include "support/Lexer.h"
#include "support/lstrings.h"
#include "support/os.h"
+#include "support/Systemcall.h"
#include "support/TempFile.h"
#include <algorithm>
@@ -80,17 +82,25 @@ bool layout2layout(FileName const & filename, FileName
const & tempfile,
return false;
}
- ostringstream command;
- command << os::python() << ' ' <<
quoteName(script.toFilesystemEncoding())
- << " -t " << format
- << ' ' << quoteName(filename.toFilesystemEncoding())
- << ' ' << quoteName(tempfile.toFilesystemEncoding());
- string const command_str = command.str();
-
- LYXERR(Debug::TCLASS, "Running `" << command_str << '\'');
-
- cmd_ret const ret = runCommand(command_str);
- if (!ret.valid) {
+ vector<string> argv = os::pythonArgvForm();
+ if (argv.empty()) {
+ LYXERR0("No Python interpreter available for layout2layout.");
+ return false;
+ }
+ argv.push_back(script.toFilesystemEncoding());
+ argv.push_back("-t");
+ argv.push_back(convert<string>(format));
+ argv.push_back(filename.toFilesystemEncoding());
+ argv.push_back(tempfile.toFilesystemEncoding());
+
+ string const program = argv.front();
+ argv.erase(argv.begin());
+ LYXERR(Debug::TCLASS, "Running layout2layout via argv: " << program
+ << " with " << argv.size() << " arguments");
+
+ Systemcall one;
+ int const ret = one.startscriptArgv(program, argv, nullptr);
+ if (ret != Systemcall::OK) {
if (format == LAYOUT_FORMAT)
LYXERR0("Conversion of layout with layout2layout.py has
failed.");
return false;
diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index 7e11a18290..d35e4a701b 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -1304,17 +1304,24 @@ bool prefs2prefs(FileName const & filename, FileName
const & tempfile, bool lfun
return false;
}
- ostringstream command;
- command << os::python() << ' ' <<
quoteName(script.toFilesystemEncoding())
- << ' ' << (lfuns ? "-l" : "-p") << ' '
- << quoteName(filename.toFilesystemEncoding())
- << ' ' << quoteName(tempfile.toFilesystemEncoding());
- string const command_str = command.str();
+ vector<string> argv = os::pythonArgvForm();
+ if (argv.empty()) {
+ LYXERR0("No Python interpreter available for prefs2prefs.");
+ return false;
+ }
+ argv.push_back(script.toFilesystemEncoding());
+ argv.push_back(lfuns ? "-l" : "-p");
+ argv.push_back(filename.toFilesystemEncoding());
+ argv.push_back(tempfile.toFilesystemEncoding());
- LYXERR(Debug::FILES, "Running `" << command_str << '\'');
+ string const program = argv.front();
+ argv.erase(argv.begin());
+ LYXERR(Debug::FILES, "Running prefs2prefs via argv: " << program
+ << " with " << argv.size() << " arguments");
- cmd_ret const ret = runCommand(command_str);
- if (!ret.valid) {
+ Systemcall one;
+ int const ret = one.startscriptArgv(program, argv, nullptr);
+ if (ret != Systemcall::OK) {
LYXERR0("Could not run file conversion script prefs2prefs.py.");
return false;
}
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs