diff options
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/qiv/648ed5a.diff | 446 | ||||
-rw-r--r-- | graphics/qiv/qiv.SlackBuild | 52 | ||||
-rw-r--r-- | graphics/qiv/qiv.info | 6 |
3 files changed, 480 insertions, 24 deletions
diff --git a/graphics/qiv/648ed5a.diff b/graphics/qiv/648ed5a.diff new file mode 100644 index 0000000000..178a3b854a --- /dev/null +++ b/graphics/qiv/648ed5a.diff @@ -0,0 +1,446 @@ +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/qiv.SlackBuild b/graphics/qiv/qiv.SlackBuild index 03349c055d..6933f0602d 100644 --- a/graphics/qiv/qiv.SlackBuild +++ b/graphics/qiv/qiv.SlackBuild @@ -2,16 +2,28 @@ # Slackware build script for qiv -# Written by Pablo Santamaria (pablosantamaria@gmail.com) +# Written by Pablo Santamaria (email removed) + +# Modified & now maintained by B. Watson <yalhcru@gmail.com>. Original +# version had no license, modified version released under the WTFPL. See +# http://www.wtfpl.net/txt/copying/ for details. + +# 20170209 bkw: +# - Take over maintenance +# - i486 => i586 +# - Add latest fixes from upstream's git +# - Get rid of redundant stripping of binaries and gzipping +# of man pages (upstream's 'make install' already does it) +# - Don't install README.INSTALL PRGNAM=qiv -VERSION=${VERSION:-2.3.1} +VERSION=${VERSION:-2.3.2pre20160530} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac @@ -22,8 +34,8 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" @@ -38,12 +50,14 @@ fi set -e +OLDVER=2.3.1 + rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $PRGNAM-$VERSION -tar xvf $CWD/$PRGNAM-$VERSION.tgz -cd $PRGNAM-$VERSION +rm -rf $PRGNAM-$OLDVER +tar xvf $CWD/$PRGNAM-$OLDVER.tgz +cd $PRGNAM-$OLDVER chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ @@ -51,26 +65,22 @@ find -L . \ \( -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 -make - -make install PREFIX=$PKG/usr || true -find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ - | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +make +make install PREFIX=$PKG/usr -( cd $PKG/usr/man - find . -type f -exec gzip -9 {} \; - for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done -) +# binary already stripped, man pages already gzipped +rm -f README.INSTALL # don't need this in a binary package +chmod 644 contrib/* # docs shouldn't be executable even if they're scripts mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a \ - Changelog README* intro.jpg contrib/ \ - $PKG/usr/doc/$PRGNAM-$VERSION +cp -a Changelog README* intro.jpg contrib/ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild -find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \; mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc diff --git a/graphics/qiv/qiv.info b/graphics/qiv/qiv.info index 020168f826..3ef95ba78a 100644 --- a/graphics/qiv/qiv.info +++ b/graphics/qiv/qiv.info @@ -1,10 +1,10 @@ PRGNAM="qiv" -VERSION="2.3.1" +VERSION="2.3.2pre20160530" HOMEPAGE="http://spiegl.de/qiv/" DOWNLOAD="http://spiegl.de/qiv/download/qiv-2.3.1.tgz" MD5SUM="93aea7469be64ebd35277a6dac079fc8" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="imlib2" -MAINTAINER="Pablo Santamaria" -EMAIL="pablosantamaria@gmail.com" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" |