diff --git a/.gitignore b/.gitignore index 87df93b..5f79b9d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ Makefile Makefile.include /aclocal.m4 /autom4te.cache +/config.cache /config.log /config.status /configure @@ -29,7 +30,7 @@ Makefile.include /src/gpm /src/gpm2/tmp /src/gpm2/out -/src/lib/libgpm.so.* +/src/lib/libgpm.so* /src/prog/disable-paste /src/prog/display-buttons /src/prog/display-coords diff --git a/Makefile.in b/Makefile.in index 5412334..0aa6a78 100644 --- a/Makefile.in +++ b/Makefile.in @@ -102,19 +102,24 @@ TAGS: $(SRCS) $(HDRS) src/prog/gpm-root.y do-TAGS ### RELEASE STUFF TARS =../gpm-$(release).tar.gz -TARS +=../gpm-$(release).tar.bz2 ../gpm-$(release).tar.lzma +TARS +=../gpm-$(release).tar.bz2 ../gpm-$(release).tar.xz M_HOST=arcana.linux.it M_DIR=gpm/ tars: $(TARS) + chmod a+r $< # configure headers, produce new configure script distconf: Makefile.in Makefile.include.in configure acinclude.m4 $(versionfiles) ../gpm-$(release).tar: $(srcdir) distclean distconf # no exclude possible of .git with pax it seems, so the following is not possible: - git archive --prefix "gpm-$(release)/" -o $@ HEAD + rm -rf "gpm-$(release)/" + git archive --prefix "gpm-$(release)/" HEAD | tar xf - + cd "gpm-$(release)/" && ./autogen.sh && rm -rf autom4te.cache + tar cf $@ "gpm-$(release)/" + rm -rf "gpm-$(release)/" ../gpm-$(release).tar.gz: ../gpm-$(release).tar gzip -9 -c $< > $@ @@ -122,11 +127,11 @@ distconf: Makefile.in Makefile.include.in configure acinclude.m4 $(versionfiles) ../gpm-$(release).tar.bz2: ../gpm-$(release).tar bzip2 -9 -c $< > $@ -../gpm-$(release).tar.lzma: ../gpm-$(release).tar - lzma -9 -c $< > $@ +../gpm-$(release).tar.xz: ../gpm-$(release).tar + xz -9 -c $< > $@ # 3. Put package together into .tar.gz and .tar.bz2 -dist: disttest distclean distconf $(TARS) +dist: disttest distclean distconf $(TARS) tars scp $(TARS) $(M_HOST):$(M_DIR) mv $(TARS) ~/niconetz/software/gpm/archives diff --git a/configure.ac.footer b/configure.ac.footer index 89a4cd9..1e5e4da 100644 --- a/configure.ac.footer +++ b/configure.ac.footer @@ -124,7 +124,7 @@ No|no|N|n) SHARED_LIBS=-lc ;; done TERMLIBS=$LIBS LIBS= - for i in ncurses curses; do + for i in ncurses curses ncursesw; do if test x$LIBS = x; then AC_CHECK_LIB($i, wgetch,,,$TERMLIBS) else :; fi diff --git a/doc/changelog b/doc/changelog index de64bcf..1581fd1 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,7 @@ +1.20.8: + * Remove lzma, use xz (Mike Frysinger) + * Install shared lib with +x perms (Mike Frysinger) + 1.20.7: 2012-10-26 * Fix inclusion of unwanted binary data * Even more cleanups (Mike Frysinger) @@ -5,7 +9,7 @@ * Don't build static libgpm by default (Sean McGovern) * autogen.sh is now required to create setup version in autoconf (Nico Schottelius) -1.20.5: 9th of February 2009 +1.20.6: 9th of February 2009 * Some cleanups (Mike Frysinger/Nico Schottelius) * Pull in fcntl.h rather than unistd.h for open() (Mike Frysinger) * Fix gcc warning "control reaches end of non-void function" (Mike Frysinger) diff --git a/doc/doc.gpm.in b/doc/doc.gpm.in index afd5a29..795b958 100644 --- a/doc/doc.gpm.in +++ b/doc/doc.gpm.in @@ -88,7 +88,7 @@ by the Free Software Foundation. @subtitle A general purpose mouse server for the Linux console @subtitle @value{update-month} -@author by Nico Schottelius +@author by Nico Schottelius @end titlepage @setchapternewpage off @@ -525,7 +525,7 @@ security risks when using them. Andrew Haylett (the original selection code) Ian Zimmerman (old maintainer) Alessandro Rubini (old maintainer (still helps a lot)) -Nico Schottelius (maintainer) +Nico Schottelius (maintainer) Many many contributors, to both selection and gpm. .fi diff --git a/src/Makefile.in b/src/Makefile.in index d3b1dcd..7e9e2ef 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -79,7 +79,7 @@ prog/%: prog/%.o # | $(SED) '\''s/\($*\)\.o\([ :]*\)/\1.o \1.lo\2/g'\'' > $(DEPDIR)/$@' # Do it all! -all: gpm lib/libgpm.so.@abi_lev@ @LIBGPM_A@ $(PROG) +all: gpm lib/libgpm.so.@abi_lev@ lib/libgpm.so @LIBGPM_A@ $(PROG) gpm: $(GOBJ) $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm @@ -113,7 +113,7 @@ install: check # 2.x goes along; unfortunately that means an additional # headache in cases like this if test "x@SHLIB@" != "x" ; then \ - $(INSTALL_DATA) -m 644 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \ + $(INSTALL_DATA) -m 755 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \ cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ echo "WARNING: We installed a lib, you should now call ldconfig" ; \ echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \ @@ -168,9 +168,8 @@ lib/libgpm.so.@abi_full@: $(PICS) @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS) 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? -#lib/libgpm.so: lib/libgpm.so.@abi_full@ -# $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so +lib/libgpm.so: lib/libgpm.so.@abi_full@ + $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so include $(DEPFILE) diff --git a/src/daemon/gpm.c b/src/daemon/gpm.c index 771da5c..6806dce 100644 --- a/src/daemon/gpm.c +++ b/src/daemon/gpm.c @@ -29,7 +29,7 @@ #include /* SIGPIPE */ #include /* time() */ #include -#include /* O_RDONLY */ +#include /* O_RDONLY */ #include /* wait() */ #include /* mkdir() */ #include /* timeval */ diff --git a/src/daemon/old_main.c b/src/daemon/old_main.c index 9cd4e56..ab7a87f 100644 --- a/src/daemon/old_main.c +++ b/src/daemon/old_main.c @@ -25,6 +25,7 @@ #include /* guess again */ #include /* guess again */ #include /* unlink */ +#include /* strcpy, bzero */ #include /* chmod */ #include /* linux hd* */ @@ -192,10 +193,11 @@ int old_main() * or to the default handler, if any * or to the selection handler */ /* FIXME -- check event.vc */ - /* can't we please rewrite the following a bit nicer?*/ - (cinfo[event.vc] && do_client(cinfo[event.vc], &event)) - || (cinfo[0] && do_client(cinfo[0], &event)) - || do_selection(&event); + if(!cinfo[event.vc] || !do_client(cinfo[event.vc], &event)) { + if(!cinfo[0] || !do_client(cinfo[0],&event)) { + do_selection(&event); + } + } } } diff --git a/src/daemon/open_console.c b/src/daemon/open_console.c index 98297c9..6dd43e6 100644 --- a/src/daemon/open_console.c +++ b/src/daemon/open_console.c @@ -21,8 +21,13 @@ #include /* open and co. */ #include /* stat() */ +#include /* major() */ #include /* ioctl */ +#ifdef HAVE_SYS_SYSMACROS_H +#include /* major() w/newer glibc */ +#endif + /* Linux specific (to be outsourced in gpm2 */ #include /* for serial console check */ #include /* for serial console check */ diff --git a/src/daemon/processconn.c b/src/daemon/processconn.c index a5839a3..e92fa63 100644 --- a/src/daemon/processconn.c +++ b/src/daemon/processconn.c @@ -67,7 +67,8 @@ int processConn(int fd) return -1; } - if((vc = request->vc) > MAX_VC) { + vc = request->vc; + if(vc > MAX_VC || vc < 0) { gpm_report(GPM_PR_DEBUG, GPM_MESS_REQUEST_ON, vc, MAX_VC); free(info); close(newfd); diff --git a/src/headers/gpm.h b/src/headers/gpm.h index 57dc618..fe52e53 100644 --- a/src/headers/gpm.h +++ b/src/headers/gpm.h @@ -280,10 +280,16 @@ int Gpm_GetSnapshot(Gpm_Event *ePtr); char *Gpm_get_console( void ); int Gpm_x_high_y(int base, int pot_y); int Gpm_cnt_digits(int number); -void gpm_oops(int line, char *file, char *text, ... ); +#ifdef __GNUC__ +__attribute__((__format__(printf, 3, 4))) +#endif +void gpm_oops(int line, const char *file, const char *text, ... ); /* report.c / report-lib.c */ -void gpm_report(int line, char *file, int stat, char *text, ... ); +#ifdef __GNUC__ +__attribute__((__format__(printf, 4, 5))) +#endif +void gpm_report(int line, const char *file, int stat, const char *text, ... ); #ifdef __cplusplus }; diff --git a/src/headers/message.h b/src/headers/message.h index a0fed0e..4b60291 100644 --- a/src/headers/message.h +++ b/src/headers/message.h @@ -226,7 +226,10 @@ /* #define GPM_MESS_ "" */ /* functions */ -void gpm_report(int line, char *file, int stat, char *text, ... ); +#ifdef __GNUC__ +__attribute__((__format__(printf, 4, 5))) +#endif +void gpm_report(int line, const char *file, int stat, const char *text, ... ); /* rest of wd.h */ #ifdef HAVE_SYSLOG_H diff --git a/src/lib/liblow.c b/src/lib/liblow.c index e789d09..8b40b71 100644 --- a/src/lib/liblow.c +++ b/src/lib/liblow.c @@ -29,11 +29,12 @@ #include /* strncmp */ #include /* select(); */ #include +#include /* O_RDONLY */ + #include /* timeval */ #include /* socket() */ #include /* socket() */ #include /* struct sockaddr_un */ -#include /* O_RDONLY */ #include /* stat() */ #ifdef SIGTSTP /* true if BSD system */ @@ -173,7 +174,7 @@ static void gpm_suspend_hook (int signum) /* Reincarnation. Prepare for another death early. */ sigemptyset(&sa.sa_mask); sa.sa_handler = gpm_suspend_hook; - sa.sa_flags = SA_NOMASK; + sa.sa_flags = SA_NODEFER; sigaction (SIGTSTP, &sa, 0); /* Pop the gpm stack by closing the useless connection */ @@ -364,7 +365,7 @@ int Gpm_Open(Gpm_Connect *conn, int flag) /* if signal was originally ignored, job control is not supported */ if (gpm_saved_suspend_hook.sa_handler != SIG_IGN) { - sa.sa_flags = SA_NOMASK; + sa.sa_flags = SA_NODEFER; sa.sa_handler = gpm_suspend_hook; sigaction(SIGTSTP, &sa, 0); } diff --git a/src/lib/report-lib.c b/src/lib/report-lib.c index c0ae086..03230b4 100644 --- a/src/lib/report-lib.c +++ b/src/lib/report-lib.c @@ -24,9 +24,9 @@ #include "headers/message.h" -void gpm_report(int line, char *file, int stat, char *text, ... ) +void gpm_report(int line, const char *file, int stat, const char *text, ... ) { - char *string = NULL; + const char *string = NULL; int log_level; va_list ap; @@ -47,7 +47,7 @@ void gpm_report(int line, char *file, int stat, char *text, ... ) log_level = LOG_CRIT; break; } #ifdef HAVE_VSYSLOG - syslog(log_level, string); + syslog(log_level, "%s", string); vsyslog(log_level, text, ap); #else fprintf(stderr,"%s[%s(%d)]:\n",string,file,line); diff --git a/src/prog/display-buttons.c b/src/prog/display-buttons.c index de8e5b2..38d2f11 100644 --- a/src/prog/display-buttons.c +++ b/src/prog/display-buttons.c @@ -36,6 +36,7 @@ #include /* printf() */ #include /* time() */ #include /* errno */ +#include /* fd_set and FD_* */ #include /* gpm information */ /* display resulting data */ diff --git a/src/prog/display-coords.c b/src/prog/display-coords.c index ed15c8a..82afd12 100644 --- a/src/prog/display-coords.c +++ b/src/prog/display-coords.c @@ -33,10 +33,12 @@ */ #include /* write, read, open */ +#include #include /* strtol() */ #include /* printf() */ #include /* time() */ #include /* errno */ +#include /* fd_set and FD_* */ #include /* gpm information */ /* display resulting data */ @@ -50,7 +52,7 @@ int display_data(Gpm_Event *event, void *data) last = now; /* display time, delta time */ - printf("[%d] delta: %ds",now,delta); + printf("[%jd] delta: %ds",(intmax_t)now,delta); /* display mouse information */ printf(": x=%2i, y=%2i, dx=%2i, dy=%2i\n", event->x, event->y, event->dx, event->dy); diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y index 069d801..76c896c 100644 --- a/src/prog/gpm-root.y +++ b/src/prog/gpm-root.y @@ -443,6 +443,7 @@ void f__fix(struct passwd *pass) } /*---------------------------------------------------------------------*/ +#if 0 static int f_debug_one(FILE *f, Draw *draw) { DrawItem *ip; @@ -465,6 +466,7 @@ static int f_debug_one(FILE *f, Draw *draw) #undef LINE return 0; } +#endif int f_debug(int mode, DrawItem *self, int uid) { @@ -960,10 +962,8 @@ static inline void scr_dump(int fd, FILE *f, unsigned char *buffer, int vc) /*------------*/ static inline void scr_restore(int fd, FILE *f, unsigned char *buffer, int vc) { - int x,y, dumpfd; + int dumpfd; char dumpname[20]; - - x=buffer[2]; y=buffer[3]; /* WILL NOT WORK WITH DEVFS! FIXME! */ sprintf(dumpname,"/dev/vcsa%i",vc); @@ -1196,12 +1196,8 @@ int main(int argc, char **argv) LOG_DAEMON : LOG_USER); /* reap your zombies */ childaction.sa_handler=reap_children; -#if defined(__GLIBC__) - __sigemptyset(&childaction.sa_mask); -#else /* __GLIBC__ */ - childaction.sa_mask=0; -#endif /* __GLIBC__ */ - childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ + sigemptyset(&childaction.sa_mask); + childaction.sa_flags=0; sigaction(SIGCHLD,&childaction,NULL); /*....................................... Connect and get your buffer */ diff --git a/src/prog/mouse-test.c b/src/prog/mouse-test.c index 0bb1982..d7d1027 100644 --- a/src/prog/mouse-test.c +++ b/src/prog/mouse-test.c @@ -182,14 +182,14 @@ Gpm_Type *(*I_serial)(int fd, unsigned short flags, struct Gpm_Type *type, /*----------------------------------------------------------------------------- Place the description here. -----------------------------------------------------------------------------*/ -int mousereopen(int oldfd, char *name, Gpm_Type *type) +int mousereopen(int oldfd, const char *name, Gpm_Type *type) { int fd; if (!type) type=mice+1; /* ms */ close(oldfd); usleep(100000); fd=open(name,O_RDWR); - if (fd < 0) gpm_report(GPM_PR_OOPS,name); + if (fd < 0) gpm_report(GPM_PR_OOPS, "%s", name); (*I_serial)(fd,type->flags,type,1,&type->name); /* ms initialization */ return fd; } diff --git a/src/report.c b/src/report.c index 6c7c2ee..286c1b7 100644 --- a/src/report.c +++ b/src/report.c @@ -69,7 +69,7 @@ * */ -void gpm_report(int line, char *file, int stat, char *text, ... ) +void gpm_report(int line, const char *file, int stat, const char *text, ...) { FILE *console = NULL; va_list ap, ap3; diff --git a/src/synaptics.c b/src/synaptics.c index 2418c75..a978ef0 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -214,6 +214,7 @@ #include #include #include +#include #include #include @@ -2241,8 +2242,7 @@ static void syn_process_config (info_type ident, -static unsigned char tp_hextoint (unsigned char byte1, - unsigned char byte2) +static unsigned char tp_hextoint (unsigned byte1,unsigned byte2) { unsigned char bytes [3]; int result; @@ -2250,7 +2250,7 @@ static unsigned char tp_hextoint (unsigned char byte1, bytes [0] = byte1; bytes [1] = byte2; bytes [2] = '\0'; - sscanf (bytes, "%x", &result); + sscanf ((char *)bytes, "%x", &result); return result; } @@ -2311,8 +2311,7 @@ static void tp_serial_read (int fd, } /* Write a string of commands */ -static void tp_serial_send_cmd(int fd, - unsigned char *cmd) +static void tp_serial_send_cmd(int fd, const char *cmd) { unsigned char junk [15]; @@ -2329,7 +2328,7 @@ static void tp_serial_send_cmd(int fd, static void syn_serial_set_mode (int fd, unsigned char mode) { - unsigned char bytes [15]; + char bytes [15]; sprintf (bytes, "%%C3B%02X5555", mode); #if DEBUG_SENT_DATA diff --git a/src/twiddler.c b/src/twiddler.c index 1d2bd50..972a616 100644 --- a/src/twiddler.c +++ b/src/twiddler.c @@ -250,7 +250,6 @@ static inline int twiddler_use_item(char *item) int twiddler_key(unsigned long message) { char **table = twiddler_get_table(message); - char *val; /* * These two are needed to avoid transmitting single keys when typing * chords. When the number of keys being held down decreases, data @@ -269,7 +268,6 @@ int twiddler_key(unsigned long message) if (!table) return 0; message &= 0xff; - val = table[message]; if ((message < last_message) && !marked) { /* ok, do it */ marked++; /* don't retransmit on release */ @@ -428,8 +426,11 @@ char *twiddler_rest_to_value(char *s) buf[ibuf]='\0'; return strdup(buf); } - if (*ptr == '\\') - return (char *)twiddler_escape_sequence(ptr+1, &len /* unused */); + if (*ptr == '\\') { + buf[ibuf++] = twiddler_escape_sequence(ptr+1, &len /* unused */); + buf[ibuf] = '\0'; + return strdup(buf); + } if (strlen(ptr)==1) return ((char *)((unsigned long)*ptr & 0xFF));