mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-19 16:40:46 -09:00
package/gpm: fix build with GCC 15.x
Import upstream-submitted patches that fix the build with GCC 15.x. Fixes: https://autobuild.buildroot.net/results/a6b25e6795682a18dff3c88519833663da2134d9/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
103f75bfab
commit
d1553b47e0
@@ -0,0 +1,236 @@
|
|||||||
|
From 436f3f0a75a42dc9e07f2fe85b73eeb4c95e0515 Mon Sep 17 00:00:00 2001
|
||||||
|
From: NHOrus <jy6x2b32pie9@yahoo.com>
|
||||||
|
Date: Tue, 11 Feb 2025 18:42:47 +0400
|
||||||
|
Subject: [PATCH] Avoid shadowing ncurses functions. This fails with GCC-15 and
|
||||||
|
other compilers implementing C23 Added prefix gpm_ to raw() and noraw() used
|
||||||
|
in two files because they are implemented in same two files, and are static.
|
||||||
|
Same with scr_dump() and src_restore() in yacc source file
|
||||||
|
|
||||||
|
Upstream: https://github.com/telmich/gpm/pull/49
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
|
---
|
||||||
|
src/prog/gpm-root.y | 10 +++++-----
|
||||||
|
src/prog/hltest.c | 11 +++++------
|
||||||
|
src/prog/mouse-test.c | 24 ++++++++++++------------
|
||||||
|
3 files changed, 22 insertions(+), 23 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y
|
||||||
|
index d3d064c..7001d6e 100644
|
||||||
|
--- a/src/prog/gpm-root.y
|
||||||
|
+++ b/src/prog/gpm-root.y
|
||||||
|
@@ -939,7 +939,7 @@ static unsigned short clear_sel_args[6]={0, 0,0, 0,0, 4};
|
||||||
|
static unsigned char *clear_sel_arg= (unsigned char *)clear_sel_args+1;
|
||||||
|
|
||||||
|
/*------------*/
|
||||||
|
-static inline void scr_dump(int fd, FILE *f, unsigned char *buffer, int vc)
|
||||||
|
+static inline void gpm_scr_dump(int fd, FILE *f, unsigned char *buffer, int vc)
|
||||||
|
{
|
||||||
|
int dumpfd;
|
||||||
|
char dumpname[20];
|
||||||
|
@@ -958,7 +958,7 @@ static inline void scr_dump(int fd, FILE *f, unsigned char *buffer, int vc)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------*/
|
||||||
|
-static inline void scr_restore(int fd, FILE *f, unsigned char *buffer, int vc)
|
||||||
|
+static inline void gpm_scr_restore(int fd, FILE *f, unsigned char *buffer, int vc)
|
||||||
|
{
|
||||||
|
int x,y, dumpfd;
|
||||||
|
char dumpname[20];
|
||||||
|
@@ -1002,7 +1002,7 @@ Posted *postmenu(int fd, FILE *f, Draw *draw, int x, int y, int console)
|
||||||
|
if (!new) return NULL;
|
||||||
|
new->draw=draw;
|
||||||
|
new->dump=dump=malloc(opt_buf);
|
||||||
|
- scr_dump(fd,f,dump,console);
|
||||||
|
+ gpm_scr_dump(fd,f,dump,console);
|
||||||
|
lines=dump[0]; columns=dump[1];
|
||||||
|
i=(columns*dump[3]+dump[2])*2+1; /* where to get it */
|
||||||
|
if (i<0) i=1;
|
||||||
|
@@ -1060,7 +1060,7 @@ Posted *postmenu(int fd, FILE *f, Draw *draw, int x, int y, int console)
|
||||||
|
for (i=0; i<draw->width; i++) PUTC(HORLINE,draw->bord,draw->back);
|
||||||
|
PUTC(LRCORNER,draw->bord,draw->back);
|
||||||
|
|
||||||
|
- scr_restore(fd,f,dump,console);
|
||||||
|
+ gpm_scr_restore(fd,f,dump,console);
|
||||||
|
free(dump);
|
||||||
|
|
||||||
|
#undef PUTC
|
||||||
|
@@ -1077,7 +1077,7 @@ Posted *unpostmenu(int fd, FILE *f, Posted *which, int vc)
|
||||||
|
{
|
||||||
|
Posted *prev=which->prev;
|
||||||
|
|
||||||
|
- scr_restore(fd,f,which->dump, vc);
|
||||||
|
+ gpm_scr_restore(fd,f,which->dump, vc);
|
||||||
|
ioctl(fd,TCXONC,TCOON); /* activate the console */
|
||||||
|
free(which->dump);
|
||||||
|
free(which);
|
||||||
|
diff --git a/src/prog/hltest.c b/src/prog/hltest.c
|
||||||
|
index cce0abc..a916873 100644
|
||||||
|
--- a/src/prog/hltest.c
|
||||||
|
+++ b/src/prog/hltest.c
|
||||||
|
@@ -80,7 +80,6 @@ int wid,hei,vcsize;
|
||||||
|
unsigned short clear_sel_args[6]={0, 0,0, 0,0, 4};
|
||||||
|
unsigned char *clear_sel_arg= (unsigned char *)clear_sel_args+1;
|
||||||
|
|
||||||
|
-
|
||||||
|
static inline int scrdump(char *buf)
|
||||||
|
{
|
||||||
|
clear_sel_arg[0]=2; /* clear_selection */
|
||||||
|
@@ -99,7 +98,7 @@ static inline int scrrestore(char *buf)
|
||||||
|
|
||||||
|
|
||||||
|
/* I don't like curses, so I'm doing low level stuff here */
|
||||||
|
-static void raw(void)
|
||||||
|
+static void gpm_raw(void)
|
||||||
|
{
|
||||||
|
struct termios it;
|
||||||
|
|
||||||
|
@@ -115,7 +114,7 @@ tcsetattr(fileno(stdin),TCSANOW,&it);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void noraw(void)
|
||||||
|
+static void gpm_noraw(void)
|
||||||
|
{
|
||||||
|
struct termios it;
|
||||||
|
|
||||||
|
@@ -136,7 +135,7 @@ void killed(int signo)
|
||||||
|
{
|
||||||
|
CLEAR;
|
||||||
|
fprintf(stderr,"hltest: killed by signal %i\r\n",signo);
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -525,7 +524,7 @@ int main(int argc, char **argv)
|
||||||
|
gpm_roi_handler=xhandler;
|
||||||
|
gpm_roi_data=NULL;
|
||||||
|
|
||||||
|
- raw();
|
||||||
|
+ gpm_raw();
|
||||||
|
newmsg(0,NULL); /* init data structures */
|
||||||
|
while((c=Gpm_Getchar())!=EOF) {
|
||||||
|
char s[32];
|
||||||
|
@@ -538,6 +537,6 @@ int main(int argc, char **argv)
|
||||||
|
newmsg(roi ? ((WinInfo *)roi->clientdata)->number : 0,s);
|
||||||
|
}
|
||||||
|
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
diff --git a/src/prog/mouse-test.c b/src/prog/mouse-test.c
|
||||||
|
index 0bb1982..7235bba 100644
|
||||||
|
--- a/src/prog/mouse-test.c
|
||||||
|
+++ b/src/prog/mouse-test.c
|
||||||
|
@@ -106,7 +106,7 @@ return 0;
|
||||||
|
/*-----------------------------------------------------------------------------
|
||||||
|
Place the description here.
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
-static void raw(void)
|
||||||
|
+static void gpm_raw(void)
|
||||||
|
{
|
||||||
|
struct termios it;
|
||||||
|
|
||||||
|
@@ -125,7 +125,7 @@ static void raw(void)
|
||||||
|
/*-----------------------------------------------------------------------------
|
||||||
|
Place the description here.
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
-static void noraw(void)
|
||||||
|
+static void gpm_noraw(void)
|
||||||
|
{
|
||||||
|
struct termios it;
|
||||||
|
|
||||||
|
@@ -144,7 +144,7 @@ static void noraw(void)
|
||||||
|
void killed(int signo)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"mouse-test: killed by signal %i\r\n",signo);
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -196,7 +196,7 @@ int mousereopen(int oldfd, char *name, Gpm_Type *type)
|
||||||
|
|
||||||
|
int noneofthem(void)
|
||||||
|
{
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\n\nSomething went wrong, I didn't manage to detect your"
|
||||||
|
"protocol\n\nFeel free to report your problems to the author\n");
|
||||||
|
exit(1);
|
||||||
|
@@ -336,7 +336,7 @@ int main(int argc, char **argv)
|
||||||
|
I_serial=mice->init; /* the first one has I_serial */
|
||||||
|
|
||||||
|
signal(SIGINT,killed); /* control-C kills us */
|
||||||
|
- raw();
|
||||||
|
+ gpm_raw();
|
||||||
|
|
||||||
|
/*====================================== First of all, detect the device */
|
||||||
|
|
||||||
|
@@ -568,7 +568,7 @@ int main(int argc, char **argv)
|
||||||
|
/* why checking and not using return value ??? */
|
||||||
|
CHECKFAIL(typecount);
|
||||||
|
if (typecount==1) {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\n\n\nWell, it seems like your mouse is already detected:\n"
|
||||||
|
"it is on the device \"%s\", and speaks the protocol \"%s\"\n",
|
||||||
|
mousename,list->this->name);
|
||||||
|
@@ -587,7 +587,7 @@ int main(int argc, char **argv)
|
||||||
|
} while(i!='y' && i!='n');
|
||||||
|
|
||||||
|
if (i=='n') {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nThen, you should use the \"bare\" protocol on \"%s\"\n",
|
||||||
|
mousename);
|
||||||
|
exit(0);
|
||||||
|
@@ -634,7 +634,7 @@ int main(int argc, char **argv)
|
||||||
|
for (pending=0,i=0;i<got-16;i++)
|
||||||
|
if(!memcmp(buf+i,buf+i+8,8)) pending++;
|
||||||
|
if (pending > 3) {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nYour mouse seems to be a 'mman' one on \"%s\" (%i matches)\n",
|
||||||
|
mousename,pending);
|
||||||
|
exit(0);
|
||||||
|
@@ -660,7 +660,7 @@ int main(int argc, char **argv)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (pending>3) {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nYour mouse seems to be a '%s' one on \"%s\" (%i matches)\n",
|
||||||
|
cur->this->name,mousename,pending);
|
||||||
|
exit(0);
|
||||||
|
@@ -695,7 +695,7 @@ int main(int argc, char **argv)
|
||||||
|
for (pending=0,i=0;i<got-20;i++)
|
||||||
|
if(!memcmp(buf+i,buf+i+10,10)) pending++;
|
||||||
|
if (pending>3) {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nYour mouse becomes a 3-buttons ('-t msc') one when\n"
|
||||||
|
"gpm gets '-o %s' on it command line, and X gets\n"
|
||||||
|
"%s in XF86Config\nThe device is \"%s\"",
|
||||||
|
@@ -726,7 +726,7 @@ int main(int argc, char **argv)
|
||||||
|
for (pending=0,i=0;i<got-20;i++)
|
||||||
|
if(!memcmp(buf+i,buf+i+10,10)) pending++;
|
||||||
|
if (pending>3) {
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nWorked. You should keep the button pressed every time the\n"
|
||||||
|
"computer boots, and run gpm in '-R' mode in order to ignore\n"
|
||||||
|
"such hassle when starting X\n\nStill better, but a better mouse\n"
|
||||||
|
@@ -734,7 +734,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
- noraw();
|
||||||
|
+ gpm_noraw();
|
||||||
|
printf("\nI'm lost. Can't tell you how to use your middle button\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
From 4e3d358da1c6066d7a320ffc157ca9e35ed34e49 Mon Sep 17 00:00:00 2001
|
||||||
|
From: NHOrus <jy6x2b32pie9@yahoo.com>
|
||||||
|
Date: Tue, 11 Feb 2025 19:01:48 +0400
|
||||||
|
Subject: [PATCH] Fix function definition in yacc source file until valid C23.
|
||||||
|
Fill empty argument lists with values. Add 0 as third argument for
|
||||||
|
two-argument function, it will be ignored at call site.
|
||||||
|
|
||||||
|
Upstream: https://github.com/telmich/gpm/pull/49
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
|
---
|
||||||
|
src/prog/gpm-root.y | 14 +++++++-------
|
||||||
|
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y
|
||||||
|
index 7001d6e..56072ac 100644
|
||||||
|
--- a/src/prog/gpm-root.y
|
||||||
|
+++ b/src/prog/gpm-root.y
|
||||||
|
@@ -128,7 +128,7 @@ typedef struct DrawItem {
|
||||||
|
char *name;
|
||||||
|
char *arg; /* a cmd string */
|
||||||
|
void *clientdata; /* a (Draw *) for menus or whatever */
|
||||||
|
- int (*fun)();
|
||||||
|
+ int (*fun)(int, struct DrawItem *, int);
|
||||||
|
struct DrawItem *next;
|
||||||
|
} DrawItem;
|
||||||
|
|
||||||
|
@@ -159,7 +159,7 @@ int yyerror(char *s);
|
||||||
|
int yylex(void);
|
||||||
|
|
||||||
|
DrawItem *cfg_cat(DrawItem *, DrawItem *);
|
||||||
|
-DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(), void *detail);
|
||||||
|
+DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(int, DrawItem *, int), void *detail);
|
||||||
|
|
||||||
|
|
||||||
|
/*===================================================================*
|
||||||
|
@@ -195,7 +195,7 @@ int f_pipe(int mode, DrawItem *self, int uid);
|
||||||
|
char *string;
|
||||||
|
Draw *draw;
|
||||||
|
DrawItem *item;
|
||||||
|
- int (*fun)();
|
||||||
|
+ int (*fun)(int, DrawItem *, int);
|
||||||
|
}
|
||||||
|
|
||||||
|
%token <string> T_STRING
|
||||||
|
@@ -284,7 +284,7 @@ struct tokenName tokenList[] = {
|
||||||
|
struct funcName {
|
||||||
|
char *name;
|
||||||
|
int token;
|
||||||
|
- int (*fun)();
|
||||||
|
+ int (*fun)(int, DrawItem *, int);
|
||||||
|
};
|
||||||
|
struct funcName funcList[] = {
|
||||||
|
{"f.debug",T_FUNC,f_debug},
|
||||||
|
@@ -390,7 +390,7 @@ Draw *cfg_alloc(void)
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------*/
|
||||||
|
/* malloc an empty DrawItem and fill it */
|
||||||
|
-DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(), void *detail)
|
||||||
|
+DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(int, DrawItem *, int), void *detail)
|
||||||
|
{
|
||||||
|
DrawItem *new=calloc(1,sizeof(DrawItem));
|
||||||
|
|
||||||
|
@@ -405,7 +405,7 @@ DrawItem *cfg_makeitem(int mode, char *msg, int(*fun)(), void *detail)
|
||||||
|
|
||||||
|
case 'F': /* a function without args */
|
||||||
|
new->fun=fun;
|
||||||
|
- if (fun) fun(F_CREATE,new);
|
||||||
|
+ if (fun) fun(F_CREATE,new,0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'M':
|
||||||
|
@@ -1047,7 +1047,7 @@ Posted *postmenu(int fd, FILE *f, Draw *draw, int x, int y, int console)
|
||||||
|
}
|
||||||
|
/* sides and items */
|
||||||
|
for (item=draw->menu; y++, item; item=item->next) {
|
||||||
|
- if (item->fun) (*(item->fun))(F_POST,item);
|
||||||
|
+ if (item->fun) (*(item->fun))(F_POST,item,0);
|
||||||
|
GOTO(x,y); PUTC(VERLINE,draw->bord,draw->back);
|
||||||
|
for (i=0;i<item->pad;i++) PUTC(' ',draw->fore,draw->back);
|
||||||
|
PUTS(item->name,draw->fore,draw->back); i+=strlen(item->name);
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
From d6d5168713b1513dc2a780d21bb33dcf16a7a518 Mon Sep 17 00:00:00 2001
|
||||||
|
From: NHOrus <jy6x2b32pie9@yahoo.com>
|
||||||
|
Date: Sat, 22 Feb 2025 01:12:32 +0400
|
||||||
|
Subject: [PATCH] Add incomplete type definition for WINDOW in Gpm_Wgetch()
|
||||||
|
|
||||||
|
Window handle is an opaque pointer that Gpm_Wgetch() passes
|
||||||
|
through straight to ncurses if it's not null and calls getch
|
||||||
|
if it's null. Code doesn't care what's inside the handle
|
||||||
|
as long as it agrees with curses definition.
|
||||||
|
|
||||||
|
Upstream: https://github.com/telmich/gpm/pull/49
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
|
---
|
||||||
|
src/headers/gpm.h | 9 ++++++++-
|
||||||
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/headers/gpm.h b/src/headers/gpm.h
|
||||||
|
index 57dc618..6c53fbf 100644
|
||||||
|
--- a/src/headers/gpm.h
|
||||||
|
+++ b/src/headers/gpm.h
|
||||||
|
@@ -268,7 +268,14 @@ Gpm_Roi * Gpm_LowerRoi(Gpm_Roi *which, Gpm_Roi *after);
|
||||||
|
/* libcurses.c */
|
||||||
|
/* #include <curses.h> Hmm... seems risky */
|
||||||
|
|
||||||
|
-extern int Gpm_Wgetch();
|
||||||
|
+/* Window handle is an opaque pointer that Gpm_Wgetch()
|
||||||
|
+ * passes through to ncurses if it's not null and calls getch
|
||||||
|
+ * if it's null. Code doesn't care what's inside the handle
|
||||||
|
+ * as long as it agrees with curses definition.
|
||||||
|
+*/
|
||||||
|
+typedef struct _win_st WINDOW;
|
||||||
|
+
|
||||||
|
+extern int Gpm_Wgetch(WINDOW *);
|
||||||
|
#define Gpm_Getch() (Gpm_Wgetch(NULL))
|
||||||
|
|
||||||
|
/* libxtra.c */
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
Reference in New Issue
Block a user