From a9457fc02b8ddccb28252c343b8dbee83dd6bf31 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 19 Apr 2021 10:59:50 -0700 Subject: [PATCH] osiSpawnDetachedProcess() prefix process name with '!' to silence warning --- modules/libcom/src/osi/os/WIN32/osdProcess.c | 6 +++++- modules/libcom/src/osi/os/posix/osdProcess.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/libcom/src/osi/os/WIN32/osdProcess.c b/modules/libcom/src/osi/os/WIN32/osdProcess.c index 0f137bf37..cff1ed4bd 100644 --- a/modules/libcom/src/osi/os/WIN32/osdProcess.c +++ b/modules/libcom/src/osi/os/WIN32/osdProcess.c @@ -50,10 +50,14 @@ LIBCOM_API osiGetUserNameReturn epicsStdCall osiGetUserName (char *pBuf, unsigne LIBCOM_API osiSpawnDetachedProcessReturn epicsStdCall osiSpawnDetachedProcess ( const char *pProcessName, const char *pBaseExecutableName ) { + BOOL silent = pProcessName && pProcessName[0]=='!'; BOOL status; STARTUPINFO startupInfo; PROCESS_INFORMATION processInfo; + if(silent) + pProcessName++; /* skip '!' */ + GetStartupInfo ( &startupInfo ); startupInfo.lpReserved = NULL; startupInfo.lpTitle = (char *) pProcessName; @@ -115,7 +119,7 @@ LIBCOM_API osiSpawnDetachedProcessReturn epicsStdCall osiSpawnDetachedProcess /* Free the buffer. */ LocalFree (errStrMsgBuf); } - else { + else if(!silent) { fprintf (stderr, "!!WARNING!!\n"); fprintf (stderr, "Unable to locate executable \"%s\".\n", pBaseExecutableName); fprintf (stderr, "You may need to modify your \"path\" environment variable.\n"); diff --git a/modules/libcom/src/osi/os/posix/osdProcess.c b/modules/libcom/src/osi/os/posix/osdProcess.c index 9f33cb10b..b2c26beb4 100644 --- a/modules/libcom/src/osi/os/posix/osdProcess.c +++ b/modules/libcom/src/osi/os/posix/osdProcess.c @@ -63,8 +63,12 @@ LIBCOM_API osiSpawnDetachedProcessReturn epicsStdCall osiSpawnDetachedProcess (const char *pProcessName, const char *pBaseExecutableName) { int status; + int silent = pProcessName && pProcessName[0]=='!'; int fds[2]; /* [reader, writer] */ + if(silent) + pProcessName++; /* skip '!' */ + if(pipe(fds)) return osiSpawnDetachedProcessFail; @@ -137,7 +141,7 @@ LIBCOM_API osiSpawnDetachedProcessReturn epicsStdCall osiSpawnDetachedProcess * Run the specified executable */ status = execlp (pBaseExecutableName, pBaseExecutableName, (char *)NULL); - if ( status < 0 ) { + if ( status < 0 && !silent ) { fprintf ( stderr, "**** The executable \"%s\" couldn't be located\n", pBaseExecutableName ); fprintf ( stderr, "**** because of errno = \"%s\".\n", strerror (errno) ); fprintf ( stderr, "**** You may need to modify your PATH environment variable.\n" );