Re: [PATCH] dir: avoid -Wdiscarded-qualifiers in remove_path()
Collin Funk <collin.funk1@gmail.com> writes:
Show 13 quoted lines
> 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?
Show 5 quoted lines
>
> Signed-off-by: Collin Funk <collin.funk1@gmail.com>
> ---
> dir.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
The changes make sense. Thanks.
Show 24 quoted lines
> 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 &&