Re: Patches for windows paths

Jason Hood <[email protected]> Thu, 19 Mar 2026 18:10:19 +1000
Newsgroups gmane.comp.gnu.global.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------kEY3bmVZA5Ok9iJQitLQi5Gh
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

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.
--------------kEY3bmVZA5Ok9iJQitLQi5Gh
Content-Type: text/plain; charset=UTF-8; name="windows_objdirprefix2.patch"
Content-Disposition: attachment; filename="windows_objdirprefix2.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtdXIgZ2xvYmFsLTYuNi0xNC9nbG9iYWwvZ2xvYmFsLmMgZ2xvYmFsLTYuNi4xNC9n
bG9iYWwvZ2xvYmFsLmMKLS0tIGdsb2JhbC02LjYtMTQvZ2xvYmFsL2dsb2JhbC5jCTIwMjQt
MTItMTEgMTY6NDQ6MzQgKzEwMDAKKysrIGdsb2JhbC02LjYuMTQvZ2xvYmFsL2dsb2JhbC5j
CTIwMjYtMDMtMTkgMTc6MjE6MjAgKzEwMDAKQEAgLTU1LDIyICs1NSw2IEBACiAjaW5jbHVk
ZSAiY29udmVydC5oIgogCiAvKgotICogZW5zdXJlIEdUQUdTTElCUEFUSCBjb21wYXJlcyBj
b3JyZWN0bHkKLSAqLwotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fREpHUFBf
XykKLSNkZWZpbmUgU1RSQ01QIHN0cmljbXAKLSNkZWZpbmUgYmFjazJzbGFzaChzYikgZG8g
ewkJXAotCWNoYXIgKnAgPSBzdHJidWZfdmFsdWUoc2IpOwlcCi0JZm9yICg7ICpwOyBwKysp
IAkJXAotCQlpZiAoKnAgPT0gJ1xcJykgICAgICAgICBcCi0JCQkqcCA9ICcvJzsgICAgICAg
XAotfSB3aGlsZSAoMCkKLSNlbHNlCi0jZGVmaW5lIFNUUkNNUCBzdHJjbXAKLSNkZWZpbmUg
YmFjazJzbGFzaChzYikKLSNlbmRpZgotCi0vKgogICogZW5hYmxlIFtzZXRdIGdsb2JiaW5n
LCBpZiBhdmFpbGFibGUKICAqLwogI2lmZGVmIF9fQ1JUX0dMT0JfQlJBQ0tFVF9HUk9VUFNf
XwpAQCAtMzY3LDEzICszNTEsMTMgQEAKIAogCQlzYiA9IHN0cmJ1Zl9vcGVuKDApOwogCQlz
dHJidWZfcHV0cyhzYiwgZ2V0ZW52KCJHVEFHU0xJQlBBVEgiKSk7Ci0JCWJhY2syc2xhc2go
c2IpOworCQliYWNrMnNsYXNoKHN0cmJ1Zl92YWx1ZShzYikpOwogCQlmb3IgKGxpYmRpciA9
IHN0cmJ1Zl92YWx1ZShzYik7IGRiICE9IEdUQUdTICYmIGxpYmRpcjsgbGliZGlyID0gbmV4
dHApIHsKIAkJCWlmICgobmV4dHAgPSBsb2NhdGVzdHJpbmcobGliZGlyLCBQQVRIU0VQLCBN
QVRDSF9GSVJTVCkpICE9IE5VTEwpCiAJCQkJKm5leHRwKysgPSAwOwogCQkJaWYgKCFndGFn
c2V4aXN0KGxpYmRpciwgbGliZGJwYXRoLCBzaXplb2YobGliZGJwYXRoKSwgMCkpCiAJCQkJ
Y29udGludWU7Ci0JCQlpZiAoIVNUUkNNUChkYnBhdGgsIGxpYmRicGF0aCkpCisJCQlpZiAo
IVBBVEhDTVAoZGJwYXRoLCBsaWJkYnBhdGgpKQogCQkJCWNvbnRpbnVlOwogCQkJZ3RvcCA9
IGd0YWdzX29wZW4obGliZGJwYXRoLCByb290LCBHVEFHUywgR1RBR1NfUkVBRCwgMCk7CiAJ
CQlpZiAoKGd0cCA9IGd0YWdzX2ZpcnN0KGd0b3AsIHRhZywgZmxhZ3MpKSAhPSBOVUxMKQpA
QCAtMTA2OCw3ICsxMDUzLDcgQEAKIAkJY2hhciAqbGliZGlyLCAqbmV4dHAgPSBOVUxMOwog
CiAJCXN0cmJ1Zl9wdXRzKHNiLCBnZXRlbnYoIkdUQUdTTElCUEFUSCIpKTsKLQkJYmFjazJz
bGFzaChzYik7CisJCWJhY2syc2xhc2goc3RyYnVmX3ZhbHVlKHNiKSk7CiAJCS8qCiAJCSAq
IHNlYXJjaCBmb3IgZWFjaCB0cmVlIGluIHRoZSBsaWJyYXJ5IHBhdGguCiAJCSAqLwpAQCAt
MTA3Nyw3ICsxMDYyLDcgQEAKIAkJCQkqbmV4dHArKyA9IDA7CiAJCQlpZiAoIWd0YWdzZXhp
c3QobGliZGlyLCBsaWJkYnBhdGgsIHNpemVvZihsaWJkYnBhdGgpLCAwKSkKIAkJCQljb250
aW51ZTsKLQkJCWlmICghU1RSQ01QKGRicGF0aCwgbGliZGJwYXRoKSkKKwkJCWlmICghUEFU
SENNUChkYnBhdGgsIGxpYmRicGF0aCkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoIXRlc3Qo
ImYiLCBtYWtlcGF0aChsaWJkYnBhdGgsIGRibmFtZShkYiksIE5VTEwpKSkKIAkJCQljb250
aW51ZTsKQEAgLTE5NzEsNyArMTk1Niw3IEBACiAJCWNoYXIgKmxpYmRpciwgKm5leHRwID0g
TlVMTDsKIAogCQlzdHJidWZfcHV0cyhzYiwgZ2V0ZW52KCJHVEFHU0xJQlBBVEgiKSk7Ci0J
CWJhY2syc2xhc2goc2IpOworCQliYWNrMnNsYXNoKHN0cmJ1Zl92YWx1ZShzYikpOwogCQkv
KgogCQkgKiBzZWFyY2ggZm9yIGVhY2ggdHJlZSBpbiB0aGUgbGlicmFyeSBwYXRoLgogCQkg
Ki8KQEAgLTE5ODAsNyArMTk2NSw3IEBACiAJCQkJKm5leHRwKysgPSAwOwogCQkJaWYgKCFn
dGFnc2V4aXN0KGxpYmRpciwgbGliZGJwYXRoLCBzaXplb2YobGliZGJwYXRoKSwgMCkpCiAJ
CQkJY29udGludWU7Ci0JCQlpZiAoIVNUUkNNUChkYnBhdGgsIGxpYmRicGF0aCkpCisJCQlp
ZiAoIVBBVEhDTVAoZGJwYXRoLCBsaWJkYnBhdGgpKQogCQkJCWNvbnRpbnVlOwogCQkJaWYg
KCF0ZXN0KCJmIiwgbWFrZXBhdGgobGliZGJwYXRoLCBkYm5hbWUoZGIpLCBOVUxMKSkpCiAJ
CQkJY29udGludWU7CmRpZmYgLXVyIGdsb2JhbC02LjYtMTQvbGlidXRpbC9nZXRkYnBhdGgu
YyBnbG9iYWwtNi42LjE0L2xpYnV0aWwvZ2V0ZGJwYXRoLmMKLS0tIGdsb2JhbC02LjYtMTQv
bGlidXRpbC9nZXRkYnBhdGguYwkyMDI0LTEyLTExIDE2OjQ0OjM0ICsxMDAwCisrKyBnbG9i
YWwtNi42LjE0L2xpYnV0aWwvZ2V0ZGJwYXRoLmMJMjAyNi0wMy0xOSAxNzo0MzoxNiArMTAw
MApAQCAtNTEsNiArNTEsNyBAQAogICovCiAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmlu
ZWQoX19ESkdQUF9fKQogI2RlZmluZSBST09UIDIKKyNpbmNsdWRlICJjaGVja2FsbG9jLmgi
CiAjZWxzZQogI2RlZmluZSBST09UIDAKICNlbmRpZgpAQCAtNzAsMTUgKzcxLDI3IEBACiAJ
aWYgKChwID0gZ2V0ZW52KCJHVEFHU09CSkRJUlBSRUZJWCIpKSAhPSBOVUxMIHx8CiAJICAg
IChwID0gZ2V0ZW52KCJNQUtFT0JKRElSUFJFRklYIikpICE9IE5VTEwpCiAJeworI2lmIGRl
ZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fREpHUFBfXykKKwkJcCA9IGNoZWNrX3N0cmR1
cChwKTsKKwkJYmFjazJzbGFzaCgoY2hhciAqKXApOworI2VuZGlmCiAJCWd0YWdzb2JqZGly
cHJlZml4ID0gcDsKIAkJaWYgKHZlcmJvc2UpCiAJCQlmcHJpbnRmKHN0ZGVyciwgIkdUQUdT
T0JKRElSUFJFRklYIGlzIHNldCB0byAnJXMnLlxuIiwgcCk7CiAJfSBlbHNlIHsKKyNpZiBk
ZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0RKR1BQX18pCisJCWd0YWdzb2JqZGlycHJl
Zml4ID0gImM6L3Vzci9vYmoiOworI2Vsc2UKIAkJZ3RhZ3NvYmpkaXJwcmVmaXggPSAiL3Vz
ci9vYmoiOworI2VuZGlmCiAJfQogCWlmICgocCA9IGdldGVudigiR1RBR1NPQkpESVIiKSkg
IT0gTlVMTCB8fAogCSAgICAocCA9IGdldGVudigiTUFLRU9CSkRJUiIpKSAhPSBOVUxMKQog
CXsKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0RKR1BQX18pCisJCXAgPSBj
aGVja19zdHJkdXAocCk7CisJCWJhY2syc2xhc2goKGNoYXIgKilwKTsKKyNlbmRpZgogCQln
dGFnc29iamRpciA9IHA7CiAJCWlmICh2ZXJib3NlKQogCQkJZnByaW50ZihzdGRlcnIsICJH
VEFHU09CSkRJUiBpcyBzZXQgdG8gJyVzJy5cbiIsIHApOwpAQCAtOTcsMTIgKzExMCwxNSBA
QAogZ2V0b2JqZGlyKGNvbnN0IGNoYXIgKmNhbmRpZGF0ZSwgaW50IHZlcmJvc2UpCiB7CiAJ
c3RhdGljIGNoYXIgcGF0aFtNQVhQQVRITEVOXTsKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwg
ZGVmaW5lZChfX0RKR1BQX18pCisJY2hhciBkcml2ZWxlc3NbTUFYUEFUSExFTl07CisjZW5k
aWYKIAogCS8qCiAJICogc2V0dXAgZ3RhZ3NvYmpkaXIgYW5kIGd0YWdzb2JqZGlycHJlZml4
IChvbmx5IGZpcnN0IHRpbWUpLgogCSAqLwogCWlmIChndGFnc29iamRpciA9PSBOVUxMKQot
CQlzZXR1cHZhcmlhYmxlcygwKTsKKwkJc2V0dXB2YXJpYWJsZXModmVyYm9zZSk7CiAJc25w
cmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvJXMiLCBjYW5kaWRhdGUsIGd0YWdzb2Jq
ZGlyKTsKIAlpZiAodGVzdCgiZCIsIHBhdGgpKSB7CiAJCWlmICghdGVzdCgiZHJ3IiwgcGF0
aCkpCkBAIC0xMTEsNyArMTI3LDEzIEBACiAJCQlmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIG9i
amRpciAnJXMnLlxuIiwgcGF0aCk7CiAJCXJldHVybiBwYXRoOwogCX0KLSNpZiAhZGVmaW5l
ZChfV0lOMzIpICYmICFkZWZpbmVkKF9fREpHUFBfXykKKyNpZiBkZWZpbmVkKF9XSU4zMikg
fHwgZGVmaW5lZChfX0RKR1BQX18pCisJLyoKKwkgKiBEOi9wYXRoIC0+IC9EL3BhdGgKKwkg
Ki8KKwlzbnByaW50Zihkcml2ZWxlc3MsIHNpemVvZihkcml2ZWxlc3MpLCAiLyVjJXMiLCAq
Y2FuZGlkYXRlLCBjYW5kaWRhdGUgKyAyKTsKKwljYW5kaWRhdGUgPSBkcml2ZWxlc3M7Cisj
ZW5kaWYKIAlpZiAodGVzdCgiZCIsIGd0YWdzb2JqZGlycHJlZml4KSkgewogCQlzbnByaW50
ZihwYXRoLCBzaXplb2YocGF0aCksICIlcyVzIiwgZ3RhZ3NvYmpkaXJwcmVmaXgsIGNhbmRp
ZGF0ZSk7CiAJCWlmICh0ZXN0KCJkIiwgcGF0aCkpIHsKQEAgLTEyNyw3ICsxNDksNiBAQAog
CQkJZnByaW50ZihzdGRlcnIsICJVc2luZyBvYmpkaXIgJyVzJy5cbiIsIHBhdGgpOwogCQly
ZXR1cm4gcGF0aDsKIAl9Ci0jZW5kaWYKIAlyZXR1cm4gTlVMTDsKIH0KIC8qKgpAQCAtMTQ4
LDYgKzE2OSw5IEBACiB7CiAJY2hhciBwYXRoW01BWFBBVEhMRU5dOwogCWNvbnN0IGNoYXIg
KmNhbmRpZGF0ZV93aXRob3V0X3NsYXNoOworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZp
bmVkKF9fREpHUFBfXykKKwljaGFyIGRyaXZlbGVzc1tNQVhQQVRITEVOXTsKKyNlbmRpZgog
CiAJLyoKIAkgKiBzZXR1cCBndGFnc29iamRpciBhbmQgZ3RhZ3NvYmpkaXJwcmVmaXggKG9u
bHkgZmlyc3QgdGltZSkuCkBAIC0xNzgsNyArMjAyLDEwIEBACiAJCXNucHJpbnRmKGRicGF0
aCwgc2l6ZSwgIiVzLyVzIiwgY2FuZGlkYXRlX3dpdGhvdXRfc2xhc2gsIGd0YWdzb2JqZGly
KTsKIAkJcmV0dXJuIDE7CiAJfQotI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQo
X19ESkdQUF9fKQorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fREpHUFBfXykK
KwlzbnByaW50Zihkcml2ZWxlc3MsIHNpemVvZihkcml2ZWxlc3MpLCAiLyVjJXMiLCAqY2Fu
ZGlkYXRlLCBjYW5kaWRhdGUgKyAyKTsKKwljYW5kaWRhdGVfd2l0aG91dF9zbGFzaCA9IGRy
aXZlbGVzczsKKyNlbmRpZgogCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwKIAkJIiVz
JXMvJXMiLCBndGFnc29iamRpcnByZWZpeCwgY2FuZGlkYXRlX3dpdGhvdXRfc2xhc2gsIGRi
bmFtZShHVEFHUykpOwogCWlmICh2ZXJib3NlKQpAQCAtMTg5LDcgKzIxNiw2IEBACiAJCXNu
cHJpbnRmKGRicGF0aCwgc2l6ZSwgIiVzJXMiLCBndGFnc29iamRpcnByZWZpeCwgY2FuZGlk
YXRlX3dpdGhvdXRfc2xhc2gpOwogCQlyZXR1cm4gMTsKIAl9Ci0jZW5kaWYKIAlyZXR1cm4g
MDsKIH0KIHN0YXRpYyBjaGFyIGRicGF0aFtNQVhQQVRITEVOXTsKQEAgLTM1Niw3ICszODIs
NyBAQAogaW50CiBpbl90aGVfcHJvamVjdChjb25zdCBjaGFyICpwYXRoKQogewotCWlmICgh
c3RyY21wKHBhdGgsIHJvb3QpIHx8IGxvY2F0ZXN0cmluZyhwYXRoLCByb290X3dpdGhfc2xh
c2gsIE1BVENIX0FUX0ZJUlNUKSkKKwlpZiAoIVBBVEhDTVAocGF0aCwgcm9vdCkgfHwgbG9j
YXRlc3RyaW5nKHBhdGgsIHJvb3Rfd2l0aF9zbGFzaCwgTUFUQ0hfQVRfRklSU1QpKQogCQly
ZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtdXIgZ2xvYmFsLTYuNi0xNC9saWJ1dGls
L3BhdGguYyBnbG9iYWwtNi42LjE0L2xpYnV0aWwvcGF0aC5jCi0tLSBnbG9iYWwtNi42LTE0
L2xpYnV0aWwvcGF0aC5jCTIwMjQtMTItMTEgMTY6NDQ6MzQgKzEwMDAKKysrIGdsb2JhbC02
LjYuMTQvbGlidXRpbC9wYXRoLmMJMjAyNi0wMy0xOSAxNzoxOToxMiArMTAwMApAQCAtMTk1
LDYgKzE5NSwxOCBAQAogfQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVm
aW5lZChfX0RKR1BQX18pCitjaGFyICoKK2JhY2syc2xhc2goY2hhciAqcGF0aCkKK3sKKwlj
aGFyICpwOworCWZvciAocCA9IHBhdGg7ICpwOyBwKyspCisJCWlmICgqcCA9PSAnXFwnKQor
CQkJKnAgPSAnLyc7CisJcmV0dXJuIHBhdGg7Cit9CisjZW5kaWYKKwogI2RlZmluZSBTRVAg
Jy8nCiAKIC8qKgpkaWZmIC11ciBnbG9iYWwtNi42LTE0L2xpYnV0aWwvcGF0aC5oIGdsb2Jh
bC02LjYuMTQvbGlidXRpbC9wYXRoLmgKLS0tIGdsb2JhbC02LjYtMTQvbGlidXRpbC9wYXRo
LmgJMjAyNC0xMi0xMSAxNjo0NDozNCArMTAwMAorKysgZ2xvYmFsLTYuNi4xNC9saWJ1dGls
L3BhdGguaAkyMDI2LTAzLTE5IDE3OjIwOjA1ICsxMDAwCkBAIC00Myw2ICs0MywxMyBAQAog
I2lmIChkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19DWUdXSU5fXykpIHx8IGRlZmlu
ZWQoX19ESkdQUF9fKQogY2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFyICopOwog
I2VuZGlmCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19ESkdQUF9fKQorY2hh
ciAqYmFjazJzbGFzaChjaGFyICopOworI2RlZmluZSBQQVRIQ01QIHN0cmljbXAKKyNlbHNl
CisjZGVmaW5lIGJhY2syc2xhc2gocGF0aCkgcGF0aAorI2RlZmluZSBQQVRIQ01QIHN0cmNt
cAorI2VuZGlmCiBpbnQgbWFrZWRpcmVjdG9yaWVzKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwogY29uc3QgY2hhciAqdHJpbXBhdGgoY29uc3QgY2hhciAqKTsKIGNoYXIg
KnZnZXRjd2QoY2hhciAqLCBzaXplX3QpOwo=

--------------kEY3bmVZA5Ok9iJQitLQi5Gh--