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, </div> <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;"> </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. </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. </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. </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;"> </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. </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. </div> <div class="default-style" style="font-family: -apple-system,BlinkMacSystemFont,helvetica,sans-serif;"> </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--