Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mail/panda-cclient: fix build with clang 16
Clang 16 has a new error about incompatible function types, which shows up when building mail/panda-cclient: news.c:370:36: error: incompatible function pointer types passing 'int (struct dirent *)' to parameter of type 'int (*)(const struct dirent *)' [-Wincompatible-function-pointer-types] if ((nmsgs = scandir (tmp,&names,news_select,news_numsort)) >= 0) { ^~~~~~~~~~~ /usr/include/dirent.h:127:12: note: passing argument to parameter here int (*)(const struct dirent *), int (*)(const struct dirent **, ^ news.c:370:48: error: incompatible function pointer types passing 'int (const void *, const void *)' to parameter of type 'int (*)(const struct dirent **, const struct dirent **)' [-Wincompatible-function-pointer-types] if ((nmsgs = scandir (tmp,&names,news_select,news_numsort)) >= 0) { ^~~~~~~~~~~~ /usr/include/dirent.h:127:44: note: passing argument to parameter here int (*)(const struct dirent *), int (*)(const struct dirent **, ^ This is because the prototypes for the scandir(3) 'select' and 'compar' callback function parameters do not match the declarations in <dirent.h>. The same occurs in a few other files under src/osdep/unix. Fix these by using the correct parameter types for the callback functions. PR: 271539 Approved by: thierry (maintainer) MFH: 2023Q2
- Loading branch information
1 parent
f475553
commit 7c71169
Showing
5 changed files
with
160 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- src/osdep/unix/mh.c.orig 2022-04-17 00:12:02 UTC | ||
+++ src/osdep/unix/mh.c | ||
@@ -100,8 +100,8 @@ long mh_append (MAILSTREAM *stream,char *mailbox,appen | ||
long options); | ||
long mh_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data); | ||
|
||
-int mh_select (struct direct *name); | ||
-int mh_numsort (const void *d1,const void *d2); | ||
+int mh_select (const struct direct *name); | ||
+int mh_numsort (const struct direct **d1,const struct direct **d2); | ||
char *mh_file (char *dst,char *name); | ||
long mh_canonicalize (char *pattern,char *ref,char *pat); | ||
void mh_setdate (char *file,MESSAGECACHE *elt); | ||
@@ -1191,7 +1191,7 @@ long mh_append (MAILSTREAM *stream,char *mailbox,appen | ||
* Returns: T to use file name, NIL to skip it | ||
*/ | ||
|
||
-int mh_select (struct direct *name) | ||
+int mh_select (const struct direct *name) | ||
{ | ||
char c; | ||
char *s = name->d_name; | ||
@@ -1206,10 +1206,9 @@ int mh_select (struct direct *name) | ||
* Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2 | ||
*/ | ||
|
||
-int mh_numsort (const void *d1,const void *d2) | ||
+int mh_numsort (const struct direct **d1,const struct direct **d2) | ||
{ | ||
- return atoi ((*(struct direct **) d1)->d_name) - | ||
- atoi ((*(struct direct **) d2)->d_name); | ||
+ return atoi ((*d1)->d_name) - atoi ((*d2)->d_name); | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
--- src/osdep/unix/mix.c.orig 2022-04-17 00:12:02 UTC | ||
+++ src/osdep/unix/mix.c | ||
@@ -123,7 +123,7 @@ long mix_rename (MAILSTREAM *stream,char *old,char *ne | ||
long mix_create (MAILSTREAM *stream,char *mailbox); | ||
long mix_delete (MAILSTREAM *stream,char *mailbox); | ||
long mix_rename (MAILSTREAM *stream,char *old,char *newname); | ||
-int mix_rselect (struct direct *name); | ||
+int mix_rselect (const struct direct *name); | ||
MAILSTREAM *mix_open (MAILSTREAM *stream); | ||
void mix_close (MAILSTREAM *stream,long options); | ||
void mix_abort (MAILSTREAM *stream); | ||
@@ -138,8 +138,8 @@ long mix_expunge (MAILSTREAM *stream,char *sequence,lo | ||
long mix_ping (MAILSTREAM *stream); | ||
void mix_check (MAILSTREAM *stream); | ||
long mix_expunge (MAILSTREAM *stream,char *sequence,long options); | ||
-int mix_select (struct direct *name); | ||
-int mix_msgfsort (const void *d1,const void *d2); | ||
+int mix_select (const struct direct *name); | ||
+int mix_msgfsort (const struct direct **d1,const struct direct **d2); | ||
long mix_addset (SEARCHSET **set,unsigned long start,unsigned long size); | ||
long mix_burp (MAILSTREAM *stream,MIXBURP *burp,unsigned long *reclaimed); | ||
long mix_burp_check (SEARCHSET *set,size_t size,char *file); | ||
@@ -585,7 +585,7 @@ long mix_rename (MAILSTREAM *stream,char *old,char *ne | ||
* Returns: T if mix file name, NIL otherwise | ||
*/ | ||
|
||
-int mix_rselect (struct direct *name) | ||
+int mix_rselect (const struct direct *name) | ||
{ | ||
return mix_dirfmttest (name->d_name); | ||
} | ||
@@ -1150,7 +1150,7 @@ long mix_expunge (MAILSTREAM *stream,char *sequence,lo | ||
* ".mix" with no suffix was used by experimental versions | ||
*/ | ||
|
||
-int mix_select (struct direct *name) | ||
+int mix_select (const struct direct *name) | ||
{ | ||
char c,*s; | ||
/* make sure name has prefix */ | ||
@@ -1169,10 +1169,10 @@ int mix_select (struct direct *name) | ||
* Returns: -1 if d1 < d2, 0 if d1 == d2, 1 d1 > d2 | ||
*/ | ||
|
||
-int mix_msgfsort (const void *d1,const void *d2) | ||
+int mix_msgfsort (const struct direct **d1,const struct direct **d2) | ||
{ | ||
- char *n1 = (*(struct direct **) d1)->d_name + sizeof (MIXNAME) - 1; | ||
- char *n2 = (*(struct direct **) d2)->d_name + sizeof (MIXNAME) - 1; | ||
+ char *n1 = (*d1)->d_name + sizeof (MIXNAME) - 1; | ||
+ char *n2 = (*d2)->d_name + sizeof (MIXNAME) - 1; | ||
return compare_ulong (*n1 ? strtoul (n1,NIL,16) : 0, | ||
*n2 ? strtoul (n2,NIL,16) : 0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- src/osdep/unix/mx.c.orig 2022-04-17 00:12:02 UTC | ||
+++ src/osdep/unix/mx.c | ||
@@ -98,8 +98,8 @@ long mx_append_msg (MAILSTREAM *stream,char *flags,MES | ||
long mx_append_msg (MAILSTREAM *stream,char *flags,MESSAGECACHE *elt, | ||
STRING *st,SEARCHSET *set); | ||
|
||
-int mx_select (struct direct *name); | ||
-int mx_numsort (const void *d1,const void *d2); | ||
+int mx_select (const struct direct *name); | ||
+int mx_numsort (const struct direct **d1,const struct direct **d2); | ||
char *mx_file (char *dst,char *name); | ||
long mx_lockindex (MAILSTREAM *stream); | ||
void mx_unlockindex (MAILSTREAM *stream); | ||
@@ -1110,7 +1110,7 @@ long mx_append_msg (MAILSTREAM *stream,char *flags,MES | ||
* Returns: T to use file name, NIL to skip it | ||
*/ | ||
|
||
-int mx_select (struct direct *name) | ||
+int mx_select (const struct direct *name) | ||
{ | ||
char c; | ||
char *s = name->d_name; | ||
@@ -1125,10 +1125,9 @@ int mx_select (struct direct *name) | ||
* Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2 | ||
*/ | ||
|
||
-int mx_numsort (const void *d1,const void *d2) | ||
+int mx_numsort (const struct direct **d1,const struct direct **d2) | ||
{ | ||
- return atoi ((*(struct direct **) d1)->d_name) - | ||
- atoi ((*(struct direct **) d2)->d_name); | ||
+ return atoi ((*d1)->d_name) - atoi ((*d2)->d_name); | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- src/osdep/unix/news.c.orig 2022-04-17 00:12:02 UTC | ||
+++ src/osdep/unix/news.c | ||
@@ -76,8 +76,8 @@ MAILSTREAM *news_open (MAILSTREAM *stream); | ||
long news_delete (MAILSTREAM *stream,char *mailbox); | ||
long news_rename (MAILSTREAM *stream,char *old,char *newname); | ||
MAILSTREAM *news_open (MAILSTREAM *stream); | ||
-int news_select (struct direct *name); | ||
-int news_numsort (const void *d1,const void *d2); | ||
+int news_select (const struct direct *name); | ||
+int news_numsort (const struct direct **d1,const struct direct **d2); | ||
void news_close (MAILSTREAM *stream,long options); | ||
void news_fast (MAILSTREAM *stream,char *sequence,long flags); | ||
void news_flags (MAILSTREAM *stream,char *sequence,long flags); | ||
@@ -402,7 +402,7 @@ MAILSTREAM *news_open (MAILSTREAM *stream) | ||
* Returns: T to use file name, NIL to skip it | ||
*/ | ||
|
||
-int news_select (struct direct *name) | ||
+int news_select (const struct direct *name) | ||
{ | ||
char c; | ||
char *s = name->d_name; | ||
@@ -417,10 +417,9 @@ int news_select (struct direct *name) | ||
* Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2 | ||
*/ | ||
|
||
-int news_numsort (const void *d1,const void *d2) | ||
+int news_numsort (const struct direct **d1,const struct direct **d2) | ||
{ | ||
- return atoi ((*(struct direct **) d1)->d_name) - | ||
- atoi ((*(struct direct **) d2)->d_name); | ||
+ return atoi ((*d1)->d_name) - atoi ((*d2)->d_name); | ||
} | ||
|
||
|