On 17/01/2019 21:24, Jeff King wrote: > On Thu, Jan 17, 2019 at 12:13:12PM -0800, Junio C Hamano wrote: > >>> @@ -966,7 +968,9 @@ int verify_path(const char *path, unsigned mode) >>> if (is_hfs_dotgit(path)) >>> return 0; >>> if (S_ISLNK(mode)) { >>> - if (is_hfs_dotgitmodules(path)) >>> + if (is_hfs_dotgitmodules(path) || >>> + is_hfs_dotgitignore(path) || >>> + is_hfs_dotgitattributes(path)) >>> return 0; >>> } >>> } >>> @@ -974,7 +978,9 @@ int verify_path(const char *path, unsigned mode) >>> if (is_ntfs_dotgit(path)) >>> return 0; >>> if (S_ISLNK(mode)) { >>> - if (is_ntfs_dotgitmodules(path)) >>> + if (is_ntfs_dotgitmodules(path) || >>> + is_ntfs_dotgitignore(path) || >>> + is_ntfs_dotgitattributes(path)) >>> return 0; >> >> Curious that we already have these helpers, nobody seems to call >> them in the current codebase, and we haven't seen the "these are >> unused" linter message on the list for a while ;-). > > Heh. Yeah, I was surprised by that, too. They were added by e7cb0b4455 > (is_ntfs_dotgit: match other .git files, 2018-05-11). The original > version of my series had the hunks quoted above, and then we backed off > on handling them as part of the emergency fix, but I never re-rolled the > preparatory patch to get rid of them. > > I think they got overlooked because they're not file-local statics, and > it's much harder to say "this is never called by any function in another > translation unit". You probably have to do analysis on the complete > binaries using "nm" or similar. I think maybe Ramsay does that from time > to time, but I don't offhand know the correct incantation. I don't do this "from time to time", but *every* build on all platforms! :-D As I have mentioned before, I run the script on 'master', 'next' and 'pu', but I don't look at the results for 'master', I simply look at the diffs master->next and next->pu. I put the output of 'static-check.pl' in the sc, nsc and psc files (guess which files are for which branches!). For example, tonight I find: $ wc -l sc nsc psc 90 sc 90 nsc 100 psc 280 total $ diff sc nsc $ diff nsc psc 29a30,32 > config.o - repo_config_set > config.o - repo_config_set_gently > config.o - repo_config_set_worktree_gently 32a36 > fuzz-commit-graph.o - LLVMFuzzerTestOneInput 37a42,43 > hex.o - hash_to_hex > hex.o - hash_to_hex_algop_r 74a81,83 > sha1-file.o - hash_algo_by_id > sha1-file.o - hash_algo_by_name > sha1-file.o - repo_has_sha1_file_with_flags 80a90 > strbuf.o - strbuf_vinsertf $ BTW, if my memory serves (and it may not), the symbols you refer to came directly into 'master' (via 'maint') as a result of security updates - so I would never have seen them in 'pu' or 'next'. They are, indeed, currently noted in the 'master' branch: $ grep is_ntfs_ sc path.o - is_ntfs_dotgitattributes path.o - is_ntfs_dotgitignore $ grep is_hfs_ sc utf8.o - is_hfs_dotgitattributes utf8.o - is_hfs_dotgitignore $ ATB, Ramsay Jones