SOURCES: qemacs-Makefile.patch (NEW), qemacs-html2png-libpng.patch...
twittner
twittner at pld-linux.org
Tue Oct 30 00:34:01 CET 2007
Author: twittner Date: Mon Oct 29 23:34:01 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- initial, NFY (just I'm saving my work)
---- Files affected:
SOURCES:
qemacs-Makefile.patch (NONE -> 1.1) (NEW), qemacs-html2png-libpng.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/qemacs-Makefile.patch
diff -u /dev/null SOURCES/qemacs-Makefile.patch:1.1
--- /dev/null Tue Oct 30 00:34:01 2007
+++ SOURCES/qemacs-Makefile.patch Tue Oct 30 00:33:56 2007
@@ -0,0 +1,26 @@
+--- qemacs/Makefile~ 2007-10-30 00:19:44.533055370 +0100
++++ qemacs/Makefile 2007-10-30 00:26:41.300294975 +0100
+@@ -206,16 +206,16 @@
+ rm -f config.h config.mak
+
+ install: $(TARGETS) qe.1 kmaps ligatures
+- install -m 755 qe$(EXE) $(prefix)/bin/qemacs
+- ln -sf qemacs $(prefix)/bin/qe$(EXE)
++ install -D -m 755 qe$(EXE) $(DESTDIR)$(prefix)/bin/qemacs
++ ln -sf qemacs $(DESTDIR)$(prefix)/bin/qe$(EXE)
+ ifdef CONFIG_FFMPEG
+- ln -sf qemacs $(prefix)/bin/ffplay
++ ln -sf qemacs $(DESTDIR)$(prefix)/bin/ffplay
+ endif
+- mkdir -p $(prefix)/share/qe
+- install kmaps ligatures $(prefix)/share/qe
+- install qe.1 $(prefix)/man/man1
++ mkdir -p $(DESTDIR)$(prefix)/share/qe
++ install kmaps ligatures $(DESTDIR)$(prefix)/share/qe
++ install -D qe.1 $(DESTDIR)$(prefix)/man/man1/qe.1
+ ifdef CONFIG_HTML
+- install -m 755 -s html2png$(EXE) $(prefix)/bin
++ install -m 755 html2png$(EXE) $(DESTDIR)$(prefix)/bin
+ endif
+
+ TAGS: force
================================================================
Index: SOURCES/qemacs-html2png-libpng.patch
diff -u /dev/null SOURCES/qemacs-html2png-libpng.patch:1.1
--- /dev/null Tue Oct 30 00:34:01 2007
+++ SOURCES/qemacs-html2png-libpng.patch Tue Oct 30 00:33:56 2007
@@ -0,0 +1,152 @@
+--- qemacs/html2png.c~ 8 Jul 2005 09:30:44 -0000 1.4
++++ qemacs/html2png.c 24 Apr 2006 13:49:38 -0000 1.5
+@@ -202,81 +202,84 @@ extern void png_write_init();
+ int png_save(QEditScreen *s, const char *filename)
+ {
+ CFBContext *cfb = s->private;
+- png_struct * volatile png_ptr = NULL;
+- png_info * volatile info_ptr = NULL;
+- png_byte *row_ptr, *row_pointers[1], *row = NULL;
+- int w, h, x, y;
+- unsigned int r, g, b, v;
+- unsigned int *data;
+- FILE * volatile f = NULL;
++ struct png_save_data {
++ FILE *f;
++ png_structp png_ptr;
++ png_infop info_ptr;
++ png_byte *row_buf;
++ } d;
+
+- row = malloc(3 * s->width);
+- if (!row)
+- goto fail;
+- png_ptr = malloc(sizeof (png_struct));
+- if (!png_ptr)
++ d.f = fopen(filename, "wb");
++ if (!d.f)
++ return -1;
++
++ d.png_ptr = NULL;
++ d.row_buf = NULL;
++ d.info_ptr = NULL;
++
++ d.png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
++ NULL, NULL, NULL);
++ if (!d.png_ptr)
+ goto fail;
+- info_ptr = malloc(sizeof (png_info));
+- if (!info_ptr)
++
++ d.info_ptr = png_create_info_struct(d.png_ptr);
++ if (!d.info_ptr)
+ goto fail;
+-
+- f = fopen(filename, "w");
+- if (!f)
++
++ d.row_buf = malloc(3 * s->width);
++ if (!d.row_buf)
+ goto fail;
+
+- if (setjmp(png_ptr->jmpbuf)) {
+- png_write_destroy(png_ptr);
++ if (!setjmp(png_jmpbuf(d.png_ptr))) {
++ int w, h, x, y;
++ unsigned int r, g, b, v;
++ unsigned int *data;
++ png_byte *row_ptr, *row_pointers[1];
++
++ png_init_io(d.png_ptr, d.f);
++
++ data = (unsigned int *)cfb->base;
++ w = s->width;
++ h = s->height;
++
++ png_set_IHDR(d.png_ptr, d.info_ptr, w, h, 8, PNG_COLOR_TYPE_RGB,
++ PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
++ PNG_FILTER_TYPE_DEFAULT);
++ png_write_info(d.png_ptr, d.info_ptr);
++
++ row_pointers[0] = d.row_buf;
++
++ for (y = 0; y < h; y++) {
++ row_ptr = d.row_buf;
++ for (x = 0; x < w; x++) {
++ v = data[x];
++ r = (v >> 16) & 0xff;
++ g = (v >> 8) & 0xff;
++ b = (v) & 0xff;
++ row_ptr[0] = r;
++ row_ptr[1] = g;
++ row_ptr[2] = b;
++ row_ptr += 3;
++ }
++ png_write_rows(d.png_ptr, row_pointers, 1);
++ data = (void *)((char *)data + cfb->wrap);
++ }
++ png_write_end(d.png_ptr, d.info_ptr);
++ png_destroy_write_struct(&d.png_ptr, &d.info_ptr);
++ fclose(d.f);
++ return 0;
++ } else {
+ fail:
+ /* free pointers before returning. Make sure you clean up
+ anything else you've done. */
+- free(png_ptr);
+- free(info_ptr);
+- free(row);
+- if (f)
+- fclose(f);
+- return -1;
+- }
+-
+- png_info_init(info_ptr);
+- png_write_init(png_ptr);
+- png_init_io(png_ptr, f);
+-
+- data = (unsigned int *)cfb->base;
+- w = s->width;
+- h = s->height;
+-
+- info_ptr->width = w;
+- info_ptr->height = h;
+- info_ptr->bit_depth = 8;
+- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
+-
+- png_write_info(png_ptr, info_ptr);
+-
+- row_pointers[0] = row;
+-
+- for (y = 0; y < h; y++) {
+- row_ptr = row;
+- for (x = 0; x < w; x++) {
+- v = data[x];
+- r = (v >> 16) & 0xff;
+- g = (v >> 8) & 0xff;
+- b = (v) & 0xff;
+- row_ptr[0] = r;
+- row_ptr[1] = g;
+- row_ptr[2] = b;
+- row_ptr += 3;
++ if (d.png_ptr) {
++ png_destroy_write_struct(&d.png_ptr,
++ d.info_ptr ? &d.info_ptr : NULL);
+ }
+- png_write_rows(png_ptr, row_pointers, 1);
+- data = (void *)((char *)data + cfb->wrap);
++ free(d.row_buf);
++ fclose(d.f);
++ return -1;
+ }
+- png_write_end(png_ptr, info_ptr);
+- png_write_destroy(png_ptr);
+-
+- free(png_ptr);
+- free(info_ptr);
+- free(row);
+- fclose(f);
+- return 0;
+ }
+
+ #endif
================================================================
More information about the pld-cvs-commit
mailing list