From: Junio C Hamano Date: Mon, 09 Mar 2026 14:59:35 GMT Subject: Re: [PATCH] dir: avoid -Wdiscarded-qualifiers in remove_path() Message-ID: In-Reply-To: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com> Collin Funk writes: > When building with glibc-2.43 there is the following warning: > > dir.c:3526:15: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] > 3526 | slash = strrchr(name, '/'); > | ^ > > In this case we use a non-const pointer to get the last slash of the > unwritable file name, and then use it again to write in the strdup'd > file name. > > We can avoid this warning and make the code a bit more clear by using a > separate variable to access the original argument and it's strdup'd > copy. "it's" -> "its", if I am reading the above correctly? > > Signed-off-by: Collin Funk > --- > dir.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) The changes make sense. Thanks. > diff --git a/dir.c b/dir.c > index 026d8516a9..fcb8f6dd2a 100644 > --- a/dir.c > +++ b/dir.c > @@ -3518,15 +3518,15 @@ int get_sparse_checkout_patterns(struct pattern_list *pl) > > int remove_path(const char *name) > { > - char *slash; > + const char *last; > > if (unlink(name) && !is_missing_file_error(errno)) > return -1; > > - slash = strrchr(name, '/'); > - if (slash) { > + last = strrchr(name, '/'); > + if (last) { > char *dirs = xstrdup(name); > - slash = dirs + (slash - name); > + char *slash = dirs + (last - name); > do { > *slash = '\0'; > if (startup_info->original_cwd &&