[Bug libfortran/124330] [16 Regression] shared_memory.c:72:3: error: implicit declaration of function 'SetEnvironmentVariable' [-Wimplicit-function-declaration]
dave.anglin at bell dot net
gcc-bugzilla@gcc.gnu.org
Mon Mar 2 19:49:53 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124330
--- Comment #4 from dave.anglin at bell dot net ---
On 2026-03-02 12:09 p.m., jvdelisle at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124330
>
> --- Comment #2 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
> What about something like this:
>
> void
> shared_memory_set_env (pid_t pid)
> {
> /* Increased size slightly to accommodate "ENV_VAR_NAME=" prefix for putenv
> */
> char *buffer;
> int res;
>
> #if defined(HAVE_SETENV)
> char val[20];
> snprintf (val, 20, "%d", pid);
> setenv (ENV_PPID, val, 1);
> #elif defined(_WIN32)
> char val[20];
> snprintf (val, 20, "%d", pid);
> SetEnvironmentVariable (ENV_PPID, val);
> #else
> /* HP-UX / Legacy Fallback using putenv */
> res = asprintf (&buffer, "%s=%d", ENV_PPID, (int)pid);
HP-UX doesn't have asprintf but it does have snprintf. Think ENV_PPID
needs to be character string and buffer a character array. It size needs
to be 20 + 8;
> if (res != -1)
> putenv (buffer);
HP-UX has putenv but it doesn't have setenv.
> #endif
> }
>
libgfortran builds on HP-UX 11.11 with the attached change. I added code to
return
the number of processors. Don't know if it works.
More information about the Gcc-bugs
mailing list