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