svn commit: r1929716 - apr/apr/trunk/threadproc/win32
[email protected] Thu, 13 Nov 2025 16:44:47 -0000
| Newsgroups | gmane.comp.apache.apr.cvs |
|---|---|
| Message-ID | <176305228726.3571750.10440139905017057630@svn02-us-east.apache.org> |
Author: ivan
Date: Thu Nov 13 16:44:46 2025
New Revision: 1929716
Log:
Refactoring in apr_proc_create() for Windows. No behavior changes expected.
* threadproc/win32/proc.c
(apr_proc_create): Move progname to argv0 conversion to each case.
Modified:
apr/apr/trunk/threadproc/win32/proc.c
Modified: apr/apr/trunk/threadproc/win32/proc.c
==============================================================================
--- apr/apr/trunk/threadproc/win32/proc.c Thu Nov 13 15:12:38 2025 (r1929715)
+++ apr/apr/trunk/threadproc/win32/proc.c Thu Nov 13 16:44:46 2025 (r1929716)
@@ -479,7 +479,6 @@ APR_DECLARE(apr_status_t) apr_proc_creat
{
apr_status_t rv;
apr_size_t i;
- const char *argv0;
char *cmdline;
apr_wchar_t *pEnvBlock;
PROCESS_INFORMATION pi;
@@ -550,15 +549,18 @@ APR_DECLARE(apr_status_t) apr_proc_creat
}
}
- if (has_space(progname)) {
- argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
- }
- else {
- argv0 = progname;
- }
-
if (attr->cmdtype == APR_SHELLCMD || attr->cmdtype == APR_SHELLCMD_ENV) {
- char *shellcmd = getenv("COMSPEC");
+ const char *argv0;
+ char *shellcmd;
+
+ if (has_space(progname)) {
+ argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
+ }
+ else {
+ argv0 = progname;
+ }
+
+ shellcmd = getenv("COMSPEC");
if (!shellcmd) {
if (attr->errfn) {
attr->errfn(pool, APR_EINVAL, "COMSPEC envar is not set");
@@ -600,6 +602,15 @@ APR_DECLARE(apr_status_t) apr_proc_creat
if (i >= 4 && (strcasecmp(progname + i - 4, ".bat") == 0
|| strcasecmp(progname + i - 4, ".cmd") == 0))
{
+ const char *argv0;
+
+ if (has_space(progname)) {
+ argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
+ }
+ else {
+ argv0 = progname;
+ }
+
char *shellcmd = getenv("COMSPEC");
if (!shellcmd) {
if (attr->errfn) {
@@ -648,6 +659,15 @@ APR_DECLARE(apr_status_t) apr_proc_creat
}
}
else {
+ const char *argv0;
+
+ if (has_space(progname)) {
+ argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL);
+ }
+ else {
+ argv0 = progname;
+ }
+
/* A simple command we are directly invoking.
* Handle the args, seperate from argv0 */
cmdline = apr_pstrdup(pool, argv0);