Hi, I don’t think it’s necessary to put the setupvariables(verbose) behind an ifdef. It only changes what is printed out when calling the function. I think that is easy enough to reason about. I don’t know why it was called with 0 on Linux in the first place. I thought it was a mistake.
The back2slash_str macro resolves to nothing on non windows systems anyway, so no need to put it behind another ifdef either. Regarding unsetenv the situation is a bit complicated. Apparently msvcrt and ucrt don’t have it, but older msys-2.0 does. MS says to use putenv with an empty variable to unset an environment variable. „ You can remove a variable from the environment by specifying an empty value_string, or in other words, by specifying only varname=. [1][2] FWIW GNU knows unsetenv is missing on mingw and msvc. [3] You’re right, in order not to risk breaking things, this should be behind an ifdef and we should use unsetenv on linux as before. Not sure I understood your approach though, but if it’s better than I am all for using it instead of mine. Regards Pascal [1] https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/putenv?view=msvc-170 [2] https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/putenv-wputenv?view=msvc-170 [3] https://www.gnu.org/software/gnulib/manual/html_node/unsetenv.html -- Sent from Canary (https://canarymail.io) > On Donnerstag, März 19, 2026 at 09:10, Jason Hood <[email protected] > (mailto:[email protected])> wrote: > On 18/03/2026 17:48, Shigio YAMAGUCHI wrote: > > [libutil/getdbpath.c] > > 133 setupvariables(verbose); <=== > > Why is this not already present? gtagsexist has it, why not this? > Even so, it ends up being ignored in global, since it gets called > with 0 (before options are processed). > > > [global/global.c] > > > > 954 putenv("GTAGSLIBPATH="); <=== > > Not sure why that's necessary, my old MinGW has unsetenv. > > > > having to use GNU Global on windows on my work computer and I noticed > > > that GTAGSOBJDIRPREFIX does not work for windows. > I took a slightly different approach, converting back2slash from > global.c into a function in path.c (and moving STRCMP to path.h > as PATHCMP). I duplicate the variables and convert them once (and > use "c:/usr/obj" as default). Rather than stripping a colon I > assume the drive is present and generate a new path without it > (D:/path -> /D/path). > > -- > Jason.
