This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix warnings in manual/examples/search.c
On 05/16/2012 07:37 PM, Paul Eggert wrote:
> On 05/16/2012 04:24 AM, Andreas Jaeger wrote:
>> -critter_cmp (const struct critter *c1, const struct critter *c2)
>> +critter_cmp (const void *v1, const void *v2)
>> {
>> + struct critter *c1 = (struct critter *)v1;
>> + struct critter *c2 = (struct critter *)v2;
>> +
>> return strcmp (c1->name, c2->name);
>
> Please redo it so that no casts are needed, as pointer casts
> are big hammers that shouldn't be used unless necessary.
> Like this:
>
> int
> critter_cmp (const void *v1, const void *v2)
> {
> const struct critter *c1 = v1;
> const struct critter *c2 = v2;
> return strcmp (c1->name, c2->name);
> }
>
> Similarly for the other two examples.
Ok, here's what I'll commit later,
Andreas
diff --git a/manual/examples/search.c b/manual/examples/search.c
index e376567..7fe05ea 100644
--- a/manual/examples/search.c
+++ b/manual/examples/search.c
@@ -53,8 +53,11 @@ int count = sizeof (muppets) / sizeof (struct critter);
/* This is the comparison function used for sorting and searching. */
int
-critter_cmp (const struct critter *c1, const struct critter *c2)
+critter_cmp (const void *v1, const void *v2)
{
+ const struct critter *c1 = v1;
+ const struct critter *c2 = v2;
+
return strcmp (c1->name, c2->name);
}
diff --git a/manual/string.texi b/manual/string.texi
index 5051f54..831873b 100644
--- a/manual/string.texi
+++ b/manual/string.texi
@@ -1370,8 +1370,11 @@ efficiently using @code{strxfrm}.)
/* @r{This is the comparison function used with @code{qsort}.} */
int
-compare_elements (char **p1, char **p2)
+compare_elements (const void *v1, const void *v2)
@{
+ char * const *p1 = v1;
+ char * const *p1 = v2;
+
return strcoll (*p1, *p2);
@}
@@ -1462,8 +1465,11 @@ struct sorter @{ char *input; char *transformed; @};
@r{to sort an array of @code{struct sorter}.} */
int
-compare_elements (struct sorter *p1, struct sorter *p2)
+compare_elements (const void *v1, const void *v2)
@{
+ const struct sorter *p1 = v1;
+ const struct sorter *p2 = v2;
+
return strcmp (p1->transformed, p2->transformed);
@}
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 NÃrnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix ImendÃrffer,HRB16746 (AG NÃrnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126