Accepting request 47591 from Base:System
Copy from Base:System/gpm based on submit request 47591 from user psmt OBS-URL: https://build.opensuse.org/request/show/47591 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gpm?expand=0&rev=24
This commit is contained in:
parent
ffe96b45e4
commit
3f2b332964
@ -1,22 +0,0 @@
|
|||||||
--- src/lib/liblow.c
|
|
||||||
+++ src/lib/liblow.c
|
|
||||||
@@ -199,7 +199,7 @@
|
|
||||||
Gpm_Stst *new = NULL;
|
|
||||||
char* sock_name = 0;
|
|
||||||
|
|
||||||
- option.consolename = NULL;
|
|
||||||
+ if (checked_con == 0) option.consolename = NULL;
|
|
||||||
|
|
||||||
gpm_report(GPM_PR_DEBUG,"VC: %d",flag);
|
|
||||||
|
|
||||||
@@ -257,6 +257,10 @@
|
|
||||||
gpm_report(GPM_PR_ERR,"checking tty name failed");
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
+ if (option.consolename == NULL) {
|
|
||||||
+ gpm_report(GPM_PR_ERR,"option.consolename not set");
|
|
||||||
+ goto err;
|
|
||||||
+ }
|
|
||||||
/* do we really need this check ? */
|
|
||||||
if(strncmp(tty,option.consolename,strlen(option.consolename)-1)
|
|
||||||
|| !isdigit(tty[strlen(option.consolename)-1])) {
|
|
@ -1,13 +0,0 @@
|
|||||||
Index: gpm-1.20.1/src/prog/gpm-root.y
|
|
||||||
===================================================================
|
|
||||||
--- gpm-1.20.1.orig/src/prog/gpm-root.y 2002-12-24 23:57:16.000000000 +0100
|
|
||||||
+++ gpm-1.20.1/src/prog/gpm-root.y 2007-12-12 11:15:15.000000000 +0100
|
|
||||||
@@ -525,7 +525,7 @@ int f_bgcmd(int mode, DrawItem *self, in
|
|
||||||
open("/dev/null",O_RDONLY); /* stdin */
|
|
||||||
open(consolename,O_WRONLY); /* stdout */
|
|
||||||
dup(1); /* stderr */
|
|
||||||
- for (i=3;i<OPEN_MAX; i++) close(i);
|
|
||||||
+ for (i=3;i<FOPEN_MAX; i++) close(i);
|
|
||||||
execl("/bin/sh","sh","-c",self->arg,(char *)NULL);
|
|
||||||
exit(1); /* shouldn't happen */
|
|
||||||
default: return 0;
|
|
@ -1,28 +0,0 @@
|
|||||||
--- src/headers/message.h
|
|
||||||
+++ src/headers/message.h
|
|
||||||
@@ -145,6 +145,7 @@
|
|
||||||
#define GPM_MESS_SETSID_FAILED "Setsid failed"
|
|
||||||
#define GPM_MESS_CHDIR_FAILED "change directory failed"
|
|
||||||
#define GPM_MESS_FORK_FAILED "Fork failed."
|
|
||||||
+#define GPM_MESS_DAEMON_FAILED "Change to run in background failed."
|
|
||||||
#define GPM_MESS_VCCHECK "Failed on virtual console check."
|
|
||||||
#define GPM_MESS_PROT_ERR "Error in protocol"
|
|
||||||
#define GPM_MESS_ROOT "You should be root to run gpm!"
|
|
||||||
--- src/startup.c
|
|
||||||
+++ src/startup.c
|
|
||||||
@@ -136,13 +136,8 @@
|
|
||||||
|
|
||||||
if(option.run_status == GPM_RUN_STARTUP ) { /* else is debugging */
|
|
||||||
/* goto background and become a session leader (Stefan Giessler) */
|
|
||||||
- switch(fork()) {
|
|
||||||
- case -1: gpm_report(GPM_PR_OOPS,GPM_MESS_FORK_FAILED); /* error */
|
|
||||||
- case 0: option.run_status = GPM_RUN_DAEMON; break; /* child */
|
|
||||||
- default: _exit(0); /* parent */
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (setsid() < 0) gpm_report(GPM_PR_OOPS,GPM_MESS_SETSID_FAILED);
|
|
||||||
+ if (daemon(0,0)) gpm_report(GPM_PR_OOPS,GPM_MESS_DAEMON_FAILED); /* error */
|
|
||||||
+ option.run_status = GPM_RUN_DAEMON;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* damon init: check whether we run or not, display message */
|
|
@ -1,11 +0,0 @@
|
|||||||
--- src/mice.c
|
|
||||||
+++ src/mice.c
|
|
||||||
@@ -2275,7 +2275,7 @@
|
|
||||||
for (i=0; i<4; i++)
|
|
||||||
if (gunze_calib[i] & ~1023) calibok = 0;
|
|
||||||
if (gunze_calib[0] == gunze_calib[2]) calibok = 0;
|
|
||||||
- if (gunze_calib[1] == gunze_calib[4]) calibok = 0;
|
|
||||||
+ if (gunze_calib[1] == gunze_calib[3]) calibok = 0;
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
if (!calibok) {
|
|
@ -1,14 +0,0 @@
|
|||||||
--- src/report.c
|
|
||||||
+++ src/report.c
|
|
||||||
@@ -137,8 +137,9 @@
|
|
||||||
switch(stat) {
|
|
||||||
case GPM_STAT_INFO:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
- syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
|
||||||
- vsyslog(LOG_INFO | LOG_USER, text, ap_sys);
|
|
||||||
+ // gpm spams /var/log/messages (bnc#307209)
|
|
||||||
+ // syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
|
||||||
+ // vsyslog(LOG_INFO | LOG_USER, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
--- src/Makefile.in
|
|
||||||
+++ src/Makefile.in
|
|
||||||
@@ -14,7 +14,7 @@
|
|
||||||
# Main portion: regular build rules
|
|
||||||
|
|
||||||
GSRC = main.c gpm.c gpn.c mice.c special.c twiddler.c synaptics.c silitek.c \
|
|
||||||
- startup.c server_tools.c
|
|
||||||
+ startup.c
|
|
||||||
|
|
||||||
GOBJ = $(GSRC:.c=.o) report.o tools.o
|
|
||||||
|
|
||||||
--- src/gpn.c
|
|
||||||
+++ src/gpn.c
|
|
||||||
@@ -254,15 +254,12 @@
|
|
||||||
case 'i': opt_time=atoi(optarg); break;
|
|
||||||
case 'k': check_kill(); break;
|
|
||||||
case 'l': opt_lut = optarg; break;
|
|
||||||
- case 'm': add_mouse(GPM_ADD_DEVICE,optarg);
|
|
||||||
- opt_dev = optarg; break; /* GO AWAY!*/
|
|
||||||
+ case 'm': opt_dev = optarg; break; /* GO AWAY!*/
|
|
||||||
case 'M': opt_double++; option.repeater++;
|
|
||||||
if (option.repeater_type == 0)
|
|
||||||
option.repeater_type = "msc";
|
|
||||||
which_mouse=mouse_table+2; break;
|
|
||||||
- case 'o': add_mouse(GPM_ADD_OPTIONS,optarg);
|
|
||||||
- gpm_report(GPM_PR_DEBUG,"options: %s",optarg);
|
|
||||||
- opt_options = optarg; break; /* GO AWAY */
|
|
||||||
+ case 'o': opt_options = optarg; break; /* GO AWAY */
|
|
||||||
case 'p': opt_ptrdrag = 0; break;
|
|
||||||
case 'r':
|
|
||||||
/* being called responsiveness, I must take the inverse */
|
|
||||||
@@ -276,8 +273,7 @@
|
|
||||||
case 's': opt_sample = atoi(optarg); break;
|
|
||||||
case 'S': if (optarg) opt_special = optarg;
|
|
||||||
else opt_special=""; break;
|
|
||||||
- case 't': add_mouse(GPM_ADD_TYPE,optarg);
|
|
||||||
- opt_type = optarg; break; /* GO AWAY */
|
|
||||||
+ case 't': opt_type = optarg; break; /* GO AWAY */
|
|
||||||
case 'u': option.autodetect = 1; break;
|
|
||||||
case 'T': opt_test++; break;
|
|
||||||
case 'v': printf(GPM_MESS_VERSION "\n"); exit(0);
|
|
||||||
--- src/startup.c
|
|
||||||
+++ src/startup.c
|
|
||||||
@@ -158,7 +158,6 @@
|
|
||||||
|
|
||||||
/****************** OLD CODE from gpn.c END ***********************/
|
|
||||||
|
|
||||||
- init_mice(option.micelist); /* reads option.micelist */
|
|
||||||
atexit(gpm_exited); /* call gpm_exited at the end */
|
|
||||||
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
--- src/gpm.c
|
|
||||||
+++ src/gpm.c
|
|
||||||
@@ -366,7 +366,7 @@
|
|
||||||
|
|
||||||
if((i=m_type->packetlen-howmany)) /* still to get */
|
|
||||||
do {
|
|
||||||
- j = read(fd,edata-i,i); /* edata is pointer just after data */
|
|
||||||
+ j = read(fd,edata-i,howmany); /* edata is pointer just after data */
|
|
||||||
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
|
|
||||||
write(fifofd, edata-i, j);
|
|
||||||
i -= j;
|
|
@ -1,18 +0,0 @@
|
|||||||
--- src/lib/report-lib.c
|
|
||||||
+++ src/lib/report-lib.c
|
|
||||||
@@ -26,6 +26,7 @@
|
|
||||||
|
|
||||||
void gpm_report(int line, char *file, int stat, char *text, ... )
|
|
||||||
{
|
|
||||||
+#ifndef QUIET_LIBGPM
|
|
||||||
char *string = NULL;
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap,text);
|
|
||||||
@@ -43,5 +44,7 @@
|
|
||||||
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
+#endif /* QUIET_LIBGPM */
|
|
||||||
+
|
|
||||||
if(stat == GPM_STAT_OOPS) exit(1); /* may a lib function call exit ???? */
|
|
||||||
}
|
|
@ -1,155 +0,0 @@
|
|||||||
--- src/lib/report-lib.c
|
|
||||||
+++ src/lib/report-lib.c
|
|
||||||
@@ -41,5 +41,7 @@
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
fprintf(stderr,"\n");
|
|
||||||
|
|
||||||
+ va_end(ap);
|
|
||||||
+
|
|
||||||
if(stat == GPM_STAT_OOPS) exit(1); /* may a lib function call exit ???? */
|
|
||||||
}
|
|
||||||
--- src/report.c
|
|
||||||
+++ src/report.c
|
|
||||||
@@ -71,9 +71,18 @@
|
|
||||||
void gpm_report(int line, char *file, int stat, char *text, ... )
|
|
||||||
{
|
|
||||||
FILE *console = NULL;
|
|
||||||
- va_list ap;
|
|
||||||
+ va_list ap,ap2;
|
|
||||||
+#ifdef HAVE_VSYSLOG
|
|
||||||
+ va_list ap_sys;
|
|
||||||
+#endif
|
|
||||||
+ int exit_request=0; /* 0 -> return is requested
|
|
||||||
+ 1 -> exit(1) is requested
|
|
||||||
+ 2 -> _exit(1) is requested */
|
|
||||||
|
|
||||||
va_start(ap,text);
|
|
||||||
+#ifdef HAVE_VSYSLOG
|
|
||||||
+ va_copy(ap_sys,ap);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
switch(option.run_status) {
|
|
||||||
/******************** STARTUP *****************/
|
|
||||||
@@ -82,7 +91,7 @@
|
|
||||||
case GPM_STAT_INFO:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
|
||||||
- vsyslog(LOG_INFO | LOG_USER, text, ap);
|
|
||||||
+ vsyslog(LOG_INFO | LOG_USER, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr,GPM_STRING_INFO);
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
@@ -92,7 +101,7 @@
|
|
||||||
case GPM_STAT_WARN:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_WARNING, GPM_STRING_WARN);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_WARNING, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_WARNING, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr,GPM_STRING_WARN);
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
@@ -102,7 +111,7 @@
|
|
||||||
case GPM_STAT_ERR:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_ERR);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr,GPM_STRING_ERR);
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
@@ -112,13 +121,13 @@
|
|
||||||
case GPM_STAT_OOPS:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_OOPS);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr,GPM_STRING_OOPS);
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
fprintf(stderr,"\n");
|
|
||||||
|
|
||||||
- exit(1); /* we should have a oops()-function,but this works,too*/
|
|
||||||
+ exit_request=1; /* we should have a oops()-function,but this works,too*/
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break; /* startup sequence */
|
|
||||||
@@ -129,14 +138,14 @@
|
|
||||||
case GPM_STAT_INFO:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
|
||||||
- vsyslog(LOG_INFO | LOG_USER, text, ap);
|
|
||||||
+ vsyslog(LOG_INFO | LOG_USER, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GPM_STAT_WARN:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_WARNING, GPM_STRING_WARN);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_WARNING, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_WARNING, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
if((console = fopen(GPM_SYS_CONSOLE,"a")) != NULL) {
|
|
||||||
fprintf(console,GPM_STRING_WARN);
|
|
||||||
@@ -149,8 +158,9 @@
|
|
||||||
case GPM_STAT_ERR:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_ERR);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
+ va_copy(ap2,ap);
|
|
||||||
if((console = fopen(GPM_SYS_CONSOLE,"a")) != NULL) {
|
|
||||||
fprintf(console,GPM_STRING_ERR);
|
|
||||||
vfprintf(console,text,ap);
|
|
||||||
@@ -160,22 +170,24 @@
|
|
||||||
|
|
||||||
if((console = fopen(option.consolename,"a")) != NULL) {
|
|
||||||
fprintf(console,GPM_STRING_ERR);
|
|
||||||
- vfprintf(console,text,ap);
|
|
||||||
+ vfprintf(console,text,ap2);
|
|
||||||
fprintf(console,"\n");
|
|
||||||
fclose(console);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ va_end(ap2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GPM_STAT_OOPS:
|
|
||||||
#ifdef HAVE_VSYSLOG
|
|
||||||
syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_OOPS);
|
|
||||||
- vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
|
|
||||||
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap_sys);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr,GPM_STRING_OOPS);
|
|
||||||
vfprintf(stderr,text,ap);
|
|
||||||
fprintf(stderr,"\n");
|
|
||||||
|
|
||||||
- _exit(1); /* we are the fork()-child */
|
|
||||||
+ exit_request=2; /* we are the fork()-child */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break; /* running gpm */
|
|
||||||
@@ -203,10 +215,21 @@
|
|
||||||
vfprintf(console,text,ap);
|
|
||||||
fprintf(console,"\n");
|
|
||||||
|
|
||||||
- if(stat == GPM_STAT_OOPS) exit(1);
|
|
||||||
-
|
|
||||||
+ if(stat == GPM_STAT_OOPS) exit_request=1;
|
|
||||||
+
|
|
||||||
break;
|
|
||||||
} /* switch for current modus */
|
|
||||||
+
|
|
||||||
+ va_end(ap);
|
|
||||||
+#ifdef HAVE_VSYSLOG
|
|
||||||
+ va_end(ap_sys);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ if (exit_request == 2)
|
|
||||||
+ _exit(1);
|
|
||||||
+ if (exit_request == 1)
|
|
||||||
+ exit(1);
|
|
||||||
+ return;
|
|
||||||
} /* gpm_report */
|
|
||||||
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
|||||||
--- doc/doc.gpm.in
|
|
||||||
+++ doc/doc.gpm.in
|
|
||||||
@@ -450,16 +450,6 @@
|
|
||||||
@item -v
|
|
||||||
Print version information and exit.
|
|
||||||
|
|
||||||
-@item -V[@var{verbosity increment}]
|
|
||||||
- Raise or decrease the maximum level of messages that will be
|
|
||||||
- logged. Thus a positive argument has the effect of making the
|
|
||||||
- program more verbose. One can also give a negative argument to
|
|
||||||
- hush the program; due to @b{getopt(3)} rules, any optional
|
|
||||||
- argument needs to be passed without a space in between!
|
|
||||||
- When omitting the argument, the increment defaults to 1.
|
|
||||||
- Default verbosity level is 5 (@code{LOG_NOTICE}).
|
|
||||||
- @xref{Program Arguments,,,libc}.
|
|
||||||
-
|
|
||||||
@item -2
|
|
||||||
Force two buttons. This means that the middle button, if any,
|
|
||||||
will be taken as it was the right one.
|
|
||||||
@@ -1993,15 +1993,6 @@
|
|
||||||
mechanism. This is useful for debugging; in previous releases
|
|
||||||
it was done with a compile-time option.
|
|
||||||
|
|
||||||
-@item -V @var{verbosity increment}
|
|
||||||
- Raise the maximum level of messages that will be logged. Thus a
|
|
||||||
- positive argument has the effect of making the program more
|
|
||||||
- verbose. One can also give a negative argument to hush the
|
|
||||||
- program; however, note that due to @b{getopt(3)} rules a negative
|
|
||||||
- argument must follow the option with no space betwixt (that is,
|
|
||||||
- @samp{-V-1} but not @samp{-V -1}). @xref{Program Arguments,,,libc}.
|
|
||||||
- The argument is optional and its default value is 1.
|
|
||||||
-
|
|
||||||
@end table
|
|
||||||
|
|
||||||
Each time a menu is drawn, the configuration file is reparsed if it has
|
|
||||||
--- doc/gpm.info
|
|
||||||
+++ doc/gpm.info
|
|
||||||
@@ -333,16 +333,6 @@
|
|
||||||
`-v'
|
|
||||||
Print version information and exit.
|
|
||||||
|
|
||||||
-`-V[VERBOSITY INCREMENT]'
|
|
||||||
- Raise or decrease the maximum level of messages that will be
|
|
||||||
- logged. Thus a positive argument has the effect of making the
|
|
||||||
- program more verbose. One can also give a negative argument to
|
|
||||||
- hush the program; due to getopt(3) rules, any optional argument
|
|
||||||
- needs to be passed without a space in between! When omitting the
|
|
||||||
- argument, the increment defaults to 1. Default verbosity level is
|
|
||||||
- 5 (`LOG_NOTICE'). *Note Program Arguments: (libc)Program
|
|
||||||
- Arguments.
|
|
||||||
-
|
|
||||||
`-2'
|
|
||||||
Force two buttons. This means that the middle button, if any, will
|
|
||||||
be taken as it was the right one.
|
|
||||||
@@ -1606,15 +1606,6 @@
|
|
||||||
mechanism. This is useful for debugging; in previous releases it
|
|
||||||
was done with a compile-time option.
|
|
||||||
|
|
||||||
-`-V VERBOSITY INCREMENT'
|
|
||||||
- Raise the maximum level of messages that will be logged. Thus a
|
|
||||||
- positive argument has the effect of making the program more
|
|
||||||
- verbose. One can also give a negative argument to hush the
|
|
||||||
- program; however, note that due to getopt(3) rules a negative
|
|
||||||
- argument must follow the option with no space betwixt (that is,
|
|
||||||
- `-V-1' but not `-V -1'). *Note Program Arguments: (libc)Program
|
|
||||||
- Arguments. The argument is optional and its default value is 1.
|
|
||||||
-
|
|
||||||
Each time a menu is drawn, the configuration file is reparsed if it
|
|
||||||
has changed. This allows modification of personal setup without
|
|
||||||
reinvoking the daemon.
|
|
||||||
--- src/prog/gpm-root.y
|
|
||||||
+++ src/prog/gpm-root.y
|
|
||||||
@@ -868,7 +868,6 @@
|
|
||||||
" -m <number-or-name> modifier to use\n"
|
|
||||||
" -u inhibit user configuration files\n"
|
|
||||||
" -D don't auto-background and run as daemon\n"
|
|
||||||
- " -V <verbosity-delta> increase amount of logged messages\n"
|
|
||||||
);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
--- src/gpn.c
|
|
||||||
+++ src/gpn.c
|
|
||||||
@@ -281,6 +281,7 @@
|
|
||||||
case 'u': option.autodetect = 1; break;
|
|
||||||
case 'T': opt_test++; break;
|
|
||||||
case 'v': printf(GPM_MESS_VERSION "\n"); exit(0);
|
|
||||||
+ case 'V': break; /* gpm_debug_level not supported anymore */
|
|
||||||
case '2': opt_three = -1; break;
|
|
||||||
case '3': opt_three = 1; break;
|
|
||||||
default: exit(usage("commandline"));
|
|
||||||
--- src/headers/message.h
|
|
||||||
+++ src/headers/message.h
|
|
||||||
@@ -98,8 +98,7 @@
|
|
||||||
" -t mouse-type sets mouse type (default '%s')\n" \
|
|
||||||
" Use a non-existent type (e.g. \"help\") to get a list\n" \
|
|
||||||
" -T test: read mouse, no clients\n" \
|
|
||||||
- " -v print version and exit\n" \
|
|
||||||
- " -V verbosity increase number of logged messages\n\n\n" \
|
|
||||||
+ " -v print version and exit\n\n\n" \
|
|
||||||
" Examples:\n\n" \
|
|
||||||
" gpm -m /dev/misc/psaux -t ps2 to start with a ps2 mouse\n" \
|
|
||||||
" gpm -m /dev/tts/0 -t mman to use mouse man on COM1\n\n"
|
|
@ -1,11 +0,0 @@
|
|||||||
--- src/twiddler.c
|
|
||||||
+++ src/twiddler.c
|
|
||||||
@@ -331,7 +331,7 @@
|
|
||||||
int len = strlen(mod);
|
|
||||||
if (len == 0) return twiddler_map->table;
|
|
||||||
|
|
||||||
- for (ptr = twiddler_map; ptr->table; ptr = ptr++) {
|
|
||||||
+ for (ptr = twiddler_map; ptr->table; ptr++) {
|
|
||||||
if (!strncasecmp(mod,ptr->keyword,len))
|
|
||||||
return ptr->table;
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:11fabe7f27a205ff1ea6aee23e1dc2bb2dc5dbfc45ff0320fca0cd559806a936
|
|
||||||
size 565014
|
|
3
gpm-1.20.6-patches.tar.lzma
Normal file
3
gpm-1.20.6-patches.tar.lzma
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ad1c1a23324e626a532c76e5870aa36357f0df798960c53fc208fdfbdf8a5151
|
||||||
|
size 312560
|
3
gpm-1.20.6.tar.lzma
Normal file
3
gpm-1.20.6.tar.lzma
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:0795792f1e4f300f8f2d4474db04baba1ef99dc0017fec0057fcb6ee59eb8745
|
||||||
|
size 998443
|
@ -1,6 +1,8 @@
|
|||||||
--- Makefile.in
|
Index: Makefile.in
|
||||||
+++ Makefile.in
|
===================================================================
|
||||||
@@ -50,9 +50,13 @@
|
--- Makefile.in.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ Makefile.in 2010-09-07 19:08:40.912655993 +0200
|
||||||
|
@@ -87,9 +87,13 @@ install-strip:
|
||||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) $(STRIP)' install
|
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) $(STRIP)' install
|
||||||
|
|
||||||
installdirs:
|
installdirs:
|
||||||
@ -10,15 +12,17 @@
|
|||||||
+ $(INSTALL_DIR) $(DESTDIR)$(sbindir)
|
+ $(INSTALL_DIR) $(DESTDIR)$(sbindir)
|
||||||
+ $(INSTALL_DIR) $(DESTDIR)$(includedir)
|
+ $(INSTALL_DIR) $(DESTDIR)$(includedir)
|
||||||
+ $(INSTALL_DIR) $(DESTDIR)$(sysconfdir); \
|
+ $(INSTALL_DIR) $(DESTDIR)$(sysconfdir); \
|
||||||
if test "x@ELISP@" != "x" ; then \
|
if test "x$(ELISP)" != "x" ; then \
|
||||||
- $(MKDIR) $(lispdir) ; \
|
- $(MKDIR) $(lispdir) ; \
|
||||||
+ $(INSTALL_DIR) $(DESTDIR)$(lispdir) ; \
|
+ $(MKDIR) $(DESTDIR)$(lispdir) ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### GENERIC
|
### GENERIC
|
||||||
--- Makefile.include.in
|
Index: Makefile.include.in
|
||||||
+++ Makefile.include.in
|
===================================================================
|
||||||
@@ -37,6 +37,7 @@
|
--- Makefile.include.in.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ Makefile.include.in 2010-09-07 19:03:04.962483820 +0200
|
||||||
|
@@ -43,6 +43,7 @@ YACC = @YACC@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
@ -26,9 +30,11 @@
|
|||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
EMACS = @EMACS@
|
EMACS = @EMACS@
|
||||||
ELISP = @ELISP@
|
ELISP = @ELISP@
|
||||||
--- doc/Makefile.in
|
Index: doc/Makefile.in
|
||||||
+++ doc/Makefile.in
|
===================================================================
|
||||||
@@ -112,29 +112,18 @@
|
--- doc/Makefile.in.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ doc/Makefile.in 2010-09-07 19:09:37.506283144 +0200
|
||||||
|
@@ -111,29 +111,18 @@ gpmdoc.ps: gpm.ps
|
||||||
# install & uninstall
|
# install & uninstall
|
||||||
|
|
||||||
installdirs:
|
installdirs:
|
||||||
@ -68,9 +74,11 @@
|
|||||||
|
|
||||||
# This potentially leaves around cached manpages,
|
# This potentially leaves around cached manpages,
|
||||||
# e.g. /var/cache/man/cat1/mev.1.gz. Deleting these is not our job,
|
# e.g. /var/cache/man/cat1/mev.1.gz. Deleting these is not our job,
|
||||||
--- src/Makefile.in
|
Index: src/Makefile.in
|
||||||
+++ src/Makefile.in
|
===================================================================
|
||||||
@@ -91,15 +91,16 @@
|
--- src/Makefile.in.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/Makefile.in 2010-09-07 19:07:57.361560078 +0200
|
||||||
|
@@ -104,15 +104,16 @@ check: all
|
||||||
installdirs:
|
installdirs:
|
||||||
|
|
||||||
install: check
|
install: check
|
||||||
@ -85,14 +93,14 @@
|
|||||||
# headache in cases like this
|
# headache in cases like this
|
||||||
if test "x@SHLIB@" != "x" ; then \
|
if test "x@SHLIB@" != "x" ; then \
|
||||||
- $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \
|
- $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \
|
||||||
- cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so ;\
|
- cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \
|
||||||
+ $(INSTALL_DATA) -m 755 lib/libgpm.so.@abi_full@ $(DESTDIR)$(libdir)/libgpm.so.@abi_full@ ; \
|
+ $(INSTALL_DATA) -m 755 lib/libgpm.so.@abi_full@ $(DESTDIR)$(libdir)/libgpm.so.@abi_full@ ; \
|
||||||
+ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so ; \
|
+ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so ; \
|
||||||
+ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@; \
|
+ cd $(DESTDIR)$(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@; \
|
||||||
echo "WARNING: We installed a lib, you should now call ldconfig" ; \
|
echo "WARNING: We installed a lib, you should now call ldconfig" ; \
|
||||||
echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \
|
echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \
|
||||||
echo "Or to update everything just type ldconfig" ; \
|
echo "Or to update everything just type ldconfig" ; \
|
||||||
@@ -107,7 +108,7 @@
|
@@ -122,7 +123,7 @@ install: check
|
||||||
|
|
||||||
# prog/
|
# prog/
|
||||||
for i in $(PROG); do \
|
for i in $(PROG); do \
|
||||||
@ -101,14 +109,3 @@
|
|||||||
done
|
done
|
||||||
|
|
||||||
install-strip:
|
install-strip:
|
||||||
--- src/special.c
|
|
||||||
+++ src/special.c
|
|
||||||
@@ -155,7 +155,7 @@
|
|
||||||
open(GPM_NULL_DEV,O_RDONLY); /* stdin */
|
|
||||||
open(option.consolename,O_WRONLY); /* stdout */
|
|
||||||
dup(1); /* stderr */
|
|
||||||
- for (i=3;i<OPEN_MAX; i++) close(i);
|
|
||||||
+ for (i=3;i<getdtablesize(); i++) close(i);
|
|
||||||
execl("/bin/sh","sh","-c",command,(char *)NULL);
|
|
||||||
exit(1); /* shouldn't happen */
|
|
||||||
|
|
15
gpm-Gpm_Open.patch
Normal file
15
gpm-Gpm_Open.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Index: src/lib/liblow.c
|
||||||
|
===================================================================
|
||||||
|
--- src/lib/liblow.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/lib/liblow.c 2010-09-08 16:42:15.667355974 +0200
|
||||||
|
@@ -255,6 +255,10 @@ int Gpm_Open(Gpm_Connect *conn, int flag
|
||||||
|
if (tty == NULL) {
|
||||||
|
gpm_report(GPM_PR_ERR,"checking tty name failed");
|
||||||
|
goto err;
|
||||||
|
+ }
|
||||||
|
+ if (consolename == NULL) {
|
||||||
|
+ gpm_report(GPM_PR_ERR,"consolename not set");
|
||||||
|
+ goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
conn->vc=atoi(&tty[strlen(consolename)-1]);
|
@ -2,9 +2,11 @@ Note that GCC 4.0 will optimize ceil (constant), we therefore
|
|||||||
have to make the argument non-constant.
|
have to make the argument non-constant.
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
--- configure.in
|
Index: configure.ac
|
||||||
+++ configure.in
|
===================================================================
|
||||||
@@ -91,6 +91,25 @@
|
--- configure.ac.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ configure.ac 2010-09-08 16:10:06.434722846 +0200
|
||||||
|
@@ -108,6 +108,25 @@ fi
|
||||||
AC_CHECK_FUNCS(vsyslog syslog)
|
AC_CHECK_FUNCS(vsyslog syslog)
|
||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
|
|
||||||
@ -30,7 +32,7 @@ have to make the argument non-constant.
|
|||||||
case $with_curses in
|
case $with_curses in
|
||||||
No|no|N|n) SHARED_LIBS=-lc ;;
|
No|no|N|n) SHARED_LIBS=-lc ;;
|
||||||
*)
|
*)
|
||||||
@@ -123,6 +142,7 @@
|
@@ -138,6 +157,7 @@ AC_SUBST(ELISP)
|
||||||
AC_SUBST(SHLIB)
|
AC_SUBST(SHLIB)
|
||||||
AC_SUBST(PICFLAGS)
|
AC_SUBST(PICFLAGS)
|
||||||
AC_SUBST(SOLDFLAGS)
|
AC_SUBST(SOLDFLAGS)
|
||||||
@ -38,22 +40,26 @@ have to make the argument non-constant.
|
|||||||
AC_SUBST(CURSES_OBJS)
|
AC_SUBST(CURSES_OBJS)
|
||||||
AC_SUBST(SHARED_LIBS)
|
AC_SUBST(SHARED_LIBS)
|
||||||
AC_SUBST(lispdir)
|
AC_SUBST(lispdir)
|
||||||
--- src/Makefile.in
|
Index: src/Makefile.in
|
||||||
+++ src/Makefile.in
|
===================================================================
|
||||||
@@ -70,6 +70,7 @@
|
--- src/Makefile.in.orig 2010-09-08 16:06:46.812997967 +0200
|
||||||
all: gpm lib/@SHLIB@ lib/libgpm.a $(PROG)
|
+++ src/Makefile.in 2010-09-08 16:09:40.464506680 +0200
|
||||||
|
@@ -82,7 +82,7 @@ prog/%: prog/%.o
|
||||||
|
all: gpm lib/libgpm.so.@abi_lev@ lib/libgpm.a $(PROG)
|
||||||
|
|
||||||
gpm: $(GOBJ)
|
gpm: $(GOBJ)
|
||||||
+ $(CC) @LDFLAGS@ @SYNLDFLAGS@ $(GOBJ) -o gpm
|
- $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm
|
||||||
|
+ $(CC) @LDFLAGS@ @SYNLDFLAGS@ -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm
|
||||||
|
|
||||||
# construct dependings of sourcefiles and link sourcefiles
|
# construct dependings of sourcefiles and link sourcefiles
|
||||||
$(DEPFILE) dep: prog/gpm-root.c
|
$(DEPFILE) dep: prog/gpm-root.c
|
||||||
@@ -155,7 +156,7 @@
|
@@ -164,7 +164,8 @@ lib/libgpm.a: $(LOBJ)
|
||||||
|
|
||||||
lib/libgpm.so.@abi_full@: $(PICS)
|
lib/libgpm.so.@abi_full@: $(PICS)
|
||||||
$(CC) @SOLDFLAGS@libgpm.so.@abi_lev@ \
|
$(CC) @SOLDFLAGS@libgpm.so.@abi_lev@ \
|
||||||
- @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS)
|
- @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS)
|
||||||
+ @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ @SYNLDFLAGS@ $(LIBS)
|
+ @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ @SYNLDFLAGS@ $(LIBS)
|
||||||
lib/libgpm.so: lib/libgpm.so.@abi_full@
|
+
|
||||||
$(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so
|
lib/libgpm.so.@abi_lev@: lib/libgpm.so.@abi_full@
|
||||||
|
$(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@
|
||||||
|
# unneeded, isn't it?
|
@ -1,6 +1,8 @@
|
|||||||
--- README
|
Index: README
|
||||||
+++ README
|
===================================================================
|
||||||
@@ -102,7 +102,7 @@
|
--- README.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ README 2010-09-08 13:26:14.060039119 +0200
|
||||||
|
@@ -128,7 +128,7 @@ Configuration is optional...
|
||||||
(string-match "con.*" (getenv "TERM"))))
|
(string-match "con.*" (getenv "TERM"))))
|
||||||
(load-library "t-mouse"))
|
(load-library "t-mouse"))
|
||||||
|
|
||||||
@ -9,9 +11,11 @@
|
|||||||
directory, test it out and then edit it to suit your feels.
|
directory, test it out and then edit it to suit your feels.
|
||||||
|
|
||||||
* You'd like to name the gpm info file inside /usr/info/dir. Just insert
|
* You'd like to name the gpm info file inside /usr/info/dir. Just insert
|
||||||
--- doc/README.silitek
|
Index: doc/README.silitek
|
||||||
+++ doc/README.silitek
|
===================================================================
|
||||||
@@ -14,11 +14,11 @@
|
--- doc/README.silitek.orig 2010-09-08 13:26:13.916055341 +0200
|
||||||
|
+++ doc/README.silitek 2010-09-08 13:26:14.084036415 +0200
|
||||||
|
@@ -14,11 +14,11 @@ This IR commander can be used with two t
|
||||||
|
|
||||||
Both types of mouse driver uses the system wide configuration file
|
Both types of mouse driver uses the system wide configuration file
|
||||||
|
|
||||||
@ -25,7 +29,7 @@
|
|||||||
is used. To switch back to the normal return values, the drag mouse
|
is used. To switch back to the normal return values, the drag mouse
|
||||||
button has to be pressed again. It is allowed to use escaped
|
button has to be pressed again. It is allowed to use escaped
|
||||||
sequences as return values. Characters other than printable can
|
sequences as return values. Characters other than printable can
|
||||||
@@ -169,7 +169,7 @@
|
@@ -169,7 +169,7 @@ EOF
|
||||||
--------------------------------------------------------------------
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
the Multimedia keys on IR Keyboard SK-7100 are usable (for ncurses
|
the Multimedia keys on IR Keyboard SK-7100 are usable (for ncurses
|
||||||
@ -34,9 +38,11 @@
|
|||||||
to get the similar named keys to work similar, both the IR Keyboard
|
to get the similar named keys to work similar, both the IR Keyboard
|
||||||
SK-7100 and the IR commander SM-1000 are usable in parallel.
|
SK-7100 and the IR commander SM-1000 are usable in parallel.
|
||||||
|
|
||||||
--- doc/README.synaptics
|
Index: doc/README.synaptics
|
||||||
+++ doc/README.synaptics
|
===================================================================
|
||||||
@@ -25,8 +25,8 @@
|
--- doc/README.synaptics.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ doc/README.synaptics 2010-09-08 13:26:14.108033711 +0200
|
||||||
|
@@ -25,8 +25,8 @@ the buttons, this support currently has
|
||||||
|
|
||||||
These features can be enabled/disabled and many of them have time and speed
|
These features can be enabled/disabled and many of them have time and speed
|
||||||
parameters which can be adjusted to the taste of the user. These parameters
|
parameters which can be adjusted to the taste of the user. These parameters
|
||||||
@ -47,9 +53,11 @@
|
|||||||
configure). Each line in this file has the following syntax: [param-name]
|
configure). Each line in this file has the following syntax: [param-name]
|
||||||
<value>
|
<value>
|
||||||
|
|
||||||
--- doc/README.twiddler
|
Index: doc/README.twiddler
|
||||||
+++ doc/README.twiddler
|
===================================================================
|
||||||
@@ -101,23 +101,23 @@
|
--- doc/README.twiddler.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ doc/README.twiddler 2010-09-08 13:26:14.128031459 +0200
|
||||||
|
@@ -101,23 +101,23 @@ precompile values because that would mea
|
||||||
file, and provide documentation as well. Using a compulsory
|
file, and provide documentation as well. Using a compulsory
|
||||||
configuration file reliefs my workload :-)
|
configuration file reliefs my workload :-)
|
||||||
|
|
||||||
@ -79,9 +87,11 @@
|
|||||||
|
|
||||||
Gpm will print an error message for any incorrect line in any of the
|
Gpm will print an error message for any incorrect line in any of the
|
||||||
configuration files: error messages include the file name and the
|
configuration files: error messages include the file name and the
|
||||||
--- doc/doc.gpm.in
|
Index: doc/doc.gpm.in
|
||||||
+++ doc/doc.gpm.in
|
===================================================================
|
||||||
@@ -1981,7 +1981,7 @@
|
--- doc/doc.gpm.in.orig 2008-06-16 22:44:05.000000000 +0200
|
||||||
|
+++ doc/doc.gpm.in 2010-09-08 13:26:14.128031459 +0200
|
||||||
|
@@ -1971,7 +1971,7 @@ Available command line options are the f
|
||||||
|
|
||||||
@item -u
|
@item -u
|
||||||
Deny using user-specific configuration files. With this
|
Deny using user-specific configuration files. With this
|
||||||
@ -90,7 +100,7 @@
|
|||||||
of configuration information. This option
|
of configuration information. This option
|
||||||
is intended for those system administrators who fear security could
|
is intended for those system administrators who fear security could
|
||||||
be broken by this daemon. Things should be sufficiently secure, but
|
be broken by this daemon. Things should be sufficiently secure, but
|
||||||
@@ -2009,7 +2009,7 @@
|
@@ -1999,7 +1999,7 @@ changed. This allows modification of per
|
||||||
the daemon.
|
the daemon.
|
||||||
|
|
||||||
%M The actual configuration file is better introduced by looking at your
|
%M The actual configuration file is better introduced by looking at your
|
||||||
@ -99,7 +109,7 @@
|
|||||||
%M
|
%M
|
||||||
%MSKIP
|
%MSKIP
|
||||||
|
|
||||||
@@ -2196,7 +2196,7 @@
|
@@ -2186,7 +2186,7 @@ Alessandro Rubini <rubini@linux.it>
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.nf
|
.nf
|
||||||
/dev/gpmctl The socket used to connect to gpm.
|
/dev/gpmctl The socket used to connect to gpm.
|
||||||
@ -108,9 +118,11 @@
|
|||||||
$(HOME)/.gpm-root The user configuration file.
|
$(HOME)/.gpm-root The user configuration file.
|
||||||
/dev/vcs* Virtual Console Screens
|
/dev/vcs* Virtual Console Screens
|
||||||
.fi
|
.fi
|
||||||
--- doc/gpm.info
|
Index: doc/gpm.info
|
||||||
+++ doc/gpm.info
|
===================================================================
|
||||||
@@ -1604,7 +1604,7 @@
|
--- doc/gpm.info.orig 2009-02-09 10:59:44.000000000 +0100
|
||||||
|
+++ doc/gpm.info 2010-09-08 13:26:14.168026952 +0200
|
||||||
|
@@ -1594,7 +1594,7 @@ distribution directory. The tool won't r
|
||||||
|
|
||||||
`-u'
|
`-u'
|
||||||
Deny using user-specific configuration files. With this option on,
|
Deny using user-specific configuration files. With this option on,
|
||||||
@ -119,9 +131,11 @@
|
|||||||
configuration information. This option is intended for those
|
configuration information. This option is intended for those
|
||||||
system administrators who fear security could be broken by this
|
system administrators who fear security could be broken by this
|
||||||
daemon. Things should be sufficiently secure, but if you find a
|
daemon. Things should be sufficiently secure, but if you find a
|
||||||
--- src/headers/silitek.h
|
Index: src/headers/silitek.h
|
||||||
+++ src/headers/silitek.h
|
===================================================================
|
||||||
@@ -27,7 +27,7 @@
|
--- src/headers/silitek.h.orig 2010-09-08 13:26:14.000045878 +0200
|
||||||
|
+++ src/headers/silitek.h 2010-09-08 13:26:14.224020642 +0200
|
||||||
|
@@ -27,7 +27,7 @@ extern void silitek_keys(unsigned char *
|
||||||
extern void silitek_keys_ps2(unsigned char *data, int *drag);
|
extern void silitek_keys_ps2(unsigned char *data, int *drag);
|
||||||
extern int silitek_ghost_ps2(unsigned char *data);
|
extern int silitek_ghost_ps2(unsigned char *data);
|
||||||
extern int fd_silitek;
|
extern int fd_silitek;
|
||||||
@ -130,8 +144,10 @@
|
|||||||
#define SILISTRLEN 32
|
#define SILISTRLEN 32
|
||||||
#define SILISTRSCN "key %32s %32s %32s"
|
#define SILISTRSCN "key %32s %32s %32s"
|
||||||
extern void silitek_mapping(void);
|
extern void silitek_mapping(void);
|
||||||
--- src/headers/twiddler.h
|
Index: src/headers/twiddler.h
|
||||||
+++ src/headers/twiddler.h
|
===================================================================
|
||||||
|
--- src/headers/twiddler.h.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/headers/twiddler.h 2010-09-08 13:26:14.284013884 +0200
|
||||||
@@ -46,7 +46,7 @@
|
@@ -46,7 +46,7 @@
|
||||||
#define TW_M_MASK 0x1FF /* mask of movement bits, after shifting */
|
#define TW_M_MASK 0x1FF /* mask of movement bits, after shifting */
|
||||||
#define TW_M_BIT 0x100
|
#define TW_M_BIT 0x100
|
||||||
@ -142,9 +158,11 @@
|
|||||||
+#define TW_CUSTOM_FILE SYSCONFDIR "/twiddler.user"
|
+#define TW_CUSTOM_FILE SYSCONFDIR "/twiddler.user"
|
||||||
|
|
||||||
|
|
||||||
--- src/prog/gpm-root.y
|
Index: src/prog/gpm-root.y
|
||||||
+++ src/prog/gpm-root.y
|
===================================================================
|
||||||
@@ -78,7 +78,7 @@
|
--- src/prog/gpm-root.y.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/prog/gpm-root.y 2010-09-08 13:26:14.304011630 +0200
|
||||||
|
@@ -77,7 +77,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define USER_CFG ".gpm-root"
|
#define USER_CFG ".gpm-root"
|
||||||
@ -153,9 +171,11 @@
|
|||||||
|
|
||||||
#define DEFAULT_FORE 7
|
#define DEFAULT_FORE 7
|
||||||
#define DEFAULT_BACK 0
|
#define DEFAULT_BACK 0
|
||||||
--- src/synaptics.c
|
Index: src/synaptics.c
|
||||||
+++ src/synaptics.c
|
===================================================================
|
||||||
@@ -2047,7 +2047,7 @@
|
--- src/synaptics.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/synaptics.c 2010-09-08 13:26:14.308011179 +0200
|
||||||
|
@@ -2064,7 +2064,7 @@ static void tp_process_report (Gpm_Event
|
||||||
** syn_read_config_file
|
** syn_read_config_file
|
||||||
**
|
**
|
||||||
** Read the configuration data from the global config file
|
** Read the configuration data from the global config file
|
||||||
@ -164,7 +184,7 @@
|
|||||||
*/
|
*/
|
||||||
void tp_read_config_file (char* config_filename)
|
void tp_read_config_file (char* config_filename)
|
||||||
{
|
{
|
||||||
@@ -2171,7 +2171,7 @@
|
@@ -2188,7 +2188,7 @@ static void syn_process_config (info_typ
|
||||||
gpm_report (GPM_PR_INFO, " Firmware version %d.%d\n",
|
gpm_report (GPM_PR_INFO, " Firmware version %d.%d\n",
|
||||||
ident.info_major, ident.info_minor);
|
ident.info_major, ident.info_minor);
|
||||||
|
|
25
gpm-daemon_mode.patch
Normal file
25
gpm-daemon_mode.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Index: src/headers/message.h
|
||||||
|
===================================================================
|
||||||
|
--- src/headers/message.h.orig 2010-09-08 16:43:48.924334502 +0200
|
||||||
|
+++ src/headers/message.h 2010-09-08 16:43:49.456294395 +0200
|
||||||
|
@@ -146,6 +146,7 @@
|
||||||
|
#define GPM_MESS_SETSID_FAILED "Setsid failed"
|
||||||
|
#define GPM_MESS_CHDIR_FAILED "change directory failed"
|
||||||
|
#define GPM_MESS_FORK_FAILED "Fork failed."
|
||||||
|
+#define GPM_MESS_DAEMON_FAILED "Change to run in background failed."
|
||||||
|
#define GPM_MESS_VCCHECK "Failed on virtual console check."
|
||||||
|
#define GPM_MESS_PROT_ERR "Error in protocol"
|
||||||
|
#define GPM_MESS_ROOT "You should be root to run gpm!"
|
||||||
|
Index: src/daemon/startup.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/startup.c.orig 2010-09-08 16:43:49.328304044 +0200
|
||||||
|
+++ src/daemon/startup.c 2010-09-08 16:46:36.665526251 +0200
|
||||||
|
@@ -126,7 +126,7 @@ void startup(int argc, char **argv)
|
||||||
|
|
||||||
|
if (option.run_status == GPM_RUN_STARTUP ) { /* else is debugging */
|
||||||
|
if (daemon(0,0))
|
||||||
|
- gpm_report(GPM_PR_OOPS,GPM_MESS_FORK_FAILED); /* error */
|
||||||
|
+ gpm_report(GPM_PR_OOPS,GPM_MESS_DAEMON_FAILED); /* error */
|
||||||
|
|
||||||
|
option.run_status = GPM_RUN_DAEMON; /* child */
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
Index: gpm-1.20.1/src/gpm.c
|
Index: gpm-1.20.1/src/gpm.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- gpm-1.20.1.orig/src/gpm.c
|
--- src/daemon/gpm.c
|
||||||
+++ gpm-1.20.1/src/gpm.c
|
+++ src/daemon/gpm.c
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
********/
|
********/
|
||||||
|
|
13
gpm-int_ptr_casts.patch
Normal file
13
gpm-int_ptr_casts.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Index: src/twiddler.c
|
||||||
|
===================================================================
|
||||||
|
--- src/twiddler.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/twiddler.c 2010-09-08 18:13:31.706407202 +0200
|
||||||
|
@@ -429,7 +429,7 @@ char *twiddler_rest_to_value(char *s)
|
||||||
|
return strdup(buf);
|
||||||
|
}
|
||||||
|
if (*ptr == '\\')
|
||||||
|
- return (char *)twiddler_escape_sequence(ptr+1, &len /* unused */);
|
||||||
|
+ return (char *)(long)twiddler_escape_sequence(ptr+1, &len /* unused */);
|
||||||
|
|
||||||
|
if (strlen(ptr)==1) return ((char *)((unsigned long)*ptr & 0xFF));
|
||||||
|
|
16
gpm-log.patch
Normal file
16
gpm-log.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Index: src/report.c
|
||||||
|
===================================================================
|
||||||
|
--- src/report.c.orig 2010-09-08 17:04:41.743044084 +0200
|
||||||
|
+++ src/report.c 2010-09-08 17:08:22.257855674 +0200
|
||||||
|
@@ -92,8 +92,9 @@ void gpm_report(int line, char *file, in
|
||||||
|
switch(stat) {
|
||||||
|
case GPM_STAT_INFO:
|
||||||
|
#ifdef HAVE_VSYSLOG
|
||||||
|
- syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
||||||
|
- vsyslog(LOG_INFO | LOG_USER, text, ap2);
|
||||||
|
+ // gpm spams /var/log/messages (bnc#307209)
|
||||||
|
+ // syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
|
||||||
|
+ // vsyslog(LOG_INFO | LOG_USER, text, ap2);
|
||||||
|
#else
|
||||||
|
fprintf(stderr,GPM_STRING_INFO);
|
||||||
|
vfprintf(stderr,text,ap);
|
62
gpm-no_templates_for_new_multiple_mode.patch
Normal file
62
gpm-no_templates_for_new_multiple_mode.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
Index: src/daemon/cmdline.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/cmdline.c.orig 2010-09-08 18:38:23.672261112 +0200
|
||||||
|
+++ src/daemon/cmdline.c 2010-09-08 19:43:17.467206480 +0200
|
||||||
|
@@ -46,38 +46,35 @@ void cmdline(int argc, char **argv)
|
||||||
|
if (optarg)
|
||||||
|
opt_age_limit = atoi(optarg); break;
|
||||||
|
case 'b': (which_mouse->opt_baud) = atoi(optarg); break;
|
||||||
|
- case 'B': (which_mouse->opt_sequence) = optarg; break;
|
||||||
|
+ case 'B': (which_mouse->opt_sequence) = optarg; break;
|
||||||
|
case 'd': (which_mouse->opt_delta) = atoi(optarg); break;
|
||||||
|
case 'D': option.run_status = GPM_RUN_DEBUG; break;
|
||||||
|
case 'g': (which_mouse->opt_glidepoint_tap)=atoi(optarg); break;
|
||||||
|
case 'h': exit(usage(NULL));
|
||||||
|
- case 'i': (which_mouse->opt_time)=atoi(optarg); break;
|
||||||
|
+ case 'i': (which_mouse->opt_time)=atoi(optarg); break;
|
||||||
|
case 'k': check_kill(); break;
|
||||||
|
case 'l': opt_lut = optarg; break;
|
||||||
|
- case 'm': add_mouse(GPM_ADD_DEVICE,optarg);
|
||||||
|
- (which_mouse->opt_dev) = optarg; break; /* GO AWAY!*/
|
||||||
|
+ case 'm': (which_mouse->opt_dev) = optarg; break; /* GO AWAY!*/
|
||||||
|
case 'M': opt_double++; option.repeater++;
|
||||||
|
if (option.repeater_type == 0)
|
||||||
|
option.repeater_type = "msc";
|
||||||
|
which_mouse=mouse_table+2; break;
|
||||||
|
- case 'o': add_mouse(GPM_ADD_OPTIONS,optarg);
|
||||||
|
- gpm_report(GPM_PR_DEBUG,"options: %s",optarg);
|
||||||
|
- (which_mouse->opt_options) = optarg; break; /* GO AWAY */
|
||||||
|
+ case 'o': gpm_report(GPM_PR_DEBUG,"options: %s",optarg);
|
||||||
|
+ (which_mouse->opt_options) = optarg; break; /* GO AWAY */
|
||||||
|
case 'p': opt_ptrdrag = 0; break;
|
||||||
|
case 'r':
|
||||||
|
/* being called responsiveness, I must take the inverse */
|
||||||
|
(which_mouse->opt_scale)=atoi(optarg);
|
||||||
|
if(!(which_mouse->opt_scale) || (which_mouse->opt_scale) > 100) (which_mouse->opt_scale)=100; /* the maximum */
|
||||||
|
- else (which_mouse->opt_scale)=100/(which_mouse->opt_scale); break;
|
||||||
|
+ else (which_mouse->opt_scale)=100/(which_mouse->opt_scale); break;
|
||||||
|
case 'R':
|
||||||
|
option.repeater++;
|
||||||
|
if (optarg) option.repeater_type = optarg;
|
||||||
|
else option.repeater_type = "msc"; break;
|
||||||
|
- case 's': (which_mouse->opt_sample) = atoi(optarg); break;
|
||||||
|
+ case 's': (which_mouse->opt_sample) = atoi(optarg); break;
|
||||||
|
case 'S': if (optarg) opt_special = optarg;
|
||||||
|
else opt_special=""; break;
|
||||||
|
- case 't': add_mouse(GPM_ADD_TYPE,optarg);
|
||||||
|
- (which_mouse->opt_type) = optarg; break; /* GO AWAY */
|
||||||
|
+ case 't': (which_mouse->opt_type) = optarg; break; /* GO AWAY */
|
||||||
|
case 'u': option.autodetect = 1; break;
|
||||||
|
case 'T': opt_test++; break;
|
||||||
|
case 'v': printf(GPM_MESS_VERSION "\n"); exit(0);
|
||||||
|
Index: src/daemon/startup.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/startup.c.orig 2010-09-08 18:38:23.672261112 +0200
|
||||||
|
+++ src/daemon/startup.c 2010-09-08 19:42:23.770512127 +0200
|
||||||
|
@@ -139,6 +139,5 @@ void startup(int argc, char **argv)
|
||||||
|
|
||||||
|
/****************** OLD CODE from gpn.c END ***********************/
|
||||||
|
|
||||||
|
- init_mice(option.micelist); /* reads option.micelist */
|
||||||
|
atexit(gpm_exited); /* call gpm_exited at the end */
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
--- src/headers/gpmInt.h
|
Index: src/headers/gpmInt.h
|
||||||
+++ src/headers/gpmInt.h
|
===================================================================
|
||||||
@@ -91,21 +91,27 @@
|
--- src/headers/gpmInt.h.orig 2010-09-08 13:25:25.777479285 +0200
|
||||||
|
+++ src/headers/gpmInt.h 2010-09-08 13:25:31.112878123 +0200
|
||||||
|
@@ -50,21 +50,27 @@
|
||||||
|
|
||||||
/*** mouse commands ***/
|
/*** mouse commands ***/
|
||||||
|
|
13
gpm-ps2_read.patch
Normal file
13
gpm-ps2_read.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Index: src/daemon/getmousedata.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/getmousedata.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/daemon/getmousedata.c 2010-09-07 19:18:52.107824882 +0200
|
||||||
|
@@ -70,7 +70,7 @@ char *getMouseData(int fd, Gpm_Type *typ
|
||||||
|
|
||||||
|
if((i=(which_mouse->m_type)->packetlen-howmany)) /* still to get */
|
||||||
|
do {
|
||||||
|
- j = read(fd,edata-i,i); /* edata is pointer just after data */
|
||||||
|
+ j = read(fd,edata-i,howmany); /* edata is pointer just after data */
|
||||||
|
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
|
||||||
|
write(fifofd, edata-i, j);
|
||||||
|
i -= j;
|
@ -1,270 +1,8 @@
|
|||||||
--- src/gpm.c
|
Index: src/mice.c
|
||||||
+++ src/gpm.c
|
===================================================================
|
||||||
@@ -71,7 +71,8 @@
|
--- src/mice.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
DEF_TIME, DEF_CLUSTER, DEF_THREE, DEF_GLIDEPOINT_TAP,
|
+++ src/mice.c 2010-09-08 18:38:24.516205731 +0200
|
||||||
(char *)NULL /* extra */,
|
@@ -2372,116 +2372,116 @@ Gpm_Type mice[]={
|
||||||
(Gpm_Type *)NULL,
|
|
||||||
- -1
|
|
||||||
+ -1,
|
|
||||||
+ 0, 0 /* save byte, is_save_byte */
|
|
||||||
}
|
|
||||||
};
|
|
||||||
struct mouse_features *which_mouse;
|
|
||||||
@@ -329,25 +330,57 @@
|
|
||||||
* fetch the actual device data from the mouse device, dependent on
|
|
||||||
* what Gpm_Type is being passed.
|
|
||||||
*-------------------------------------------------------------------*/
|
|
||||||
-static inline char *getMouseData(int fd, Gpm_Type *type, int kd_mode)
|
|
||||||
+static inline char *getMouseData(int fd, Gpm_Type *type, int kd_mode,
|
|
||||||
+ unsigned char *save_byte , int *is_save_byte,
|
|
||||||
+ int *restart)
|
|
||||||
{
|
|
||||||
static unsigned char data[32]; /* quite a big margin :) */
|
|
||||||
char *edata=data+type->packetlen;
|
|
||||||
int howmany=type->howmany;
|
|
||||||
+ int preread;
|
|
||||||
int i,j;
|
|
||||||
|
|
||||||
/*....................................... read and identify one byte */
|
|
||||||
|
|
||||||
- if (read(fd, data, howmany)!=howmany) {
|
|
||||||
- if (opt_test) exit(0);
|
|
||||||
- gpm_report(GPM_PR_ERR,GPM_MESS_READ_FIRST, strerror(errno));
|
|
||||||
- return NULL;
|
|
||||||
+ preread = 0;
|
|
||||||
+ if (*is_save_byte) {
|
|
||||||
+ /* one byte is saved, howmany must be 1 otherwise this
|
|
||||||
+ byte hasn't been saved */
|
|
||||||
+ data[0] = *save_byte;
|
|
||||||
+ *is_save_byte = 0;
|
|
||||||
+ preread = 1;
|
|
||||||
+ } else {
|
|
||||||
+ if ((preread = read(fd, data, howmany))!=howmany) {
|
|
||||||
+ if (opt_test) exit(0);
|
|
||||||
+ gpm_report(GPM_PR_ERR,GPM_MESS_READ_FIRST, strerror(errno));
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* try to find sequence AA 00 which is generated by kernel-2.4.9 or higher
|
|
||||||
+ when PS/2 mouse was replugged */
|
|
||||||
+ if ((m_type->isPS2 == 1) && (data[0] == 0xaa)) {
|
|
||||||
+ if (preread == 1) {
|
|
||||||
+ // read second byte
|
|
||||||
+ if (read(fd, &(data[1]),1) == 1)
|
|
||||||
+ preread += 1;
|
|
||||||
+ }
|
|
||||||
+ if ((preread >= 2) && (data[1] == 0x0)) {
|
|
||||||
+ gpm_report(GPM_PR_DEBUG,GPM_MESS_REPLUGGED);
|
|
||||||
+ *restart = 1;
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep)
|
|
||||||
write(fifofd, data, howmany);
|
|
||||||
|
|
||||||
if ((data[0]&(m_type->proto)[0]) != (m_type->proto)[1]) {
|
|
||||||
+ if (preread > howmany) {
|
|
||||||
+ /* second byte was involuntary preread in test for PS/2 replugging */
|
|
||||||
+ *save_byte = data[1];
|
|
||||||
+ *is_save_byte = 1;
|
|
||||||
+ }
|
|
||||||
if (m_type->getextra == 1) {
|
|
||||||
data[1]=GPM_EXTRA_MAGIC_1; data[2]=GPM_EXTRA_MAGIC_2;
|
|
||||||
gpm_report(GPM_PR_DEBUG,GPM_EXTRA_DATA,data[0]);
|
|
||||||
@@ -357,6 +390,12 @@
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if ((preread > howmany) &&
|
|
||||||
+ (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep))
|
|
||||||
+ /* one byte was read in test for replugging sequence and will be
|
|
||||||
+ used as normal data byte */
|
|
||||||
+ write(fifofd, &(data[1]), 1);
|
|
||||||
+
|
|
||||||
/*....................................... read the rest */
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -364,13 +403,20 @@
|
|
||||||
* tried ps2 with the original selection package, which called usleep()
|
|
||||||
*/
|
|
||||||
|
|
||||||
- if((i=m_type->packetlen-howmany)) /* still to get */
|
|
||||||
+ if((i=m_type->packetlen-preread) > 0) { /* still to get */
|
|
||||||
do {
|
|
||||||
j = read(fd,edata-i,howmany); /* edata is pointer just after data */
|
|
||||||
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
|
|
||||||
write(fifofd, edata-i, j);
|
|
||||||
i -= j;
|
|
||||||
} while (i && j);
|
|
||||||
+ } else {
|
|
||||||
+ if (preread > m_type->packetlen) {
|
|
||||||
+ /* second byte was involuntary preread in test for PS/2 replugging */
|
|
||||||
+ *save_byte = data[1];
|
|
||||||
+ *is_save_byte = 1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (i) {
|
|
||||||
gpm_report(GPM_PR_ERR,GPM_MESS_READ_REST, strerror(errno));
|
|
||||||
@@ -396,7 +442,7 @@
|
|
||||||
* the data via repeat_fun() to the repeater device
|
|
||||||
*-------------------------------------------------------------------*/
|
|
||||||
static inline int processMouse(int fd, Gpm_Event *event, Gpm_Type *type,
|
|
||||||
- int kd_mode)
|
|
||||||
+ int kd_mode, unsigned char *save_byte, int *is_save_byte)
|
|
||||||
{
|
|
||||||
char *data;
|
|
||||||
static int fine_dx, fine_dy;
|
|
||||||
@@ -408,6 +454,7 @@
|
|
||||||
fd_set fdSet;
|
|
||||||
static int newB=0, oldB=0, oldT=0; /* old buttons and Type to chain events */
|
|
||||||
/* static int buttonlock, buttonlockflag; */
|
|
||||||
+ int restart;
|
|
||||||
|
|
||||||
#define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
|
|
||||||
#define DIF_TIME(t1,t2) ((t2.tv_sec -t1.tv_sec) *1000+ \
|
|
||||||
@@ -433,8 +480,11 @@
|
|
||||||
FD_ZERO(&fdSet); FD_SET(fd,&fdSet); i=0;
|
|
||||||
|
|
||||||
do { /* cluster loop */
|
|
||||||
- if(((data=getMouseData(fd,m_type,kd_mode))==NULL)
|
|
||||||
+ restart = 0;
|
|
||||||
+ if(((data=getMouseData(fd,m_type,kd_mode,
|
|
||||||
+ save_byte,is_save_byte,&restart))==NULL)
|
|
||||||
|| ((*(m_type->fun))(&nEvent,data)==-1) ) {
|
|
||||||
+ if (restart) return -1;
|
|
||||||
if (!i) return 0;
|
|
||||||
else break;
|
|
||||||
}
|
|
||||||
@@ -916,6 +966,32 @@
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline void initMouse(int i, int *fd, int *maxfd)
|
|
||||||
+{
|
|
||||||
+ which_mouse=mouse_table+i; /* used to access options */
|
|
||||||
+
|
|
||||||
+ if (!opt_dev) gpm_report(GPM_PR_OOPS,GPM_MESS_NEED_MDEV);
|
|
||||||
+
|
|
||||||
+ if(!strcmp(opt_dev,"-")) *fd=0; /* use stdin */
|
|
||||||
+ else if( (*fd=open(opt_dev,O_RDWR | O_NDELAY)) < 0)
|
|
||||||
+ gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,opt_dev);
|
|
||||||
+
|
|
||||||
+ /* and then reset the flag */
|
|
||||||
+ fcntl(*fd,F_SETFL,fcntl(*fd,F_GETFL) & ~O_NDELAY);
|
|
||||||
+
|
|
||||||
+ /* create argc and argv for this device */
|
|
||||||
+ mouse_argv[i] = build_argv(opt_type, opt_options, &mouse_argc[i], ',');
|
|
||||||
+
|
|
||||||
+ /* init the device, and use the return value as new mouse type */
|
|
||||||
+ if (m_type->init)
|
|
||||||
+ m_type=(m_type->init)(*fd, m_type->flags, m_type, mouse_argc[i],
|
|
||||||
+ mouse_argv[i]);
|
|
||||||
+ if (!m_type) gpm_report(GPM_PR_OOPS,GPM_MESS_MOUSE_INIT);
|
|
||||||
+
|
|
||||||
+ which_mouse->fd=*fd;
|
|
||||||
+ *maxfd=max(*fd, *maxfd);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*-------------------------------------------------------------------*/
|
|
||||||
int old_main()
|
|
||||||
{
|
|
||||||
@@ -928,28 +1004,7 @@
|
|
||||||
Gpm_Event event;
|
|
||||||
|
|
||||||
for (i = 1; i <= 1+opt_double; i++) {
|
|
||||||
- which_mouse=mouse_table+i; /* used to access options */
|
|
||||||
-
|
|
||||||
- if (!opt_dev) gpm_report(GPM_PR_OOPS,GPM_MESS_NEED_MDEV);
|
|
||||||
-
|
|
||||||
- if(!strcmp(opt_dev,"-")) fd=0; /* use stdin */
|
|
||||||
- else if( (fd=open(opt_dev,O_RDWR | O_NDELAY)) < 0)
|
|
||||||
- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,opt_dev);
|
|
||||||
-
|
|
||||||
- /* and then reset the flag */
|
|
||||||
- fcntl(fd,F_SETFL,fcntl(fd,F_GETFL) & ~O_NDELAY);
|
|
||||||
-
|
|
||||||
- /* create argc and argv for this device */
|
|
||||||
- mouse_argv[i] = build_argv(opt_type, opt_options, &mouse_argc[i], ',');
|
|
||||||
-
|
|
||||||
- /* init the device, and use the return value as new mouse type */
|
|
||||||
- if (m_type->init)
|
|
||||||
- m_type=(m_type->init)(fd, m_type->flags, m_type, mouse_argc[i],
|
|
||||||
- mouse_argv[i]);
|
|
||||||
- if (!m_type) gpm_report(GPM_PR_OOPS,GPM_MESS_MOUSE_INIT);
|
|
||||||
-
|
|
||||||
- which_mouse->fd=fd;
|
|
||||||
- maxfd=max(fd, maxfd);
|
|
||||||
+ initMouse(i, &fd, &maxfd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*....................................... catch interesting signals */
|
|
||||||
@@ -1063,10 +1118,14 @@
|
|
||||||
*/
|
|
||||||
|
|
||||||
for (i=1; i <= 1+opt_double; i++) {
|
|
||||||
+ int rc;
|
|
||||||
which_mouse=mouse_table+i; /* used to access options */
|
|
||||||
if (FD_ISSET(which_mouse->fd,&selSet)) {
|
|
||||||
FD_CLR(which_mouse->fd,&selSet); pending--;
|
|
||||||
- if (processMouse(which_mouse->fd, &event, m_type, kd_mode))
|
|
||||||
+ rc = processMouse(which_mouse->fd, &event, m_type, kd_mode,
|
|
||||||
+ &(which_mouse->save_byte),
|
|
||||||
+ &(which_mouse->is_save_byte));
|
|
||||||
+ if (rc > 0) {
|
|
||||||
/* pass it to the client, if any
|
|
||||||
* or to the default handler, if any
|
|
||||||
* or to the selection handler
|
|
||||||
@@ -1075,7 +1134,15 @@
|
|
||||||
(cinfo[event.vc] && do_client(cinfo[event.vc], &event))
|
|
||||||
|| (cinfo[0] && do_client(cinfo[0], &event))
|
|
||||||
|| do_selection(&event);
|
|
||||||
+ } else if (rc == -1) {
|
|
||||||
+ /* try to reinitialise the mouse */
|
|
||||||
+ FD_CLR(which_mouse->fd, &selSet);
|
|
||||||
+ close(which_mouse->fd);
|
|
||||||
+ initMouse(i, &fd, &maxfd);
|
|
||||||
+ FD_CLR(which_mouse->fd, &selSet);
|
|
||||||
+ which_mouse->is_save_byte=0;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/*..................... got connection, process it */
|
|
||||||
--- src/headers/gpmInt.h
|
|
||||||
+++ src/headers/gpmInt.h
|
|
||||||
@@ -142,6 +142,7 @@
|
|
||||||
|
|
||||||
int (*repeat_fun)(Gpm_Event *state, int fd); /* repeat this event into fd */
|
|
||||||
/* itz Mon Jan 11 23:27:54 PST 1999 */
|
|
||||||
+ int isPS2; /* is 1 for PS/2 mouses, 0 otherwise */
|
|
||||||
} Gpm_Type;
|
|
||||||
|
|
||||||
#define GPM_EXTRA_MAGIC_1 0xAA
|
|
||||||
@@ -165,6 +166,8 @@
|
|
||||||
char *opt_options; /* extra textual configuration */
|
|
||||||
Gpm_Type *m_type;
|
|
||||||
int fd;
|
|
||||||
+ unsigned char save_byte;
|
|
||||||
+ int is_save_byte;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct mouse_features mouse_table[3], *which_mouse; /*the current one*/
|
|
||||||
--- src/headers/message.h
|
|
||||||
+++ src/headers/message.h
|
|
||||||
@@ -65,6 +65,7 @@
|
|
||||||
#define GPM_MESS_VERSION "gpm " GPM_RELEASE " (X-Mas), " GPM_RELEASE_DATE
|
|
||||||
#define GPM_MESS_STARTED "Started gpm successfully. Entered daemon mode."
|
|
||||||
#define GPM_MESS_KILLED "Killed gpm(%d)."
|
|
||||||
+#define GPM_MESS_REPLUGGED "Mouse was replugged"
|
|
||||||
#define GPM_MESS_SKIP_DATA "Skipping a data packet (?)"
|
|
||||||
#define GPM_MESS_DATA_4 "Data %02x %02x %02x (%02x)"
|
|
||||||
#define GPM_MESS_NO_MAGIC "No magic"
|
|
||||||
--- src/mice.c
|
|
||||||
+++ src/mice.c
|
|
||||||
@@ -2217,113 +2217,113 @@
|
|
||||||
|
|
||||||
{"mman", "The \"MouseMan\" and similar devices (3/4 bytes per packet).",
|
{"mman", "The \"MouseMan\" and similar devices (3/4 bytes per packet).",
|
||||||
"Mouseman", M_mman, I_serial, CS7 | STD_FLG, /* first */
|
"Mouseman", M_mman, I_serial, CS7 | STD_FLG, /* first */
|
||||||
@ -298,6 +36,10 @@
|
|||||||
"", M_calus_rel, I_calus, CS8 | CSTOPB | STD_FLG,
|
"", M_calus_rel, I_calus, CS8 | CSTOPB | STD_FLG,
|
||||||
- {0x80, 0x80, 0x80, 0x00}, 6, 6, 0, 0, 0},
|
- {0x80, 0x80, 0x80, 0x00}, 6, 6, 0, 0, 0},
|
||||||
+ {0x80, 0x80, 0x80, 0x00}, 6, 6, 0, 0, 0, 0},
|
+ {0x80, 0x80, 0x80, 0x00}, 6, 6, 0, 0, 0, 0},
|
||||||
|
{"etouch", "EloTouch touch-screens (only button-1 events, by now)",
|
||||||
|
"", M_etouch, I_etouch, STD_FLG,
|
||||||
|
- {0xFF, 0x55, 0xFF, 0x54}, 7, 1, 0, 1, NULL},
|
||||||
|
+ {0xFF, 0x55, 0xFF, 0x54}, 7, 1, 0, 1, NULL, 0},
|
||||||
#ifdef HAVE_LINUX_INPUT_H
|
#ifdef HAVE_LINUX_INPUT_H
|
||||||
{"evdev", "Linux Event Device",
|
{"evdev", "Linux Event Device",
|
||||||
"", M_evdev, I_empty, STD_FLG,
|
"", M_evdev, I_empty, STD_FLG,
|
||||||
@ -307,7 +49,7 @@
|
|||||||
{"exps2", "IntelliMouse Explorer (ps2) - 3 buttons, wheel unused",
|
{"exps2", "IntelliMouse Explorer (ps2) - 3 buttons, wheel unused",
|
||||||
"ExplorerPS/2", M_imps2, I_exps2, STD_FLG,
|
"ExplorerPS/2", M_imps2, I_exps2, STD_FLG,
|
||||||
- {0xc0, 0x00, 0x00, 0x00}, 4, 1, 0, 0, 0},
|
- {0xc0, 0x00, 0x00, 0x00}, 4, 1, 0, 0, 0},
|
||||||
+ {0xc0, 0x00, 0x00, 0x00}, 4, 1, 0, 0, 0, 1},
|
+ {0xc0, 0x00, 0x00, 0x00}, 4, 1, 0, 0, 0, 0},
|
||||||
#ifdef HAVE_LINUX_JOYSTICK_H
|
#ifdef HAVE_LINUX_JOYSTICK_H
|
||||||
{"js", "Joystick mouse emulation",
|
{"js", "Joystick mouse emulation",
|
||||||
"Joystick", M_js, NULL, 0,
|
"Joystick", M_js, NULL, 0,
|
||||||
@ -376,8 +118,8 @@
|
|||||||
+ {0xc0, 0x00, 0x00, 0x00}, 3, 1, 0, 0, R_ps2, 1},
|
+ {0xc0, 0x00, 0x00, 0x00}, 3, 1, 0, 0, R_ps2, 1},
|
||||||
{"sun", "'msc' protocol, but only 3 bytes per packet.",
|
{"sun", "'msc' protocol, but only 3 bytes per packet.",
|
||||||
"", M_sun, I_serial, CS8 | CSTOPB | STD_FLG,
|
"", M_sun, I_serial, CS8 | CSTOPB | STD_FLG,
|
||||||
- {0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, 0},
|
- {0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, R_sun},
|
||||||
+ {0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, 0, 0},
|
+ {0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, R_sun, 0},
|
||||||
{"summa", "Summagraphics or Genius tablet absolute mode(MM-Series)",
|
{"summa", "Summagraphics or Genius tablet absolute mode(MM-Series)",
|
||||||
"", M_summa, I_summa, STD_FLG,
|
"", M_summa, I_summa, STD_FLG,
|
||||||
- {0x80, 0x80, 0x00, 0x00}, 5, 1, 0, 1, R_summa},
|
- {0x80, 0x80, 0x00, 0x00}, 5, 1, 0, 1, R_summa},
|
||||||
@ -413,3 +155,305 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
Index: src/daemon/getmousedata.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/getmousedata.c.orig 2010-09-08 18:11:41.925698527 +0200
|
||||||
|
+++ src/daemon/getmousedata.c 2010-09-08 18:39:50.210572313 +0200
|
||||||
|
@@ -33,25 +33,58 @@
|
||||||
|
* fetch the actual device data from the mouse device, dependent on
|
||||||
|
* what Gpm_Type is being passed.
|
||||||
|
*-------------------------------------------------------------------*/
|
||||||
|
-char *getMouseData(int fd, Gpm_Type *type, int kd_mode)
|
||||||
|
+char *getMouseData(int fd, Gpm_Type *type, int kd_mode,
|
||||||
|
+ unsigned char *save_byte , int *is_save_byte, int *restart)
|
||||||
|
{
|
||||||
|
static unsigned char data[32]; /* quite a big margin :) */
|
||||||
|
char *edata=data+type->packetlen;
|
||||||
|
int howmany=type->howmany;
|
||||||
|
+ int preread;
|
||||||
|
int i,j;
|
||||||
|
|
||||||
|
/*....................................... read and identify one byte */
|
||||||
|
|
||||||
|
if (read(fd, data, howmany)!=howmany) {
|
||||||
|
- if (opt_test) exit(0);
|
||||||
|
- gpm_report(GPM_PR_ERR,GPM_MESS_READ_FIRST, strerror(errno));
|
||||||
|
- return NULL;
|
||||||
|
+ preread = 0;
|
||||||
|
+ if (*is_save_byte) {
|
||||||
|
+ /* one byte is saved, howmany must be 1 otherwise this
|
||||||
|
+ byte hasn't been saved */
|
||||||
|
+ data[0] = *save_byte;
|
||||||
|
+ *is_save_byte = 0;
|
||||||
|
+ preread = 1;
|
||||||
|
+ } else {
|
||||||
|
+ if ((preread = read(fd, data, howmany))!=howmany) {
|
||||||
|
+ if (opt_test) exit(0);
|
||||||
|
+ gpm_report(GPM_PR_ERR,GPM_MESS_READ_FIRST, strerror(errno));
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* try to find sequence AA 00 which is generated by kernel-2.4.9 or higher
|
||||||
|
+ when PS/2 mouse was replugged */
|
||||||
|
+ if (((which_mouse->m_type)->isPS2 == 1) && (data[0] == 0xaa)) {
|
||||||
|
+ if (preread == 1) {
|
||||||
|
+ // read second byte
|
||||||
|
+ if (read(fd, &(data[1]),1) == 1)
|
||||||
|
+ preread += 1;
|
||||||
|
+ }
|
||||||
|
+ if ((preread >= 2) && (data[1] == 0x0)) {
|
||||||
|
+ gpm_report(GPM_PR_DEBUG,GPM_MESS_REPLUGGED);
|
||||||
|
+ *restart = 1;
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep)
|
||||||
|
write(fifofd, data, howmany);
|
||||||
|
|
||||||
|
if ((data[0]&((which_mouse->m_type)->proto)[0]) != ((which_mouse->m_type)->proto)[1]) {
|
||||||
|
+ if (preread > howmany) {
|
||||||
|
+ /* second byte was involuntary preread in test for PS/2 replugging */
|
||||||
|
+ *save_byte = data[1];
|
||||||
|
+ *is_save_byte = 1;
|
||||||
|
+ }
|
||||||
|
if ((which_mouse->m_type)->getextra == 1) {
|
||||||
|
data[1]=GPM_EXTRA_MAGIC_1; data[2]=GPM_EXTRA_MAGIC_2;
|
||||||
|
gpm_report(GPM_PR_DEBUG,GPM_EXTRA_DATA,data[0]);
|
||||||
|
@@ -68,13 +101,20 @@ char *getMouseData(int fd, Gpm_Type *typ
|
||||||
|
* tried ps2 with the original selection package, which called usleep()
|
||||||
|
*/
|
||||||
|
|
||||||
|
- if((i=(which_mouse->m_type)->packetlen-howmany)) /* still to get */
|
||||||
|
+ if((i=(which_mouse->m_type)->packetlen-preread) > 0) { /* still to get */
|
||||||
|
do {
|
||||||
|
j = read(fd,edata-i,howmany); /* edata is pointer just after data */
|
||||||
|
if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
|
||||||
|
write(fifofd, edata-i, j);
|
||||||
|
i -= j;
|
||||||
|
} while (i && j);
|
||||||
|
+ } else {
|
||||||
|
+ if (preread > (which_mouse->m_type)->packetlen) {
|
||||||
|
+ /* second byte was involuntary preread in test for PS/2 replugging */
|
||||||
|
+ *save_byte = data[1];
|
||||||
|
+ *is_save_byte = 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (i) {
|
||||||
|
gpm_report(GPM_PR_ERR,GPM_MESS_READ_REST, strerror(errno));
|
||||||
|
Index: src/daemon/gpm.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/gpm.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/daemon/gpm.c 2010-09-08 18:38:23.256288409 +0200
|
||||||
|
@@ -73,7 +73,8 @@ struct mouse_features mouse_table[3] = {
|
||||||
|
DEF_TIME, DEF_CLUSTER, DEF_THREE, DEF_GLIDEPOINT_TAP,
|
||||||
|
(char *)NULL /* extra */,
|
||||||
|
(Gpm_Type *)NULL,
|
||||||
|
- -1
|
||||||
|
+ -1,
|
||||||
|
+ 0, 0 /* save byte, is_save_byte */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct mouse_features *which_mouse;
|
||||||
|
Index: src/daemon/old_main.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/old_main.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/daemon/old_main.c 2010-09-08 19:34:22.279958939 +0200
|
||||||
|
@@ -37,6 +37,38 @@
|
||||||
|
#define max(a,b) ((a)>(b) ? (a) : (b))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+static inline void initMouse(int i, int *fd, int *maxfd)
|
||||||
|
+{
|
||||||
|
+ which_mouse=mouse_table+i; /* used to access options */
|
||||||
|
+
|
||||||
|
+ if (!(which_mouse->opt_dev))
|
||||||
|
+ gpm_report(GPM_PR_OOPS,GPM_MESS_NEED_MDEV);
|
||||||
|
+
|
||||||
|
+ if(!strcmp((which_mouse->opt_dev),"-"))
|
||||||
|
+ *fd=0; /* use stdin */
|
||||||
|
+ else if( (*fd=open((which_mouse->opt_dev),O_RDWR | O_NDELAY)) < 0)
|
||||||
|
+ gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,(which_mouse->opt_dev));
|
||||||
|
+
|
||||||
|
+ /* and then reset the flag */
|
||||||
|
+ fcntl(*fd,F_SETFL,fcntl(*fd,F_GETFL) & ~O_NDELAY);
|
||||||
|
+
|
||||||
|
+ /* create argc and argv for this device */
|
||||||
|
+ mouse_argv[i] = build_argv((which_mouse->opt_type),
|
||||||
|
+ (which_mouse->opt_options),
|
||||||
|
+ &mouse_argc[i], ',');
|
||||||
|
+
|
||||||
|
+ /* init the device, and use the return value as new mouse type */
|
||||||
|
+ if ((which_mouse->m_type)->init)
|
||||||
|
+ (which_mouse->m_type)=((which_mouse->m_type)->init)(*fd, (which_mouse->m_type)->flags,
|
||||||
|
+ (which_mouse->m_type),
|
||||||
|
+ mouse_argc[i], mouse_argv[i]);
|
||||||
|
+
|
||||||
|
+ if (!(which_mouse->m_type)) gpm_report(GPM_PR_OOPS,GPM_MESS_MOUSE_INIT);
|
||||||
|
+
|
||||||
|
+ which_mouse->fd=*fd;
|
||||||
|
+ *maxfd=max(*fd, *maxfd);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
|
||||||
|
int old_main()
|
||||||
|
{
|
||||||
|
@@ -48,30 +80,8 @@ int old_main()
|
||||||
|
int pending;
|
||||||
|
Gpm_Event event;
|
||||||
|
|
||||||
|
- for (i = 1; i <= 1+opt_double; i++) {
|
||||||
|
- which_mouse=mouse_table+i; /* used to access options */
|
||||||
|
-
|
||||||
|
- if (!(which_mouse->opt_dev)) gpm_report(GPM_PR_OOPS,GPM_MESS_NEED_MDEV);
|
||||||
|
-
|
||||||
|
- if(!strcmp((which_mouse->opt_dev),"-")) fd=0; /* use stdin */
|
||||||
|
- else if( (fd=open((which_mouse->opt_dev),O_RDWR | O_NDELAY)) < 0)
|
||||||
|
- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,(which_mouse->opt_dev));
|
||||||
|
-
|
||||||
|
- /* and then reset the flag */
|
||||||
|
- fcntl(fd,F_SETFL,fcntl(fd,F_GETFL) & ~O_NDELAY);
|
||||||
|
-
|
||||||
|
- /* create argc and argv for this device */
|
||||||
|
- mouse_argv[i] = build_argv((which_mouse->opt_type), (which_mouse->opt_options), &mouse_argc[i], ',');
|
||||||
|
-
|
||||||
|
- /* init the device, and use the return value as new mouse type */
|
||||||
|
- if ((which_mouse->m_type)->init)
|
||||||
|
- (which_mouse->m_type)=((which_mouse->m_type)->init)(fd, (which_mouse->m_type)->flags, (which_mouse->m_type), mouse_argc[i],
|
||||||
|
- mouse_argv[i]);
|
||||||
|
- if (!(which_mouse->m_type)) gpm_report(GPM_PR_OOPS,GPM_MESS_MOUSE_INIT);
|
||||||
|
-
|
||||||
|
- which_mouse->fd=fd;
|
||||||
|
- maxfd=max(fd, maxfd);
|
||||||
|
- }
|
||||||
|
+ for (i = 1; i <= 1+opt_double; i++)
|
||||||
|
+ initMouse(i, &fd, &maxfd);
|
||||||
|
|
||||||
|
/*....................................... catch interesting signals */
|
||||||
|
|
||||||
|
@@ -184,10 +194,14 @@ int old_main()
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i=1; i <= 1+opt_double; i++) {
|
||||||
|
+ int rc;
|
||||||
|
which_mouse=mouse_table+i; /* used to access options */
|
||||||
|
if (FD_ISSET(which_mouse->fd,&selSet)) {
|
||||||
|
FD_CLR(which_mouse->fd,&selSet); pending--;
|
||||||
|
- if (processMouse(which_mouse->fd, &event, (which_mouse->m_type), kd_mode))
|
||||||
|
+ rc = processMouse(which_mouse->fd, &event, (which_mouse->m_type),
|
||||||
|
+ kd_mode, &(which_mouse->save_byte),
|
||||||
|
+ &(which_mouse->is_save_byte));
|
||||||
|
+ if (rc > 0) {
|
||||||
|
/* pass it to the client, if any
|
||||||
|
* or to the default handler, if any
|
||||||
|
* or to the selection handler
|
||||||
|
@@ -196,7 +210,15 @@ int old_main()
|
||||||
|
(cinfo[event.vc] && do_client(cinfo[event.vc], &event))
|
||||||
|
|| (cinfo[0] && do_client(cinfo[0], &event))
|
||||||
|
|| do_selection(&event);
|
||||||
|
+ } else if (rc == -1) {
|
||||||
|
+ /* try to reinitialise the mouse */
|
||||||
|
+ FD_CLR(which_mouse->fd, &selSet);
|
||||||
|
+ close(which_mouse->fd);
|
||||||
|
+ initMouse(i, &fd, &maxfd);
|
||||||
|
+ FD_CLR(which_mouse->fd, &selSet);
|
||||||
|
+ which_mouse->is_save_byte=0;
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*..................... got connection, process it */
|
||||||
|
Index: src/daemon/processmouse.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/processmouse.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/daemon/processmouse.c 2010-09-08 18:11:42.105686598 +0200
|
||||||
|
@@ -40,7 +40,8 @@
|
||||||
|
(t2.tv_usec-t1.tv_usec)/1000)
|
||||||
|
|
||||||
|
|
||||||
|
-int processMouse(int fd, Gpm_Event *event, Gpm_Type *type, int kd_mode)
|
||||||
|
+int processMouse(int fd, Gpm_Event *event, Gpm_Type *type, int kd_mode,
|
||||||
|
+ unsigned char *save_byte, int *is_save_byte)
|
||||||
|
{
|
||||||
|
char *data;
|
||||||
|
static int fine_dx,
|
||||||
|
@@ -55,6 +56,7 @@ int processMouse(int fd, Gpm_Event *even
|
||||||
|
static struct timeval tv1={0,0}, tv2; /* tv1==0: first click is single */
|
||||||
|
static struct timeval timeout={0,0};
|
||||||
|
fd_set fdSet;
|
||||||
|
+ int restart;
|
||||||
|
|
||||||
|
oldT = event->type;
|
||||||
|
|
||||||
|
@@ -78,9 +80,12 @@ int processMouse(int fd, Gpm_Event *even
|
||||||
|
FD_SET(fd,&fdSet);
|
||||||
|
|
||||||
|
do { /* cluster loop */
|
||||||
|
- if(((data=getMouseData(fd, (which_mouse->m_type), kd_mode)) == NULL)
|
||||||
|
+ restart = 0;
|
||||||
|
+ if(((data=getMouseData(fd, (which_mouse->m_type), kd_mode,
|
||||||
|
+ save_byte,is_save_byte,&restart)) == NULL)
|
||||||
|
|| ((*((which_mouse->m_type)->fun))(&nEvent,data)==-1) ) {
|
||||||
|
-
|
||||||
|
+
|
||||||
|
+ if (restart) return -1;
|
||||||
|
if (!i) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
Index: src/headers/daemon.h
|
||||||
|
===================================================================
|
||||||
|
--- src/headers/daemon.h.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/headers/daemon.h 2010-09-08 19:26:01.901761337 +0200
|
||||||
|
@@ -76,6 +76,7 @@ typedef struct Gpm_Type {
|
||||||
|
|
||||||
|
/* repeat this event into fd */
|
||||||
|
int (*repeat_fun)(Gpm_Event *state, int fd);
|
||||||
|
+ int isPS2; /* 1 for PS/2 mouses, 0 otherwise */
|
||||||
|
} Gpm_Type;
|
||||||
|
|
||||||
|
/* this structure is used to hide the dual-mouse stuff */
|
||||||
|
@@ -96,6 +97,8 @@ struct mouse_features {
|
||||||
|
char *opt_options; /* extra textual configuration */
|
||||||
|
Gpm_Type *m_type;
|
||||||
|
int fd;
|
||||||
|
+ unsigned char save_byte;
|
||||||
|
+ int is_save_byte;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
@@ -197,7 +200,9 @@ int do_selection(Gpm_Event *event);
|
||||||
|
|
||||||
|
void get_console_size(Gpm_Event *ePtr);
|
||||||
|
int get_data(Gpm_Connect *where, int whence);
|
||||||
|
-char *getMouseData(int fd, Gpm_Type *type, int kd_mode);
|
||||||
|
+char *getMouseData(int fd, Gpm_Type *type, int kd_mode,
|
||||||
|
+ unsigned char *save_byte , int *is_save_byte,
|
||||||
|
+ int *restart);
|
||||||
|
int getsym(const unsigned char *p0, unsigned char *res);
|
||||||
|
|
||||||
|
void gpm_exited(void);
|
||||||
|
@@ -207,7 +212,8 @@ int open_console(const int mode);
|
||||||
|
int old_main();
|
||||||
|
|
||||||
|
int processConn(int fd);
|
||||||
|
-int processMouse(int fd, Gpm_Event *event, Gpm_Type *type, int kd_mode);
|
||||||
|
+int processMouse(int fd, Gpm_Event *event, Gpm_Type *type, int kd_mode,
|
||||||
|
+ unsigned char *save_byte, int *is_save_byte);
|
||||||
|
int processRequest(Gpm_Cinfo *ci, int vc);
|
||||||
|
int processSpecial(Gpm_Event *event);
|
||||||
|
|
||||||
|
Index: src/headers/message.h
|
||||||
|
===================================================================
|
||||||
|
--- src/headers/message.h.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/headers/message.h 2010-09-08 18:38:24.516205731 +0200
|
||||||
|
@@ -65,6 +65,7 @@
|
||||||
|
#define GPM_MESS_VERSION "gpm " PACKAGE_VERSION
|
||||||
|
#define GPM_MESS_STARTED "Started gpm successfully. Entered daemon mode."
|
||||||
|
#define GPM_MESS_KILLED "Killed gpm(%d)."
|
||||||
|
+#define GPM_MESS_REPLUGGED "Mouse was replugged"
|
||||||
|
#define GPM_MESS_SKIP_DATA "Skipping a data packet (?)"
|
||||||
|
#define GPM_MESS_DATA_4 "Data %02x %02x %02x (%02x)"
|
||||||
|
#define GPM_MESS_NO_MAGIC "No magic"
|
20
gpm-quiet_libgpm.patch
Normal file
20
gpm-quiet_libgpm.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Index: src/lib/report-lib.c
|
||||||
|
===================================================================
|
||||||
|
--- src/lib/report-lib.c.orig 2010-09-08 13:35:23.166173284 +0200
|
||||||
|
+++ src/lib/report-lib.c 2010-09-08 13:36:23.207409061 +0200
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
|
||||||
|
void gpm_report(int line, char *file, int stat, char *text, ... )
|
||||||
|
{
|
||||||
|
+#ifndef QUIET_LIBGPM
|
||||||
|
char *string = NULL;
|
||||||
|
int log_level;
|
||||||
|
va_list ap;
|
||||||
|
@@ -57,5 +58,7 @@ void gpm_report(int line, char *file, in
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
+#endif /* QUIET_LIBGPM */
|
||||||
|
+
|
||||||
|
if(stat == GPM_STAT_OOPS) exit(1); /* may a lib function call exit ???? */
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
--- conf/gpm-silitek.conf
|
Index: conf/gpm-silitek.conf
|
||||||
+++ conf/gpm-silitek.conf
|
===================================================================
|
||||||
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ conf/gpm-silitek.conf 2010-09-08 18:11:42.205679972 +0200
|
||||||
@@ -0,0 +1,45 @@
|
@@ -0,0 +1,45 @@
|
||||||
+# Standard key mapping for Silitek SM-1000
|
+# Standard key mapping for Silitek SM-1000
|
||||||
+# on Linux virtual console (TERM=linux)
|
+# on Linux virtual console (TERM=linux)
|
||||||
@ -46,8 +48,10 @@
|
|||||||
+key ShowWiz \033[[B \033[[B
|
+key ShowWiz \033[[B \033[[B
|
||||||
+key WWW \033[[C \033[[C
|
+key WWW \033[[C \033[[C
|
||||||
+key Close \033[[D \033[[D
|
+key Close \033[[D \033[[D
|
||||||
--- doc/README.silitek
|
Index: doc/README.silitek
|
||||||
+++ doc/README.silitek
|
===================================================================
|
||||||
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ doc/README.silitek 2010-09-08 18:14:39.237907111 +0200
|
||||||
@@ -0,0 +1,188 @@
|
@@ -0,0 +1,188 @@
|
||||||
+This README describes the support for the Silitek SM-1000 IR commander
|
+This README describes the support for the Silitek SM-1000 IR commander
|
||||||
+(also called Netshooter).
|
+(also called Netshooter).
|
||||||
@ -237,50 +241,56 @@
|
|||||||
+ tic linux.tic
|
+ tic linux.tic
|
||||||
+
|
+
|
||||||
+installs the edited terminfo entry for TERM=linux.
|
+installs the edited terminfo entry for TERM=linux.
|
||||||
--- src/Makefile.in
|
Index: src/Makefile.in
|
||||||
+++ src/Makefile.in
|
===================================================================
|
||||||
@@ -13,7 +13,7 @@
|
--- src/Makefile.in.orig 2010-09-08 18:11:41.885701179 +0200
|
||||||
|
+++ src/Makefile.in 2010-09-08 18:14:37.778004511 +0200
|
||||||
|
@@ -13,7 +13,7 @@ include $(top_builddir)/Makefile.include
|
||||||
|
|
||||||
# Main portion: regular build rules
|
# Main portion: regular build rules
|
||||||
|
|
||||||
-GSRC = main.c gpm.c gpn.c mice.c special.c twiddler.c synaptics.c \
|
-GSRC = mice.c twiddler.c synaptics.c \
|
||||||
+GSRC = main.c gpm.c gpn.c mice.c special.c twiddler.c synaptics.c silitek.c \
|
+GSRC = mice.c twiddler.c synaptics.c silitek.c \
|
||||||
startup.c server_tools.c
|
daemon/add_mouse.c daemon/init_mice.c daemon/reset_mice.c \
|
||||||
|
daemon/build_argv.c daemon/disable_paste.c daemon/do_client.c \
|
||||||
GOBJ = $(GSRC:.c=.o) report.o tools.o
|
daemon/do_selection.c daemon/get_console_size.c daemon/get_data.c \
|
||||||
@@ -24,7 +24,7 @@
|
@@ -35,7 +35,7 @@ LOBJ = $(LSRC:.c=.o) tools.o @CURSES_OBJ
|
||||||
|
|
||||||
PICS = $(LOBJ:.o=.lo)
|
PICS = $(LOBJ:.o=.lo)
|
||||||
|
|
||||||
-HDRS = gpm.h gpmInt.h twiddler.h synaptics.h message.h
|
-HDRS = gpm.h gpmInt.h twiddler.h synaptics.h message.h
|
||||||
+HDRS = gpm.h gpmInt.h twiddler.h synaptics.h silitek.h message.h
|
+HDRS = gpm.h gpmInt.h twiddler.h synaptics.h silitek.h message.h
|
||||||
|
|
||||||
PSRC = prog/mev.c prog/hltest.c prog/mouse-test.c prog/disable-paste.c
|
PSRC = prog/mev.c prog/hltest.c prog/mouse-test.c prog/disable-paste.c \
|
||||||
|
prog/display-buttons.c prog/display-coords.c prog/get-versions.c
|
||||||
@@ -144,7 +144,7 @@
|
@@ -152,7 +152,7 @@ prog/gpm-root: prog/gpm-root.c lib/libgp
|
||||||
$(CC) -I. @CPPFLAGS@ $(CPPFLAGS) @CFLAGS@ $(CFLAGS) -c -o $@.o $<
|
$(CC) -I. @CPPFLAGS@ $(CPPFLAGS) @CFLAGS@ $(CFLAGS) -c -o $@.o $<
|
||||||
$(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $@.o @LIBS@ $(LIBS) lib/libgpm.a
|
$(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $@.o @LIBS@ $(LIBS) lib/libgpm.so.@abi_lev@
|
||||||
|
|
||||||
-prog/mouse-test: mice.o twiddler.o synaptics.o
|
-prog/mouse-test: prog/mouse-test.o mice.o twiddler.o synaptics.o prog/open_console.o
|
||||||
+prog/mouse-test: mice.o twiddler.o synaptics.o silitek.o
|
+prog/mouse-test: prog/mouse-test.o mice.o twiddler.o synaptics.o silitek.o prog/open_console.o
|
||||||
|
$(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $^ @LIBS@ $(LIBS) -lm
|
||||||
|
|
||||||
$(PROG): lib/libgpm.so lib/@SHLIB@ lib/libgpm.a
|
$(PROG): lib/libgpm.so.@abi_lev@
|
||||||
|
Index: src/headers/message.h
|
||||||
--- src/headers/message.h
|
===================================================================
|
||||||
+++ src/headers/message.h
|
--- src/headers/message.h.orig 2010-09-08 18:11:42.173682092 +0200
|
||||||
@@ -194,6 +194,10 @@
|
+++ src/headers/message.h 2010-09-08 18:14:37.518021855 +0200
|
||||||
#define GPM_MESS_INCORRECT_LINE "%s: %s :%i: Incorrect line:\"%s\""
|
@@ -196,6 +196,10 @@
|
||||||
#define GPM_MESS_FIRST_DEV "Use -m device -t protocol [-o options]!"
|
#define GPM_MESS_FIRST_DEV "Use -m device -t protocol [-o options]!"
|
||||||
|
#define GPM_MESS_ELO_CALIBRATE "%s: etouch: calibration file %s absent or invalid, using defaults"
|
||||||
|
|
||||||
+#define GPM_MESS_SILIPS2_ENABLE "silips2: enable error"
|
+#define GPM_MESS_SILIPS2_ENABLE "silips2: enable error"
|
||||||
+#define GPM_MESS_SILIPS2_DISABLE "silips2: disable error"
|
+#define GPM_MESS_SILIPS2_DISABLE "silips2: disable error"
|
||||||
+#define GPM_MESS_SILIPS2_RESET "silips2: reset error"
|
+#define GPM_MESS_SILIPS2_RESET "silips2: reset error"
|
||||||
+
|
+
|
||||||
|
|
||||||
/* warnings */
|
/* warnings */
|
||||||
#define GPM_MESS_REQUEST_ON "Request on vc %i > %i"
|
#define GPM_MESS_REQUEST_ON "Request on vc %i > %i"
|
||||||
--- src/headers/silitek.h
|
#define GPM_MESS_FAILED_CONNECT "Failed gpm connect attempt by uid %d for vc %s"
|
||||||
+++ src/headers/silitek.h
|
Index: src/headers/silitek.h
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ src/headers/silitek.h 2010-09-08 18:14:39.409895637 +0200
|
||||||
@@ -0,0 +1,33 @@
|
@@ -0,0 +1,33 @@
|
||||||
+/*
|
+/*
|
||||||
+ * silitek.h - support for the Silitek SM-1000 (Netshooter) with its IR
|
+ * silitek.h - support for the Silitek SM-1000 (Netshooter) with its IR
|
||||||
@ -315,17 +325,19 @@
|
|||||||
+#define SILISTRLEN 32
|
+#define SILISTRLEN 32
|
||||||
+#define SILISTRSCN "key %32s %32s %32s"
|
+#define SILISTRSCN "key %32s %32s %32s"
|
||||||
+extern void silitek_mapping(void);
|
+extern void silitek_mapping(void);
|
||||||
--- src/mice.c
|
Index: src/mice.c
|
||||||
+++ src/mice.c
|
===================================================================
|
||||||
@@ -74,6 +74,7 @@
|
--- src/mice.c.orig 2010-09-08 18:11:41.941697467 +0200
|
||||||
#include "headers/gpmInt.h"
|
+++ src/mice.c 2010-09-08 18:11:42.401666981 +0200
|
||||||
|
@@ -75,6 +75,7 @@
|
||||||
|
#include "headers/daemon.h"
|
||||||
#include "headers/twiddler.h"
|
#include "headers/twiddler.h"
|
||||||
#include "headers/synaptics.h"
|
#include "headers/synaptics.h"
|
||||||
+#include "headers/silitek.h"
|
+#include "headers/silitek.h"
|
||||||
#include "headers/message.h"
|
#include "headers/message.h"
|
||||||
|
|
||||||
/*========================================================================*/
|
|
||||||
@@ -667,6 +668,86 @@
|
@@ -685,6 +686,86 @@ static int M_imps2(Gpm_Event *state, un
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,7 +424,7 @@
|
|||||||
static int M_netmouse(Gpm_Event *state, unsigned char *data)
|
static int M_netmouse(Gpm_Event *state, unsigned char *data)
|
||||||
{
|
{
|
||||||
/* Avoid these beasts if you can. They connect to normal PS/2 port,
|
/* Avoid these beasts if you can. They connect to normal PS/2 port,
|
||||||
@@ -745,7 +826,6 @@
|
@@ -763,7 +844,6 @@ static Gpm_Type *I_netmouse(int fd, unsi
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,7 +432,7 @@
|
|||||||
static int M_mman(Gpm_Event *state, unsigned char *data)
|
static int M_mman(Gpm_Event *state, unsigned char *data)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -1828,7 +1908,7 @@
|
@@ -1928,7 +2008,7 @@ static int read_mouse_id(int fd)
|
||||||
*
|
*
|
||||||
* Returns 0 if OK, or >0 if 1 or more errors occurred.
|
* Returns 0 if OK, or >0 if 1 or more errors occurred.
|
||||||
*/
|
*/
|
||||||
@ -429,7 +441,7 @@
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
@@ -1845,6 +1925,89 @@
|
@@ -1945,6 +2025,89 @@ static int write_to_mouse(int fd, unsign
|
||||||
return(error);
|
return(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -519,7 +531,7 @@
|
|||||||
|
|
||||||
/* intellimouse, ps2 version: Ben Pfaff and Colin Plumb */
|
/* intellimouse, ps2 version: Ben Pfaff and Colin Plumb */
|
||||||
/* Autodetect: Steve Bennett */
|
/* Autodetect: Steve Bennett */
|
||||||
@@ -2297,6 +2460,12 @@
|
@@ -2455,6 +2618,12 @@ Gpm_Type mice[]={
|
||||||
{"ps2", "Busmice of the ps/2 series. Most busmice, actually.",
|
{"ps2", "Busmice of the ps/2 series. Most busmice, actually.",
|
||||||
"PS/2", M_ps2, I_ps2, STD_FLG,
|
"PS/2", M_ps2, I_ps2, STD_FLG,
|
||||||
{0xc0, 0x00, 0x00, 0x00}, 3, 1, 0, 0, R_ps2, 1},
|
{0xc0, 0x00, 0x00, 0x00}, 3, 1, 0, 0, R_ps2, 1},
|
||||||
@ -531,10 +543,12 @@
|
|||||||
+ {0x20, 0x20, 0x00, 0x00}, 1, 1, 0, 0, 0, 0},
|
+ {0x20, 0x20, 0x00, 0x00}, 1, 1, 0, 0, 0, 0},
|
||||||
{"sun", "'msc' protocol, but only 3 bytes per packet.",
|
{"sun", "'msc' protocol, but only 3 bytes per packet.",
|
||||||
"", M_sun, I_serial, CS8 | CSTOPB | STD_FLG,
|
"", M_sun, I_serial, CS8 | CSTOPB | STD_FLG,
|
||||||
{0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, 0, 0},
|
{0xf8, 0x80, 0x00, 0x00}, 3, 1, 0, 0, R_sun, 0},
|
||||||
--- src/silitek.c
|
Index: src/silitek.c
|
||||||
+++ src/silitek.c
|
===================================================================
|
||||||
@@ -0,0 +1,580 @@
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ src/silitek.c 2010-09-08 18:28:24.235054869 +0200
|
||||||
|
@@ -0,0 +1,570 @@
|
||||||
+/*
|
+/*
|
||||||
+ * silitek.c - support for the Silitek SM-1000 (Netshooter) with its IR
|
+ * silitek.c - support for the Silitek SM-1000 (Netshooter) with its IR
|
||||||
+ * receiver plugged serial connector and also with the IR
|
+ * receiver plugged serial connector and also with the IR
|
||||||
@ -697,6 +711,7 @@
|
|||||||
+#include <fcntl.h>
|
+#include <fcntl.h>
|
||||||
+
|
+
|
||||||
+#include "headers/gpm.h"
|
+#include "headers/gpm.h"
|
||||||
|
+#include "headers/daemon.h"
|
||||||
+#include "headers/silitek.h"
|
+#include "headers/silitek.h"
|
||||||
+#include "headers/gpmInt.h"
|
+#include "headers/gpmInt.h"
|
||||||
+#include "headers/message.h"
|
+#include "headers/message.h"
|
||||||
@ -743,17 +758,6 @@
|
|||||||
+};
|
+};
|
||||||
+#define SILITEK_KEYS (sizeof(K_silitek)/sizeof(struct silitek_key_struct))
|
+#define SILITEK_KEYS (sizeof(K_silitek)/sizeof(struct silitek_key_struct))
|
||||||
+
|
+
|
||||||
+/* From twiddler.c: The same silly function as in gpm.c */
|
|
||||||
+static inline int open_console(const int mode)
|
|
||||||
+{
|
|
||||||
+ int fd;
|
|
||||||
+ extern struct options option;
|
|
||||||
+
|
|
||||||
+ if ((fd=open(option.consolename, mode)) < 0)
|
|
||||||
+ gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,option.consolename);
|
|
||||||
+ return fd;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline int silitek_wait(int timeout)
|
+static inline int silitek_wait(int timeout)
|
||||||
+{
|
+{
|
||||||
+ fd_set Set;
|
+ fd_set Set;
|
||||||
@ -865,7 +869,7 @@
|
|||||||
+#undef GET_TIME
|
+#undef GET_TIME
|
||||||
+#undef DIF_TIME
|
+#undef DIF_TIME
|
||||||
+
|
+
|
||||||
+ if (timediff && timediff < opt_time)
|
+ if (timediff && timediff < (which_mouse->opt_time))
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
+ item = K_silitek[but].item;
|
+ item = K_silitek[but].item;
|
||||||
@ -961,7 +965,7 @@
|
|||||||
+#undef GET_TIME
|
+#undef GET_TIME
|
||||||
+#undef DIF_TIME
|
+#undef DIF_TIME
|
||||||
+
|
+
|
||||||
+ if (timediff && timediff < opt_time)
|
+ if (timediff && timediff < (which_mouse->opt_time))
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
+ item = K_silitek[but].item;
|
+ item = K_silitek[but].item;
|
13
gpm-use_getdtablesize.patch
Normal file
13
gpm-use_getdtablesize.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Index: src/daemon/processspecial.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/processspecial.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/daemon/processspecial.c 2010-09-08 17:41:17.533664061 +0200
|
||||||
|
@@ -157,7 +157,7 @@ int processSpecial(Gpm_Event *event)
|
||||||
|
open(option.consolename,O_WRONLY); /* stdout */
|
||||||
|
dup(1); /* stderr */
|
||||||
|
int open_max = sysconf(_SC_OPEN_MAX);
|
||||||
|
- if (open_max == -1) open_max = 1024;
|
||||||
|
+ if (open_max == -1) open_max = getdtablesize();
|
||||||
|
for (i=3;i<open_max; i++) close(i);
|
||||||
|
execl("/bin/sh","sh","-c",command,(char *)NULL);
|
||||||
|
exit(1); /* shouldn't happen */
|
66
gpm-va_arg.patch
Normal file
66
gpm-va_arg.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
Index: src/lib/report-lib.c
|
||||||
|
===================================================================
|
||||||
|
--- src/lib/report-lib.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/lib/report-lib.c 2010-09-08 13:34:13.721996934 +0200
|
||||||
|
@@ -55,5 +55,7 @@ void gpm_report(int line, char *file, in
|
||||||
|
fprintf(stderr,"\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ va_end(ap);
|
||||||
|
+
|
||||||
|
if(stat == GPM_STAT_OOPS) exit(1); /* may a lib function call exit ???? */
|
||||||
|
}
|
||||||
|
Index: src/report.c
|
||||||
|
===================================================================
|
||||||
|
--- src/report.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||||||
|
+++ src/report.c 2010-09-08 13:34:45.694394879 +0200
|
||||||
|
@@ -76,6 +76,9 @@ void gpm_report(int line, char *file, in
|
||||||
|
#ifdef HAVE_VSYSLOG
|
||||||
|
va_list ap2;
|
||||||
|
#endif
|
||||||
|
+ int exit_request = 0; /* 0 -> return is requested
|
||||||
|
+ 1 -> exit(1) is requested
|
||||||
|
+ 2 -> _exit(1) is requested */
|
||||||
|
|
||||||
|
va_start(ap,text);
|
||||||
|
va_copy(ap3, ap);
|
||||||
|
@@ -129,7 +132,7 @@ void gpm_report(int line, char *file, in
|
||||||
|
vfprintf(stderr,text,ap);
|
||||||
|
fprintf(stderr,"\n");
|
||||||
|
|
||||||
|
- exit(1); /* we should have a oops()-function,but this works,too*/
|
||||||
|
+ exit_request = 1; /* we should have an oops()-function,but this works,too*/
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break; /* startup sequence */
|
||||||
|
@@ -188,7 +191,7 @@ void gpm_report(int line, char *file, in
|
||||||
|
vfprintf(stderr,text,ap);
|
||||||
|
fprintf(stderr,"\n");
|
||||||
|
|
||||||
|
- _exit(1); /* we are the fork()-child */
|
||||||
|
+ exit_request = 2; /* we are the fork()-child */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break; /* running gpm */
|
||||||
|
@@ -216,7 +219,7 @@ void gpm_report(int line, char *file, in
|
||||||
|
vfprintf(console,text,ap);
|
||||||
|
fprintf(console,"\n");
|
||||||
|
|
||||||
|
- if(stat == GPM_STAT_OOPS) exit(1);
|
||||||
|
+ if(stat == GPM_STAT_OOPS) exit_request = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
} /* switch for current modus */
|
||||||
|
@@ -226,6 +229,12 @@ void gpm_report(int line, char *file, in
|
||||||
|
#ifdef HAVE_VSYSLOG
|
||||||
|
va_end(ap2);
|
||||||
|
#endif
|
||||||
|
+ if (exit_request == 2)
|
||||||
|
+ _exit(1);
|
||||||
|
+ if (exit_request == 1)
|
||||||
|
+ exit(1);
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
} /* gpm_report */
|
||||||
|
|
||||||
|
|
42
gpm-verbosity.patch
Normal file
42
gpm-verbosity.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
Index: src/prog/gpm-root.y
|
||||||
|
===================================================================
|
||||||
|
--- src/prog/gpm-root.y.orig 2010-09-08 17:00:51.668569297 +0200
|
||||||
|
+++ src/prog/gpm-root.y 2010-09-08 17:00:52.032543941 +0200
|
||||||
|
@@ -870,7 +870,6 @@ int usage(void)
|
||||||
|
" -m <number-or-name> modifier to use\n"
|
||||||
|
" -u inhibit user configuration files\n"
|
||||||
|
" -D don't auto-background and run as daemon\n"
|
||||||
|
- " -V <verbosity-delta> increase amount of logged messages\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
Index: src/daemon/cmdline.c
|
||||||
|
===================================================================
|
||||||
|
--- src/daemon/cmdline.c.orig 2010-09-08 17:00:51.788560939 +0200
|
||||||
|
+++ src/daemon/cmdline.c 2010-09-08 17:01:43.769151777 +0200
|
||||||
|
@@ -78,8 +78,9 @@ void cmdline(int argc, char **argv)
|
||||||
|
case 'u': option.autodetect = 1; break;
|
||||||
|
case 'T': opt_test++; break;
|
||||||
|
case 'v': printf(GPM_MESS_VERSION "\n"); exit(0);
|
||||||
|
- case '2': (which_mouse->opt_three) = -1; break;
|
||||||
|
- case '3': (which_mouse->opt_three) = 1; break;
|
||||||
|
+ case 'V': break; /* gpm_debug_level not supported anymore */
|
||||||
|
+ case '2': (which_mouse->opt_three) = -1; break;
|
||||||
|
+ case '3': (which_mouse->opt_three) = 1; break;
|
||||||
|
default: exit(usage("commandline"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Index: src/headers/message.h
|
||||||
|
===================================================================
|
||||||
|
--- src/headers/message.h.orig 2010-09-08 17:00:51.984547286 +0200
|
||||||
|
+++ src/headers/message.h 2010-09-08 17:00:53.060472330 +0200
|
||||||
|
@@ -98,8 +98,7 @@
|
||||||
|
" -t mouse-type sets mouse type (default '%s')\n" \
|
||||||
|
" Use a non-existent type (e.g. \"help\") to get a list\n" \
|
||||||
|
" -T test: read mouse, no clients\n" \
|
||||||
|
- " -v print version and exit\n" \
|
||||||
|
- " -V verbosity increase number of logged messages\n\n\n" \
|
||||||
|
+ " -v print version and exit\n\n\n" \
|
||||||
|
" Examples:\n\n" \
|
||||||
|
" gpm -m /dev/misc/psaux -t ps2 to start with a ps2 mouse\n" \
|
||||||
|
" gpm -m /dev/tts/0 -t mman to use mouse man on COM1\n\n"
|
31
gpm.changes
31
gpm.changes
@ -1,3 +1,34 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 8 19:59:58 CEST 2010 - pth@suse.de
|
||||||
|
|
||||||
|
- Fix patches.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 8 17:17:02 CEST 2010 - pth@suse.de
|
||||||
|
|
||||||
|
- Update to latest stable version 1.20.6. Notable changes since
|
||||||
|
1.20.1:
|
||||||
|
* Fix default handler in liblow.c
|
||||||
|
* Fixed SONAME (praise the Debian guys, Jonathan Nieder)
|
||||||
|
* Fix possible segfault (FD_SET/negative)
|
||||||
|
* Allow specifying ELISP variable on commandline
|
||||||
|
* Fix broken code semantics
|
||||||
|
* Fix socklen_t issue: Require posix header
|
||||||
|
* Fix building with glibc 2.8
|
||||||
|
* Updated library to version 2.1.0
|
||||||
|
* Gpm_GetLibVersion behaves more consistent (all numbers are one or two digits)
|
||||||
|
- Remove version number from patch name.
|
||||||
|
- Adapt and clean out patches.
|
||||||
|
- Split out contained patches to a separate tar ball as not to
|
||||||
|
confuse quilt.
|
||||||
|
- Use lzma instead of bzip2 to compress tarball.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 7 11:06:22 UTC 2010 - aj@suse.de
|
||||||
|
|
||||||
|
- Split up devel package, do not package static library.
|
||||||
|
- Remove support for updating from SUSE Linux 8.2.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Jan 10 19:07:40 UTC 2010 - coolo@novell.com
|
Sun Jan 10 19:07:40 UTC 2010 - coolo@novell.com
|
||||||
|
|
||||||
|
116
gpm.spec
116
gpm.spec
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package gpm (Version 1.20.1)
|
# spec file for package gpm (Version 1.20.6)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: gpm
|
Name: gpm
|
||||||
BuildRequires: bison ncurses-devel
|
BuildRequires: bison lzma ncurses-devel
|
||||||
Url: http://linux.schottelius.org/gpm/
|
Url: http://linux.schottelius.org/gpm/
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System/Console
|
Group: System/Console
|
||||||
@ -31,33 +31,33 @@ AutoReqProv: on
|
|||||||
Obsoletes: gpm-64bit
|
Obsoletes: gpm-64bit
|
||||||
%endif
|
%endif
|
||||||
#
|
#
|
||||||
Version: 1.20.1
|
Version: 1.20.6
|
||||||
Release: 455
|
Release: 1
|
||||||
Summary: Console Mouse Support
|
Summary: Console Mouse Support
|
||||||
Source0: http://arcana.linux.it/pub/gpm/gpm-%{version}.tar.bz2
|
Source0: gpm-%{version}.tar.lzma
|
||||||
Source1: rcgpm
|
Source1: gpm-%{version}-patches.tar.lzma
|
||||||
Source2: sysconfig.mouse-%{name}
|
Source2: rcgpm
|
||||||
Source3: README.SuSE
|
Source3: sysconfig.mouse-%{name}
|
||||||
Source4: baselibs.conf
|
Source4: README.SuSE
|
||||||
Patch0: gpm-%{version}.patch
|
Source5: baselibs.conf
|
||||||
Patch1: gpm-%{version}-ps2_command_bytes.patch
|
Patch0: gpm-DESTDIR.patch
|
||||||
Patch2: gpm-%{version}-ps2_read.patch
|
Patch1: gpm-ps2_command_bytes.patch
|
||||||
Patch3: gpm-%{version}-ps2_reconnection.patch
|
Patch2: gpm-ps2_read.patch
|
||||||
Patch4: gpm-%{version}-syn_conf.patch
|
Patch3: gpm-ps2_reconnection.patch
|
||||||
Patch5: gpm-%{version}-silitek.patch
|
Patch4: gpm-syn_conf.patch
|
||||||
Patch6: gpm-%{version}-conf.patch
|
Patch5: gpm-silitek.patch
|
||||||
Patch7: gpm-%{version}-va_arg.patch
|
Patch6: gpm-conf.patch
|
||||||
Patch8: gpm-%{version}-quiet_libgpm.patch
|
Patch7: gpm-va_arg.patch
|
||||||
Patch9: gpm-%{version}-no_templates_for_new_multiple_mode.patch
|
Patch8: gpm-quiet_libgpm.patch
|
||||||
Patch10: gpm-%{version}-ceil.patch
|
Patch9: gpm-no_templates_for_new_multiple_mode.patch
|
||||||
Patch11: gpm-%{version}-Gpm_Open.patch
|
Patch10: gpm-ceil.patch
|
||||||
Patch12: gpm-%{version}-daemon_mode.patch
|
Patch11: gpm-Gpm_Open.patch
|
||||||
Patch13: gpm-%{version}-gunze-overflow.patch
|
Patch12: gpm-daemon_mode.patch
|
||||||
Patch14: gpm-%{version}-warnings.patch
|
Patch15: gpm-verbosity.patch
|
||||||
Patch15: gpm-%{version}-verbosity.patch
|
Patch17: gpm-log.patch
|
||||||
Patch16: gpm-%{version}-OPEN_MAX.patch
|
Patch18: gpm-glibc210.patch
|
||||||
Patch17: %{name}-%{version}-log.patch
|
Patch19: gpm-use_getdtablesize.patch
|
||||||
Patch18: %{name}-%{version}-glibc210.patch
|
Patch20: gpm-int_ptr_casts.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
PreReq: %install_info_prereq
|
PreReq: %install_info_prereq
|
||||||
|
|
||||||
@ -71,8 +71,17 @@ provides console cut and paste operations.
|
|||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
--------
|
--------
|
||||||
Alessandro Rubini <rubini@ipvvis.unipv.it>
|
Alessandro Rubini <rubini at ipvvis.unipv.it>
|
||||||
Nico Schottelius <nico@schottelius.net>
|
Nico Schottelius <nico at schottelius.org>
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
License: GPLv2+
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Summary: Development files for gpm (Console Mouse Support)
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
Development files for the gpm (general purpose mouse) package.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
@ -89,14 +98,13 @@ Authors:
|
|||||||
%patch10
|
%patch10
|
||||||
%patch11
|
%patch11
|
||||||
%patch12
|
%patch12
|
||||||
%patch13
|
|
||||||
%patch14
|
|
||||||
%patch15
|
%patch15
|
||||||
%patch16 -p1
|
|
||||||
%patch17
|
%patch17
|
||||||
%patch18 -p1
|
%patch18
|
||||||
#
|
%patch19
|
||||||
cp %{S:1} %{S:2} %{S:3} .
|
%patch20
|
||||||
|
|
||||||
|
cp %{S:2} %{S:3} %{S:4} .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# This package failed when testing with -Wl,-as-needed being default.
|
# This package failed when testing with -Wl,-as-needed being default.
|
||||||
@ -112,10 +120,12 @@ make CC="gcc -lm"
|
|||||||
make
|
make
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make DESTDIR=$RPM_BUILD_ROOT install
|
make ROOT="" DESTDIR=$RPM_BUILD_ROOT install
|
||||||
#
|
#
|
||||||
# gpm confings
|
# gpm confings
|
||||||
|
install -d $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
|
||||||
for file in conf/gpm-* ; do
|
for file in conf/gpm-* ; do
|
||||||
|
install -d $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
|
||||||
install -m 644 $file $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
|
install -m 644 $file $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
|
||||||
done
|
done
|
||||||
#
|
#
|
||||||
@ -131,19 +141,6 @@ install -m 755 -d $RPM_BUILD_ROOT/usr/sbin
|
|||||||
install -m 644 sysconfig.mouse-%{name} $RPM_BUILD_ROOT/var/adm/fillup-templates
|
install -m 644 sysconfig.mouse-%{name} $RPM_BUILD_ROOT/var/adm/fillup-templates
|
||||||
install -m 755 rcgpm $RPM_BUILD_ROOT/etc/init.d/gpm
|
install -m 755 rcgpm $RPM_BUILD_ROOT/etc/init.d/gpm
|
||||||
ln -sf ../../etc/init.d/gpm $RPM_BUILD_ROOT/usr/sbin/rcgpm
|
ln -sf ../../etc/init.d/gpm $RPM_BUILD_ROOT/usr/sbin/rcgpm
|
||||||
|
|
||||||
%preun
|
|
||||||
%stop_on_removal gpm
|
|
||||||
|
|
||||||
%post
|
|
||||||
/sbin/ldconfig
|
|
||||||
# rename variable in all possible locations for update
|
|
||||||
for i in etc/rc.config etc/sysconfig/mouse ; do
|
|
||||||
if test -f $i ; then
|
|
||||||
sed -e "s@^MOUSE=@MOUSEDEVICE=@" $i > $i.t && mv $i.t $i
|
|
||||||
rm -f $i.t
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# there were two variables with the same value GPM_PROTOCOL and MOUSETYPE
|
# there were two variables with the same value GPM_PROTOCOL and MOUSETYPE
|
||||||
# in SuLi 8.2. The MOUSETYPE variable better conforms with with other
|
# in SuLi 8.2. The MOUSETYPE variable better conforms with with other
|
||||||
# variable names MOUSEDEVICE and XMOUSETYPE name scheme, so get rid of
|
# variable names MOUSEDEVICE and XMOUSETYPE name scheme, so get rid of
|
||||||
@ -156,6 +153,15 @@ if grep "^GPM_PROTOCOL=" /etc/sysconfig/mouse 1>/dev/null 2>/dev/null ; then
|
|||||||
# rename GPM_PROTOCOL to MOUSETYPE
|
# rename GPM_PROTOCOL to MOUSETYPE
|
||||||
perl -pi -e "s|^GPM_PROTOCOL=(.*)$|\# the variable GPM_PROTOCOL was renamed to MOUSETYPE\nMOUSETYPE=\$1|" /etc/sysconfig/mouse
|
perl -pi -e "s|^GPM_PROTOCOL=(.*)$|\# the variable GPM_PROTOCOL was renamed to MOUSETYPE\nMOUSETYPE=\$1|" /etc/sysconfig/mouse
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Do not package static library
|
||||||
|
rm -f $RPM_BUILD_ROOT/%{_libdir}/libgpm.a
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%stop_on_removal gpm
|
||||||
|
|
||||||
|
%post
|
||||||
|
/sbin/ldconfig
|
||||||
%{fillup_and_insserv gpm}
|
%{fillup_and_insserv gpm}
|
||||||
%{fillup_only -an mouse}
|
%{fillup_only -an mouse}
|
||||||
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
|
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
|
||||||
@ -171,7 +177,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc BUGS COPYING Changes README README.SuSE TODO
|
%doc BUGS COPYING README README.SuSE TODO doc/changes
|
||||||
%doc doc/Announce doc/FAQ doc/README*
|
%doc doc/Announce doc/FAQ doc/README*
|
||||||
%{_infodir}/*
|
%{_infodir}/*
|
||||||
%{_mandir}/*/*
|
%{_mandir}/*/*
|
||||||
@ -180,8 +186,12 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%config /etc/init.d/gpm
|
%config /etc/init.d/gpm
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%{_sbindir}/*
|
%{_sbindir}/*
|
||||||
%{_includedir}/*.h
|
%{_libdir}/libgpm.so.*
|
||||||
%{_libdir}/lib*
|
|
||||||
/var/adm/fillup-templates/*
|
/var/adm/fillup-templates/*
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_includedir}/*.h
|
||||||
|
%{_libdir}/libgpm.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user