All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: [PATCH] add grub_qsort_strcmp to use when sorting array of strings
Date: Sat, 30 Nov 2013 11:39:12 +0100	[thread overview]
Message-ID: <5299C050.4040507@gmail.com> (raw)
In-Reply-To: <1385744460-6624-1-git-send-email-arvidjaar@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1993 bytes --]

On 29.11.2013 18:01, Andrey Borzenkov wrote:
> Compare function used in qsort gets arguments by reference, so strcmp
> cannot be used directly - it expects pointer to char, but gets pointer
> to pointer to char.
> 
> Introduce new helper grub_qsort_strcmp and use it in grub-install.
> This helper is going to be used in a couple more places as well so
> add it to global file, not in grub-install.c.
> 
Nice catch. But I don't we have enough use for grub_qsort_strcmp to make
it global. Can you make it static in grub-install.c ?
> ---
>  include/grub/util/misc.h | 2 ++
>  util/grub-install.c      | 2 +-
>  util/misc.c              | 8 ++++++++
>  3 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/include/grub/util/misc.h b/include/grub/util/misc.h
> index 6aacf23..192874d 100644
> --- a/include/grub/util/misc.h
> +++ b/include/grub/util/misc.h
> @@ -47,4 +47,6 @@ void grub_util_init_nls (void);
>  
>  void grub_util_host_init (int *argc, char ***argv);
>  
> +int grub_qsort_strcmp (const void *, const void *);
> +
>  #endif /* ! GRUB_UTIL_MISC_HEADER */
> diff --git a/util/grub-install.c b/util/grub-install.c
> index 5354a6d..1870182 100644
> --- a/util/grub-install.c
> +++ b/util/grub-install.c
> @@ -583,7 +583,7 @@ device_map_check_duplicates (const char *dev_map)
>  
>    fclose (fp);
>  
> -  qsort (d, filled, sizeof (d[0]), (int (*) (const void *, const void *))strcmp);
> +  qsort (d, filled, sizeof (d[0]), grub_qsort_strcmp);
>  
>    for (i = 0; i + 1 < filled; i++)
>      if (strcmp (d[i], d[i+1]) == 0)
> diff --git a/util/misc.c b/util/misc.c
> index 0de340b..9eb1fc1 100644
> --- a/util/misc.c
> +++ b/util/misc.c
> @@ -256,3 +256,11 @@ void
>  grub_register_exported_symbols (void)
>  {
>  }
> +
> +/* Used in comparison of arrays of strings with qsort */
> +int
> +grub_qsort_strcmp (const void *p1, const void *p2)
> +{
> +  return strcmp(*(char **)p1, *(char **)p2);
> +}
> +
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 291 bytes --]

  reply	other threads:[~2013-11-30 10:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-29 17:01 [PATCH] add grub_qsort_strcmp to use when sorting array of strings Andrey Borzenkov
2013-11-30 10:39 ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2013-11-30 10:59   ` Andrey Borzenkov
2013-12-02  5:34     ` Vladimir 'φ-coder/phcoder' Serbinenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5299C050.4040507@gmail.com \
    --to=phcoder@gmail.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.