Patches for windows paths

"pascal.jaeger leimstift.de" <[email protected]> Tue, 17 Mar 2026 16:21:57 +0100 (CET)
Newsgroups gmane.comp.gnu.global.bugs
Message-ID <[email protected]>
------=_Part_371516_712908264.1773760917467
Content-Type: multipart/alternative; 
	boundary="----=_Part_371517_1509089096.1773760917467"

------=_Part_371517_1509089096.1773760917467
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi, 
 
having to use GNU Global on windows on my work computer and I noticed that GTAGSOBJDIRPREFIX does not work for windows. 
I examined the code and noticed the creation of the folders in GTAGSOBJDIRPREFIX is just skipped by an #ifdef if global is compiled for windows. 
Thinking about this it is quite obvious why. Windows paths are awful to concatenate and you cannot do something simple. If you have something like C:\some\path as the GTAGSOBJDIRPREFIX and want to create GTAGS for C:/my/project, you would end up with C:\\some\\path/C:/my/project/ as objdir. 
Well but you can solve this by getting rid of the second : and just have C:\\some\\path/C/my/project/. (yes, apparently windows can work with that \\ / mess) Getting rid of the whole drive letter isn't a good idea I think, because you could have 2 projects in C:/my/project and D:/my/project and this could end up messy.
 
I patched this functionality in. It also normalizes the windows paths to use only /.
The patch is attached. Let me know if you want me to change anything for it. 
If you want to merge it into core, I will sign that copyright letter and send it to you. 
 
Best regards
------=_Part_371517_1509089096.1773760917467
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<!doctype html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head>
 <body>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">Hi,&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">having to use GNU Global on windows on my work computer and I noticed that GTAGSOBJDIRPREFIX does not work for windows.&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">I examined the code and noticed the creation of the folders in GTAGSOBJDIRPREFIX is just skipped by an #ifdef if global is compiled for windows.&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">Thinking about this it is quite obvious why. Windows paths are awful to concatenate and you cannot do something simple. If you have something like C:\some\path as the GTAGSOBJDIRPREFIX and want to create GTAGS for C:/my/project, you would end up with C:\\some\\path/C:/my/project/ as objdir.&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">Well but you can solve this by getting rid of the second : and just have C:\\some\\path/C/my/project/. (yes, apparently windows can work with that \\ / mess) Getting rid of the whole drive letter isn't a good idea I think, because you could have 2 projects in C:/my/project and D:/my/project and this could end up messy.</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">I patched this functionality in. It also normalizes the windows paths to use only /.</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">The patch is attached. Let me know if you want me to change anything for it.&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">If you want to merge it into core, I will sign that copyright letter and send it to you.&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">&nbsp;</div>
  <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;">Best regards</div>
 </body>
</html>
------=_Part_371517_1509089096.1773760917467--

------=_Part_371516_712908264.1773760917467
Content-Type: application/octet-stream; name=windows_objdirprefix.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=windows_objdirprefix.patch
X-Part-Id: 0a498e9783a74df0809429434209634f

SW5kZXg6IGxpYnV0aWwvZ2V0ZGJwYXRoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJjZXMv
Z2xvYmFsL2dsb2JhbC9saWJ1dGlsL2dldGRicGF0aC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjM5CmRpZmYgLXUgLXIxLjM5IGdldGRicGF0aC5jCi0tLSBsaWJ1dGlsL2dldGRicGF0aC5jCTI3
IE1hciAyMDE3IDIzOjI1OjE4IC0wMDAwCTEuMzkKKysrIGxpYnV0aWwvZ2V0ZGJwYXRoLmMJMTYg
TWFyIDIwMjYgMjE6NDg6NDAgLTAwMDAKQEAgLTQ3LDYgKzQ3LDIwIEBACiAjaW5jbHVkZSAidGVz
dC5oIgogCiAvKioKKyAqIG5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBpbiBwYXRocyB0byBmb3J3YXJk
IHNsYXNoZXMKKyAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fREpHUFBfXykK
KyNkZWZpbmUgYmFjazJzbGFzaF9zdHIoc3RyKSBkbyB7CVwKKwljaGFyICpwID0gc3RyOwkJCQlc
CisJZm9yICg7ICpwOyBwKyspCQkJXAorCQlpZiAoKnAgPT0gJ1xcJykgICAgICAgICAgICAgXAor
CQkJKnAgPSAnLyc7ICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKyNlbHNlCisjZGVmaW5l
IGJhY2syc2xhc2hfc3RyKHN0cikKKyNlbmRpZgorCisvKioKICAqIGRlZmluZSB0aGUgcG9zaXRp
b24gb2YgdGhlIHJvb3Qgc2xhc2guCiAgKi8KICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5l
ZChfX0RKR1BQX18pCkBAIC01OSw2ICs3MywyMCBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmd0YWdz
b2JqZGlyOwkJLyoqPCB0YWcgZGlyZWN0b3J5CSovCiBjaGFyIGNvbnN0ICpndGFnc19kYnBhdGhf
ZXJyb3I7CQkvKio8IGVycm9yIG1lc3NhZ2UJKi8KIAorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBk
ZWZpbmVkKF9fREpHUFBfXykKK3N0YXRpYyBjb25zdCBjaGFyICoKK3N0cmlwX2RyaXZlX2NvbG9u
KGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCit7CisgICAgY2hh
ciAqZHN0ID0gYnVmOworICAgIGNvbnN0IGNoYXIgKnNyYyA9IHBhdGg7CisgICAgZm9yICg7ICpz
cmMgJiYgZHN0IC0gYnVmIDwgYnVmc2l6ZSAtIDE7IHNyYysrKQorICAgICAgICBpZiAoKnNyYyAh
PSAnOicpCisgICAgICAgICAgICAqZHN0KysgPSAqc3JjOworICAgICpkc3QgPSAnXDAnOworICAg
IHJldHVybiBidWY7Cit9CisjZW5kaWYKKwogLyoqCiAgKiBzZXR1cHZhcmlhYmxlczogbG9hZCB2
YXJpYWJsZXMgcmVnYXJkIHRvIEJTRCBPQkogZGlyZWN0b3J5LgogICovCkBAIC0xMDIsOCArMTMw
LDkgQEAKIAkgKiBzZXR1cCBndGFnc29iamRpciBhbmQgZ3RhZ3NvYmpkaXJwcmVmaXggKG9ubHkg
Zmlyc3QgdGltZSkuCiAJICovCiAJaWYgKGd0YWdzb2JqZGlyID09IE5VTEwpCi0JCXNldHVwdmFy
aWFibGVzKDApOworCQlzZXR1cHZhcmlhYmxlcyh2ZXJib3NlKTsKIAlzbnByaW50ZihwYXRoLCBz
aXplb2YocGF0aCksICIlcy8lcyIsIGNhbmRpZGF0ZSwgZ3RhZ3NvYmpkaXIpOworCWJhY2syc2xh
c2hfc3RyKHBhdGgpOwogCWlmICh0ZXN0KCJkIiwgcGF0aCkpIHsKIAkJaWYgKCF0ZXN0KCJkcnci
LCBwYXRoKSkKIAkJCWRpZSgiRm91bmQgb2JqZGlyICclcycsIGJ1dCB5b3UgZG9uJ3QgaGF2ZSBy
ZWFkL3dyaXRlIHBlcm1pc3Npb24gZm9yIGl0LiIsIHBhdGgpOwpAQCAtMTI3LDYgKzE1NiwyNSBA
QAogCQkJZnByaW50ZihzdGRlcnIsICJVc2luZyBvYmpkaXIgJyVzJy5cbiIsIHBhdGgpOwogCQly
ZXR1cm4gcGF0aDsKIAl9CisjZWxzZSAvLyBXSU4KKwlpZiAodGVzdCgiZCIsIGd0YWdzb2JqZGly
cHJlZml4KSkgeworCQkgICAgY2hhciBzdHJpcHBlZFtNQVhQQVRITEVOXTsKKyAgICBzdHJpcF9k
cml2ZV9jb2xvbihjYW5kaWRhdGUsIHN0cmlwcGVkLCBzaXplb2Yoc3RyaXBwZWQpKTsKKwkJc25w
cmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMlcyIsIGd0YWdzb2JqZGlycHJlZml4LCBzdHJp
cHBlZCk7CisJCWlmICh0ZXN0KCJkIiwgcGF0aCkpIHsKKwkJCWlmICghdGVzdCgiZHJ3IiwgcGF0
aCkpCisJCQkJZGllKCJGb3VuZCBvYmpkaXIgJyVzJywgYnV0IHlvdSBkb24ndCBoYXZlIHJlYWQv
d3JpdGUgcGVybWlzc2lvbiBmb3IgaXQuIiwgcGF0aCk7CisJCQlpZiAodmVyYm9zZSkKKwkJCQlm
cHJpbnRmKHN0ZGVyciwgIlVzaW5nIG9iamRpciAnJXMnLlxuIiwgcGF0aCk7CisJCQlyZXR1cm4g
cGF0aDsKKwkJfQorCQlpZiAobWFrZWRpcmVjdG9yaWVzKGd0YWdzb2JqZGlycHJlZml4LCBzdHJp
cHBlZCwgdmVyYm9zZSkgPCAwKQorCQkJZGllKCJGb3VuZCB0aGUgYmFzZSBmb3Igb2JqZGlyICcl
cycsIGJ1dCB5b3UgY2Fubm90IGNyZWF0ZSBuZXcgZGlyZWN0b3J5IGluIGl0LiIsIHBhdGgpOwor
CQlpZiAodmVyYm9zZSkKKwkJCWZwcmludGYoc3RkZXJyLCAiVXNpbmcgb2JqZGlyICclcycuXG4i
LCBwYXRoKTsKKwkJcmV0dXJuIHBhdGg7CisJfQorCiAjZW5kaWYKIAlyZXR1cm4gTlVMTDsKIH0K
QEAgLTE4OSw2ICsyMzcsMjAgQEAKIAkJc25wcmludGYoZGJwYXRoLCBzaXplLCAiJXMlcyIsIGd0
YWdzb2JqZGlycHJlZml4LCBjYW5kaWRhdGVfd2l0aG91dF9zbGFzaCk7CiAJCXJldHVybiAxOwog
CX0KKyNlbHNlIC8vIFdJTgorCWNoYXIgc3RyaXBwZWRbTUFYUEFUSExFTl07CisJc3RyaXBfZHJp
dmVfY29sb24oY2FuZGlkYXRlX3dpdGhvdXRfc2xhc2gsIHN0cmlwcGVkLCBzaXplb2Yoc3RyaXBw
ZWQpKTsKKwlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy8lcy8lcyIsIGd0YWdzb2Jq
ZGlycHJlZml4LCBzdHJpcHBlZCwgZGJuYW1lKEdUQUdTKSk7CisJYmFjazJzbGFzaF9zdHIocGF0
aCk7CisJaWYgKHZlcmJvc2UpCisJCWZwcmludGYoc3RkZXJyLCAiY2hlY2tpbmcgJXNcbiIsIHBh
dGgpOworCWlmICh0ZXN0KCJmciIsIHBhdGgpKSB7CisJCWlmICh2ZXJib3NlKQorCQkJZnByaW50
ZihzdGRlcnIsICJHVEFHUyBmb3VuZCBhdCAnJXMnLlxuIiwgcGF0aCk7CisJCXNucHJpbnRmKGRi
cGF0aCwgc2l6ZSwgIiVzLyVzIiwgZ3RhZ3NvYmpkaXJwcmVmaXgsIHN0cmlwcGVkKTsKKwkJYmFj
azJzbGFzaF9zdHIoZGJwYXRoKTsKKwkJcmV0dXJuIDE7CisJfQogI2VuZGlmCiAJcmV0dXJuIDA7
CiB9CkluZGV4OiBnbG9iYWwvZ2xvYmFsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJjZXMv
Z2xvYmFsL2dsb2JhbC9nbG9iYWwvZ2xvYmFsLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzIz
CmRpZmYgLXUgLXIxLjMyMyBnbG9iYWwuYwotLS0gZ2xvYmFsL2dsb2JhbC5jCTggTWF5IDIwMjUg
MDg6NDA6MDEgLTAwMDAJMS4zMjMKKysrIGdsb2JhbC9nbG9iYWwuYwkxNiBNYXIgMjAyNiAyMTo0
ODo0MSAtMDAwMApAQCAtOTUxLDcgKzk1MSw3IEBACiAJCQl0eXBlID0gUEFUSF9BQlNPTFVURTsK
IAkJZWxzZSBpZiAoIXN0cmNtcChwYXRoX3N0eWxlLCAidGhyb3VnaCIpKSB7CiAJCQl0eXBlID0g
UEFUSF9USFJPVUdIOwotCQkJdW5zZXRlbnYoIkdUQUdTTElCUEFUSCIpOworCQkJcHV0ZW52KCJH
VEFHU0xJQlBBVEg9Iik7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcChwYXRoX3N0eWxlLCAic2hvcnRl
ciIpKQogCQkJdHlwZSA9IFBBVEhfU0hPUlRFUjsKIAkJZWxzZSBpZiAoIXN0cmNtcChwYXRoX3N0
eWxlLCAiYWJzbGliIikpIHsK
------=_Part_371516_712908264.1773760917467--