* Convert source to 3.0 (quilt) format.
* Migrate from cdbs to debhelper.
* Merge from Ubuntu:
- libg15daemon_client/g15daemon_net.c: Fix a potential buffer overflow.
* debian/patches/07-reinit-on-any-error.diff: reinitialize on any error
returned by libusb to correctly recover after suspend/resume. (LP: #1357556)
* /etc/init.d/g15daemon: overhaul.
- Replace /dev/input/uinput with /dev/uinput. (Closes: bug#687663).
- Use "udevadm settle" instead of polling /dev/uinput.
- Use log_*_msg functions instead of echo.
- Add dependency on $remote_fs.
- Remove bashism. (Closes: bug#772244)
- Return 0 exit code if the daemon fails to start.
(LP: #617101, LP: #1103275)
- Don't stop or restart on udev events, because g15daemon now properly
handles replugging.
* Remove build dependency on libusb.
* Remove dependency on libg15daemon-client1 for g15daemon.
* Add dependency on udev for g15daemon.
* Change priority of packages to optional.
* Add native systemd service. (LP: #1441365)
* /etc/default/g15daemon: remove SWITCH_KEY option to keep systemd service
file simple.
* Add subsystem check to udev matching rules.
* Multiarchify the library packages. (Closes: bug#812952)
* Do not install *.la files.
* Change package description. (Closes: bug#802652)
40 lines
1.0 KiB
Diff
40 lines
1.0 KiB
Diff
--- a/g15daemon/utility_funcs.c
|
|
+++ b/g15daemon/utility_funcs.c
|
|
@@ -666,12 +666,24 @@
|
|
}
|
|
|
|
int uf_screendump_pbm(unsigned char *buffer,char *filename) {
|
|
+ int fd;
|
|
FILE *f;
|
|
int x,y;
|
|
#define WIDTH 40
|
|
g15canvas *canvas=g15daemon_xmalloc(sizeof(g15canvas));
|
|
memcpy(canvas->buffer,buffer,LCD_BUFSIZE);
|
|
- f = fopen(filename,"w+");
|
|
+ fd = open(filename, O_CREAT|O_EXCL|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
|
+ if(fd == -1) {
|
|
+ g15daemon_log(LOG_WARNING, "uf_screendump_pbm failed: open, %s.\n", strerror(errno));
|
|
+ return -1;
|
|
+ }
|
|
+ f = fdopen(fd,"w");
|
|
+ if(f==NULL) {
|
|
+ close(fd);
|
|
+ g15daemon_log(LOG_WARNING, "uf_screendump_pbm failed: fdopen, %s.\n", strerror(errno));
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
fprintf(f,"P1\n160 43\n");
|
|
fprintf(f,"# G15 screendump - %s\n\n",filename);
|
|
for(y=0;y<43;y++)
|
|
@@ -681,7 +693,9 @@
|
|
fprintf(f,"\n");
|
|
}
|
|
|
|
- fclose(f);
|
|
+ fclose(f);
|
|
+ fsync(fd);
|
|
+ close(fd);
|
|
free(canvas);
|
|
return 0;
|
|
}
|