summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/qiv/648ed5a.diff446
-rw-r--r--graphics/qiv/README28
-rw-r--r--graphics/qiv/new_formats.diff62
-rw-r--r--graphics/qiv/qiv-allfmt.sqf7
-rw-r--r--graphics/qiv/qiv.SlackBuild55
-rw-r--r--graphics/qiv/qiv.info6
6 files changed, 138 insertions, 466 deletions
diff --git a/graphics/qiv/648ed5a.diff b/graphics/qiv/648ed5a.diff
deleted file mode 100644
index 178a3b854a..0000000000
--- a/graphics/qiv/648ed5a.diff
+++ /dev/null
@@ -1,446 +0,0 @@
-diff -Naur qiv-2.3.1/Changelog qiv-648ed5a/Changelog
---- qiv-2.3.1/Changelog 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/Changelog 2016-07-14 23:26:53.000000000 -0400
-@@ -21,7 +21,7 @@
- al: Adrian Lopez <adrian2@caribe.net>
- yf: Y Furuhashi <y_furuhashi@ot.olympus.co.jp>
- wd: Wayne Davison <wayne@opencoder.net>
-- js: Johannes Stezenbach <js@convergence.de>
-+ js: Johannes Stezenbach <js@sig21.net>
- ok: OEyvind Kolaas <pippin@users.sourceforge.net>
- mc: Matthieu Castet <castet.matthieu@free.fr>
- jd: Geoffrey T. Dairik <dairiki@dairiki.org>
-@@ -34,6 +34,27 @@
- pw: Peter deWachter <pdewacht@gmail.com>
- ap: Akos Pasztory <akos.pasztory@gmail.com>
-
-+2.3.2pre
-+========
-+ 30.05.2016 [tw] Fix occasionally erratic behaviour of qiv statusbar
-+ [tw] Fix xpm autodetection with libmagic
-+ 26.05.2016 [tw] Fix small artefacts in pictures which might
-+ happen when running remote over slow link
-+ (patch by Derek Schrock)
-+ 20.05.2016 [tw] update image after it is exposed in window mode
-+ 12.05.2016 [js/tw] fix broken "-no-filter" option
-+ libmagic filter now works on symlinks
-+ 07.11.2015 [tw] fix linking order in "make debug", did not
-+ work in some newer gcc versions
-+ 18.06.2015 [as] turn on EXIF autorotation by default
-+ 13.09.2014 [tw] Add option to sort files by modification time.
-+ (patch by Stefan RĂ¼ger)
-+ 23.04.2014 [tw] In case of "watch" option, check image only every 1/10 sec,
-+ instead of every 200us. This was way too short for
-+ devices like RasPi etc. (Hamish)
-+ [tw] Leave jumping mode on invalid input and process input key
-+ as if it was entered in non jumping mode (Sergey Pinaev)
-+
- 2.3.1
- =====
- 25.11.2013 [tw] Add libXext to libraries for linking in Makefile.
-diff -Naur qiv-2.3.1/Makefile qiv-648ed5a/Makefile
---- qiv-2.3.1/Makefile 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/Makefile 2016-07-14 23:26:53.000000000 -0400
-@@ -122,7 +122,7 @@
- debug: $(PROGRAM_G)
-
- $(PROGRAM_G): $(OBJS_G)
-- $(CC) -g $(CFLAGS) $(DEFINES_G) $(LIBS) $(OBJS_G) -o $(PROGRAM_G)
-+ $(CC) -g $(CFLAGS) $(DEFINES_G) $(OBJS_G) $(LIBS) -o $(PROGRAM_G)
-
- $(OBJS_G): %.g: %.c $(HEADERS)
- $(CC) -c -g $(CFLAGS) $(DEFINES_G) $(INCLUDES) $< -o $@
-diff -Naur qiv-2.3.1/event.c qiv-648ed5a/event.c
---- qiv-2.3.1/event.c 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/event.c 2016-07-14 23:26:53.000000000 -0400
-@@ -193,10 +193,15 @@
- q->exposed = 1;
- qiv_set_cursor_timeout(q);
- }
-- if(fullscreen) {
-- if(center) center_image(q);
-+ if(center) center_image(q);
-+ if(fullscreen)
-+ {
- update_image(q, FULL_REDRAW);
- }
-+ else
-+ {
-+ update_image(q, MIN_REDRAW);
-+ }
- break;
-
- case GDK_LEAVE_NOTIFY:
-@@ -223,26 +228,6 @@
- // printf("GDK_CONFIGURE get_root_origin %d %d\n",
- // magnify_img.frame_x, magnify_img.frame_y);
- }
-- // gdk_draw_rectangle(q->win, q->status_gc, 1, 10, 10, 50, 50);
-- if (statusbar_window && !fullscreen) {
--#ifdef DEBUG
-- g_print("*** print statusbar at (%d, %d)\n", MAX(2,q->win_w-q->text_w-10), MAX(2,q->win_h-q->text_h-10));
--#endif
-- // printf(">>> statusbar_w %d %d %d %d\n",
-- // MAX(2,q->win_w-text_w-10), MAX(2,q->win_h-text_h-10), text_w+5, text_h+5);
--
-- gdk_draw_rectangle(q->win, q->bg_gc, 0,
-- MAX(2,q->win_w-q->text_w-10), MAX(2,q->win_h-q->text_h-10),
-- q->text_w+5, q->text_h+5);
-- gdk_draw_rectangle(q->win, q->status_gc, 1,
-- MAX(3,q->win_w-q->text_w-9), MAX(3,q->win_h-q->text_h-9),
-- q->text_w+4, q->text_h+4);
--
-- pango_layout_set_text(layout, q->win_title, -1);
-- pango_layout_get_pixel_size (layout, &(q->text_w), &(q->text_h));
-- gdk_draw_layout (q->win, q->text_gc, MAX(5,q->win_w-q->text_w-7), MAX(5,q->win_h-7-q->text_h), layout);
-- }
--
- break;
-
- case GDK_BUTTON_PRESS:
-@@ -418,9 +403,9 @@
- jcmd[jidx] = '\0';
- if (jumping) {
- jump2image(jcmd);
-- qiv_load_image(q);
-- jumping=0;
-- }
-+ qiv_load_image(q);
-+ jumping=0;
-+ }
- else { // extcommand=1
- int numlines = 0;
- const char **lines;
-@@ -436,6 +421,23 @@
- }
- /* else record keystroke if not null */
- else if(ev->key.string && *(ev->key.string) != '\0') {
-+ if (jumping) {
-+ /* leave jumping mode on invalid input and process
-+ * input key as if it entered in non jumping mode */
-+ if((jidx == 0 &&
-+ (*(ev->key.string) != 'f' &&
-+ *(ev->key.string) != 'F' &&
-+ *(ev->key.string) != 'b' &&
-+ *(ev->key.string) != 'B' &&
-+ *(ev->key.string) != 't' &&
-+ *(ev->key.string) != 'T')) ||
-+ (jidx > 0 &&
-+ (*(ev->key.string) < '0' || *(ev->key.string) > '9'))) {
-+ jumping = 0;
-+ qiv_handle_event(ev, data);
-+ return;
-+ }
-+ }
- jcmd[jidx++]=*(ev->key.string);
- jcmd[jidx] = '\0';
- if (extcommand)
-@@ -915,7 +917,8 @@
- "(File watching: on)" : "(File watching: off)");
- update_image(q, REDRAW);
- if(watch_file){
-- g_idle_add (qiv_watch_file, q);
-+ // check every 100ms
-+ g_timeout_add_full(G_PRIORITY_DEFAULT_IDLE, 100, qiv_watch_file, q, NULL);
- }
- break;
-
-diff -Naur qiv-2.3.1/image.c qiv-648ed5a/image.c
---- qiv-2.3.1/image.c 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/image.c 2016-07-14 23:26:53.000000000 -0400
-@@ -262,7 +262,6 @@
-
- if (first) {
- setup_win(q);
-- first = 0;
- }
-
- check_size(q, TRUE);
-@@ -366,7 +365,7 @@
- gdk_window_resize(q->win, q->win_w, q->win_h);
- }
- if (!(to_root || to_root_t || to_root_s))
-- gdk_window_show(q->win);
-+ gdk_window_lower(q->win);
-
- } else { /* fullscreen */
-
-@@ -771,6 +770,12 @@
- };
- gdk_window_set_geometry_hints(q->win, &geometry,
- GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE | GDK_HINT_WIN_GRAVITY);
-+
-+ if(first) {
-+ gdk_window_show(q->win);
-+ first = 0;
-+ }
-+
- gdk_window_move_resize(q->win, q->win_x, q->win_y, q->win_w, q->win_h);
-
- if (!q->error) {
-@@ -791,6 +796,24 @@
- }
- }
- gdk_window_clear(q->win);
-+
-+ if(statusbar_window)
-+ {
-+#ifdef DEBUG
-+ g_print("*** print statusbar at (%d, %d)\n", MAX(2,q->win_w-q->text_w-10), MAX(2,q->win_h-q->text_h-10));
-+#endif
-+ gdk_draw_rectangle(q->win, q->bg_gc, 0,
-+ MAX(2,q->win_w-q->text_w-10), MAX(2,q->win_h-q->text_h-10),
-+ q->text_w+5, q->text_h+5);
-+ gdk_draw_rectangle(q->win, q->status_gc, 1,
-+ MAX(3,q->win_w-q->text_w-9), MAX(3,q->win_h-q->text_h-9),
-+ q->text_w+4, q->text_h+4);
-+
-+ pango_layout_set_text(layout, q->win_title, -1);
-+ pango_layout_get_pixel_size (layout, &(q->text_w), &(q->text_h));
-+ gdk_draw_layout (q->win, q->text_gc, MAX(5,q->win_w-q->text_w-7), MAX(5,q->win_h-7-q->text_h), layout);
-+ }
-+
- } // if (!fullscreen)
- else
- {
-@@ -859,6 +882,12 @@
- q->text_ow = q->text_w;
- q->text_oh = q->text_h;
- q->statusbar_was_on = statusbar_fullscreen;
-+
-+ if(first) {
-+ gdk_window_show(q->win);
-+ first = 0;
-+ }
-+
- gdk_window_move_resize(q->win, monitor[q->mon_id].x, monitor[q->mon_id].y,
- monitor[q->mon_id].width, monitor[q->mon_id].height);
- }
-diff -Naur qiv-2.3.1/main.c qiv-648ed5a/main.c
---- qiv-2.3.1/main.c 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/main.c 2016-07-14 23:26:53.000000000 -0400
-@@ -192,7 +192,7 @@
- qiv_load_image(&main_img);
-
- if(watch_file){
-- g_idle_add (qiv_watch_file, &main_img);
-+ g_timeout_add_full(G_PRIORITY_DEFAULT_IDLE, 100, qiv_watch_file, &main_img, NULL);
- }
-
- g_main_run(qiv_main_loop); /* will never return */
-@@ -272,7 +272,7 @@
- #ifdef HAVE_MAGIC
- magic_t cookie;
-
-- cookie = magic_open(MAGIC_NONE);
-+ cookie = magic_open(MAGIC_SYMLINK);
- magic_load(cookie,NULL);
- #endif
-
-diff -Naur qiv-2.3.1/main.h qiv-648ed5a/main.h
---- qiv-2.3.1/main.h 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/main.h 2016-07-14 23:26:53.000000000 -0400
-@@ -65,7 +65,7 @@
- int magnify = 0; /* [lc] */
- int user_screen = 0; /* preferred (by user) monitor */
- int browse = 0; /* scan directory of file for browsing */
--int autorotate = 0; /* autorotate JPEGs according to EXIF tag */
-+int autorotate = 1; /* autorotate JPEGs according to EXIF tag */
- int rotation = 0; /* rotation x degrees clockwise, 1=90degrees 2=180degrees 3=270degrees */
- int vikeys = 0; /* option to give us some vi-like keys (for movement) */
-
-diff -Naur qiv-2.3.1/options.c qiv-648ed5a/options.c
---- qiv-2.3.1/options.c 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/options.c 2016-07-14 23:26:53.000000000 -0400
-@@ -25,7 +25,7 @@
-
- #define LONGOPT_VIKEYS 128
-
--static char *short_options = "ab:c:Cd:efg:hilLmno:pq:rstuvw:xyzA:BDF:GIMNPRSTW:X:Y:Z:";
-+static char *short_options = "ab:c:Cd:efg:hilLmno:pq:rstuvw:xyzA:BDF:GIKMNPRSTW:X:Y:Z:";
- static struct option long_options[] =
- {
- {"do_grab", 0, NULL, 'a'},
-@@ -62,6 +62,7 @@
- {"file", 1, NULL, 'F'},
- {"disable_grab", 0, NULL, 'G'},
- {"statusbar", 0, NULL, 'I'},
-+ {"mtime_sort", 0, NULL, 'K'},
- {"merged_case_sort", 0, NULL, 'M'},
- {"numeric_sort", 0, NULL, 'N'},
- {"ignore_path_sort", 0, NULL, 'P'},
-@@ -78,7 +79,7 @@
- {0, 0, NULL, 0}
- };
-
--static int numeric_sort = 0, merged_case_sort = 0, ignore_path_sort = 0;
-+static int mtime_sort = 0, numeric_sort = 0, merged_case_sort = 0, ignore_path_sort = 0;
-
- /* This array makes it easy to sort filenames into merged-case order
- * (e.g. AaBbCcDdEeFf...). */
-@@ -117,6 +118,17 @@
- 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
- };
-
-+
-+static time_t get_mtime(unsigned char *fn) {
-+ struct stat attrib;
-+
-+ if(stat((char *) fn, &attrib) == 0)
-+ return attrib.st_mtime;
-+
-+ return 0;
-+}
-+
-+
- static int my_strcmp(const void *v1, const void *v2)
- {
- unsigned char *cp1 = *(unsigned char **)v1;
-@@ -129,6 +141,15 @@
- sufptr2 = cp2 + strlen((char *)cp2);
- while (--sufptr2 > cp2 && *sufptr2 != '.') {}
-
-+ if(mtime_sort) {
-+ time_t diff = get_mtime(cp1) - get_mtime(cp2);
-+ if(diff < 0)
-+ return -1;
-+ if(diff > 0)
-+ return 1;
-+ // fall through in case of same time stamp
-+ }
-+
- if (ignore_path_sort) {
- unsigned char *slash;
- if ((slash = (unsigned char *)strrchr((char *)cp1, '/')) != NULL)
-@@ -244,7 +265,7 @@
- case 'i': force_statusbar=0;
- break;
- #if GDK_PIXBUF_MINOR >= 12
-- case 'l': autorotate=1;
-+ case 'l': autorotate=0; /* turn autorotation OFF, default is ON */
- break;
- #endif
- case 'm': maxpect=1;
-@@ -297,6 +318,8 @@
- break;
- case 'I': force_statusbar=1;
- break;
-+ case 'K': mtime_sort = 1;
-+ break;
- case 'M': merged_case_sort = 1;
- break;
- case 'N': numeric_sort = 1;
-@@ -305,7 +328,7 @@
- break;
- case 'R': readonly=1;
- break;
-- case 'S': shuffle=1;need_sort=0;
-+ case 'S': shuffle=1; need_sort=0;
- break;
- case 'T': watch_file=1;
- break;
-@@ -330,8 +353,8 @@
- }
- }
-
-- /* In case user specified -D and -P, -M, or -N */
-- need_sort = need_sort | ignore_path_sort | merged_case_sort | numeric_sort;
-+ /* In case user specified -D and -K, -P, -M, or -N */
-+ need_sort = need_sort | mtime_sort | ignore_path_sort | merged_case_sort | numeric_sort;
-
- /* default: show statusbar only in fullscreen mode */
- /* user wants to override? */
-@@ -382,14 +405,16 @@
- strcpy(tmp,image_names[0]);
- }
- rreaddir(dirname(image_names[0]),0);
-- filter_images(&images,image_names);
-+ if(filter)
-+ filter_images(&images,image_names);
- if(need_sort)
- qsort(image_names, images, sizeof *image_names, my_strcmp);
- image_idx = find_image(images,image_names,tmp);
- free(tmp);
- }
- else {
-- filter_images(&images,image_names);
-+ if(filter)
-+ filter_images(&images,image_names);
- if(need_sort)
- qsort(image_names, images, sizeof *image_names, my_strcmp);
- }
-diff -Naur qiv-2.3.1/qiv.1 qiv-648ed5a/qiv.1
---- qiv-2.3.1/qiv.1 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/qiv.1 2016-07-14 23:26:53.000000000 -0400
-@@ -144,6 +144,9 @@
- .B \-M, \-\-merged_case_sort
- Sort all the image files in merged-case order (AaBbCc...).
- .TP
-+.B \-K, \-\-mtime_sort
-+Sort files by their modification time
-+.TP
- .B \-N, \-\-numeric_sort
- A "smart" numeric sort that attempts to sort filenames with numbers in
- a logical manner. For instance: 2.jpg sorts before 10.jpg; 1foo.jpg
-@@ -168,7 +171,7 @@
- a tall image is too tall to fit on the screen, it will be rotated.
- .TP
- .B \-l, \-\-autorotate
--Autorotate JPEGs according to EXIF rotation tag.
-+Do NOT autorotate JPEGs according to EXIF rotation tag. Default is ON.
- .TP
- .B \-X, \-\-xineramascreen \fIx\fB
- Use monitor \fIx\fR as preferred screen
-@@ -180,8 +183,8 @@
- Use color profile file x as display profile for all images
- .TP
- .B \-B, \-\-browse
--This option is useful when configuring qiv to be used with a file manager. qiv
--will scan the directory of the clicked image and allow you to scroll
-+This option is useful when configuring qiv to be used with a file manager.
-+qiv will scan the directory of the clicked image and allow you to scroll
- through those images.
- .TP
- .B \-\-vikeys
-diff -Naur qiv-2.3.1/qiv.h qiv-648ed5a/qiv.h
---- qiv-2.3.1/qiv.h 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/qiv.h 2016-07-14 23:26:53.000000000 -0400
-@@ -25,8 +25,8 @@
- #include <X11/extensions/xf86vmode.h> // for XF86VidModeGetModeLine
- */
-
--#define VERSION "2.3.1"
--#define VERSION_FULL "QIV - Quick Image Viewer v2.3.1 - http://qiv.spiegl.de/"
-+#define VERSION "2.3.2pre"
-+#define VERSION_FULL "QIV - Quick Image Viewer v2.3.2pre - http://qiv.spiegl.de/"
- #define TRASH_DIR ".qiv-trash"
- #define SELECT_DIR ".qiv-select"
- #define SLIDE_DELAY 3000 /* milliseconds */
-diff -Naur qiv-2.3.1/utils.c qiv-648ed5a/utils.c
---- qiv-2.3.1/utils.c 2013-12-19 19:50:37.000000000 -0500
-+++ qiv-648ed5a/utils.c 2016-07-14 23:26:53.000000000 -0400
-@@ -492,6 +492,7 @@
- " --readonly, -R Disable the deletion feature\n"
- " --maxpect, -m Zoom to screen size and preserve aspect ratio\n"
- " --merged_case_sort, -M Sort filenames with AaBbCc... alpha order\n"
-+ " --mtime_sort, -K Sort files by their modification time\n"
- " --no_filter, -n Do not filter images by extension\n"
- " --no_statusbar, -i Disable statusbar\n"
- " --statusbar, -I Enable statusbar\n"
-@@ -507,7 +508,7 @@
- " --followlinks, -L Follow symlinks to directories (requires --recursivedir)\n"
- " --select_dir, -A x Store the selected files in dir x (default is .qiv-select)\n"
- #if GDK_PIXBUF_MINOR >= 12
-- " --autorotate, -l Autorotate JPEGs according to EXIF rotation tag\n"
-+ " --autorotate, -l Do NOT autorotate JPEGs according to EXIF rotation tag\n"
- #endif
- " --rotate, -q x Rotate 90(x=1),180(x=2),270(x=3) degrees clockwise (11 & 13 for conditional)\n"
- " --xineramascreen, -X x Use monitor x as preferred screen\n"
-@@ -722,7 +723,6 @@
- update_image(q, REDRAW);
- }
- }
-- usleep(200); /* avoid eating 100% cpu */
-
- return TRUE;
- }
diff --git a/graphics/qiv/README b/graphics/qiv/README
index a5116afc6c..d1151c3910 100644
--- a/graphics/qiv/README
+++ b/graphics/qiv/README
@@ -1,6 +1,34 @@
+qiv (Quick Image Viewer)
+
Quick Image Viewer (qiv) is a very small and pretty fast GDK/Imlib
image viewer. Features include zoom, maxpect, scale down, fullscreen,
brightness/contrast/gamma correction, slideshow, pan with keyboard
and mouse, rotate left/right, flip, delete (move to .qiv-trash/),
jump to image x, jump forward/backward x images, filename filter, and
you can use qiv to set your X11-Desktop background.
+
+These formats are supported by default:
+
+GIF TIFF XPM PNG PPM PNM PGM BMP JPEG SVG ICO TGA ICNS
+
+Optional supported formats:
+
+Format | Optional dependenc(y|ies)
+-----------------------+-----------------------------------------------
+PCX | pcx-pixbuf-loader
+-----------------------+-----------------------------------------------
+PSD (PhotoShop native) | gdk-pixbuf-psd
+-----------------------+-----------------------------------------------
+WEBP | libwebp imlib2 webp-pixbuf-loader. Build and
+ | install *in that order*.
+-----------------------+-----------------------------------------------
+WMF (Windows metafile) | wmf-pixbuf-loader
+-----------------------+-----------------------------------------------
+XCF (Gimp native) | xcf-pixbuf-loader
+-----------------------+-----------------------------------------------
+
+These are runtime dependencies, so they can be installed at any time
+without rebuilding qiv.
+
+To easily build all the optional dependencies, use sbopkg with the
+qiv-allfmt.sqf in the SlackBuild directory.
diff --git a/graphics/qiv/new_formats.diff b/graphics/qiv/new_formats.diff
new file mode 100644
index 0000000000..991583586e
--- /dev/null
+++ b/graphics/qiv/new_formats.diff
@@ -0,0 +1,62 @@
+diff -Naur qiv-2.3.2/Makefile qiv-2.3.2.patched/Makefile
+--- qiv-2.3.2/Makefile 2017-11-03 14:27:27.000000000 -0400
++++ qiv-2.3.2.patched/Makefile 2019-12-27 03:28:13.162355379 -0500
+@@ -24,7 +24,7 @@
+ # skipped.) It should reflect whatever is compiled into imlib.
+ # The latest version of imlib has removed imagemagick fallback support,
+ # so some extensions (XBM TGA) have been removed.
+-EXTNS = GIF TIFF XPM PNG PPM PNM PGM PCX BMP EIM JPEG SVG WMF ICO
++EXTNS = GIF TIFF XPM PNG PPM PNM PGM PCX BMP EIM JPEG SVG WMF ICO WEBP XCF PSD ICNS TGA
+
+ # Comment this line out if your system doesn't have getopt_long().
+ GETOPT_LONG = -DHAVE_GETOPT_LONG
+diff -Naur qiv-2.3.2/main.h qiv-2.3.2.patched/main.h
+--- qiv-2.3.2/main.h 2017-11-03 14:27:27.000000000 -0400
++++ qiv-2.3.2.patched/main.h 2019-12-27 03:23:02.330241315 -0500
+@@ -199,6 +199,24 @@
+ #ifdef EXTN_SVG
+ ".svg",
+ #endif
++#ifdef EXTN_WEBP
++ ".webp",
++#endif
++#ifdef EXTN_XCF
++ ".xcf",
++#endif
++#ifdef EXTN_PSD
++ ".psd",
++#endif
++#ifdef EXTN_ICNS
++ ".icns",
++#endif
++ /* BROKEN in slackware 14.2, using newer versions
++ of jasper and gdk-pixbuf2 built with jasper didn't help.
++ Disabled in Makefile. */
++#ifdef EXTN_JP2
++ ".jp2", ".jpc", ".jpx", ".j2k", ".jpf",
++#endif
+ NULL
+ };
+
+@@ -238,6 +256,21 @@
+ #ifdef EXTN_ICO
+ "MS Windows icon resource",
+ #endif
++#ifdef EXTN_WEBP
++ "RIFF (little-endian) data, Web/P image",
++#endif
++#ifdef EXTN_XCF
++ "GIMP XCF image data",
++#endif
++#ifdef EXTN_PSD
++ "Adobe Photoshop Image",
++#endif
++#ifdef EXTN_ICNS
++ "Mac OS X icon",
++#endif
++#ifdef EXTN_JP2
++ "JPEG 2000",
++#endif
+ NULL
+ };
+ #endif
diff --git a/graphics/qiv/qiv-allfmt.sqf b/graphics/qiv/qiv-allfmt.sqf
new file mode 100644
index 0000000000..872f2bea11
--- /dev/null
+++ b/graphics/qiv/qiv-allfmt.sqf
@@ -0,0 +1,7 @@
+libwebp
+imlib2
+webp-pixbuf-loader
+wmf-pixbuf-loader
+xcf-pixbuf-loader
+gdk-pixbuf-psd
+pcx-pixbuf-loader
diff --git a/graphics/qiv/qiv.SlackBuild b/graphics/qiv/qiv.SlackBuild
index 6933f0602d..08aaea2aa1 100644
--- a/graphics/qiv/qiv.SlackBuild
+++ b/graphics/qiv/qiv.SlackBuild
@@ -8,6 +8,14 @@
# version had no license, modified version released under the WTFPL. See
# http://www.wtfpl.net/txt/copying/ for details.
+# 20191226 bkw:
+# - Upgrade for v2.3.2. This was released a month after my last update,
+# but the download page on the site doesn't link to it (found it just
+# now by editing the URL for v2.3.1), so my update-checker script
+# never saw it...
+# - As compensation for my tardiness, add support for a bunch of new
+# image types.
+
# 20170209 bkw:
# - Take over maintenance
# - i486 => i586
@@ -17,7 +25,7 @@
# - Don't install README.INSTALL
PRGNAM=qiv
-VERSION=${VERSION:-2.3.2pre20160530}
+VERSION=${VERSION:-2.3.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -50,26 +58,39 @@ fi
set -e
-OLDVER=2.3.1
-
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$OLDVER
-tar xvf $CWD/$PRGNAM-$OLDVER.tgz
-cd $PRGNAM-$OLDVER
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tgz
+cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# bugfixes from upstream's git repo.
-patch -p1 < $CWD/648ed5a.diff
-
-sed -i "s/-O2 -Wall/$SLKCFLAGS/" Makefile
-sed -i "s|\./qiv|echo &|" Makefile # remove test
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# Patch to add potential support for various image formats. This patch
+# doesn't actually contain any code for decoding/displaying new image
+# formats. All it does is add file extensions and magic to the list
+# of filetypes qiv will attempt to display via imlib and/or pixbuf.
+# It's up to imlib/pixbuf to actually support the image types. Some of
+# these are already supported in Slackware, a few require optional deps
+# (see README).
+
+# For the optional ones (e.g. webp), this patch doesn't do any harm
+# if the support library's not installed. All it does is make qiv warn
+# "Unable to read file" on stderr, instead of silently skipping it.
+
+patch -p1 < $CWD/new_formats.diff
+
+# Three sed expressions here. In order:
+# 1. Make qiv build with our compiler flags.
+# 2. Disable the test, since it requires X to be running and
+# accepting connections from root.
+# 3. Put man page where Slackware likes them.
+sed -i -e "s/-O2 -Wall/$SLKCFLAGS/" \
+ -e "s|\./qiv|echo &|" \
+ -e 's,/share/man,/man,g' \
+ Makefile
make
make install PREFIX=$PKG/usr
diff --git a/graphics/qiv/qiv.info b/graphics/qiv/qiv.info
index 3ef95ba78a..1ec4d757ca 100644
--- a/graphics/qiv/qiv.info
+++ b/graphics/qiv/qiv.info
@@ -1,8 +1,8 @@
PRGNAM="qiv"
-VERSION="2.3.2pre20160530"
+VERSION="2.3.2"
HOMEPAGE="http://spiegl.de/qiv/"
-DOWNLOAD="http://spiegl.de/qiv/download/qiv-2.3.1.tgz"
-MD5SUM="93aea7469be64ebd35277a6dac079fc8"
+DOWNLOAD="http://spiegl.de/qiv/download/qiv-2.3.2.tgz"
+MD5SUM="e64dd2cbd49f31264f60012e0138549b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="imlib2"