From 38c51d505c88004a32a7d3e3e913dbb811930099 Mon Sep 17 00:00:00 2001 From: B Stack Date: Sun, 16 Jun 2019 18:30:16 -0400 Subject: irfanview 4.53-2: fix #7 invocation problem for rpm Probably due to /bin/sh -> dash on devuan, my Irfanview invocation has been failing. This commit fixes it, and reduces the dependency on /usr/bin/winepath (however it still uses the actual wine winepath.exe which is a part of the wine binary release anyway in Fedora) The architecture of the invocation script has been split into common and arch-specific. --- irfanview/irfanview-common | 100 ++++++++++++++++++++++++++++++++++++++++++++ irfanview/irfanview.desktop | 14 +++---- irfanview/irfanview.spec | 48 ++++++++++----------- irfanview/irfanview32 | 87 +++++--------------------------------- irfanview/irfanview64 | 85 ++++--------------------------------- 5 files changed, 149 insertions(+), 185 deletions(-) create mode 100755 irfanview/irfanview-common (limited to 'irfanview') diff --git a/irfanview/irfanview-common b/irfanview/irfanview-common new file mode 100755 index 0000000..8d213da --- /dev/null +++ b/irfanview/irfanview-common @@ -0,0 +1,100 @@ +#!/bin/sh +# File: irfanview-common +# Locations: /usr/bin +# Author: bgstack15@gmail.com +# Startdate: 2016-01-29 +# Title: Common Elements for Wrapper script for passing files to Irfanview +# Purpose: Converts file paths to a wine format and also handles compressed files +# History: 2016-01-29 Initial quick script written. It used a bunch of sed commands to transform paths to a wine format. +# 2019-02-26 remove /etc/default/irfanview file +# 2019-06-01 fix invocation for single item with space in name. Cannot call multiple objcts with spaces in filename. +# 2019-06-16 remove DEVTTY in favor of just showing on current tty +# 2019-06-16 replace winepath call with wine $WINEPATH_BIN +# 2019-06-16 split into package-arch-specific and common scripts +# Usage: +# called from irfanview (which is symlink to irfanview32 or ifanview64) +# Do not use this by itself. +# Reference: +# Ideas for zip expansion and winepath https://github.com/Zykr/IrfanViewLinux/blob/master/irfanview +# Improve: + +if ! test "${IV_VALID_CALL:-nothing}" = "do_not_set_this_manually" ; +then + printf "%s\n" "Do not call this script by itself! Use \"irfanview\". Aborted." + false +else + +IV_VERSION="2019-06-16b" + +# Define functions +expandword() { + # call: expandword "${word}" + # if file, add it + # if directory, expand it + # if tarball, extract it and operate on the directory like normal + local _word="$( echo "${@}" | sed -e 'sF\/\/F\/Fg;' )" + if test -d "${_word}"; + then + # loop through all files in the directory + for _newword in "${_word}"/*; + do + expandword "${_newword}"; + done + elif test -f "${_word}"; + then + # file exists so check if tarball + case "${_word}" in + *.tgz|*.tar.gz) + # extract it and expand the temporary directory + _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" + echo "tmpdir ${_tmpdir}" + tar -zx -C "${_tmpdir}" -f "${_word}" + expandword "${_tmpdir}" + ;; + *.zip) + _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" + echo "tmpdir ${_tmpdir}" + echo "7za e -w${_tmpdir} ${_word}" + ( cd "${_tmpdir}" ; 7za e "${_word}" ; ) + expandword "${_tmpdir}" + ;; + *) + # assume it is readable and add it to list of files to open + echo "File ${_word}" + thisfile="$( getwinepath "${_word}" )" + irfanfiles="${irfanfiles} ${thisfile}" + ;; + esac + fi +} + +getwinepath() { + # call: getwinepath "$foo" + wine "${IV_WINEPATH_BIN}" -w "${@}" +} + +# Define variables +alltempdirs="" + +# prepare files +irfanargs= +irfanfiles= + +for word in "${@}"; +do + expandword "${word}" +done +irfanfiles="${irfanfiles## }" + +# run wine +cd $WINEPREFIX +printf wine "${IV_EXEC_PATH}" ${irfanargs} ${irfanfiles} +wine "${IV_EXEC_PATH}" ${irfanargs} ${irfanfiles} & + +wait %1 +for thistempdir in ${alltempdirs}; +do + rm -rf "${thistempdir}" +done + +fi diff --git a/irfanview/irfanview.desktop b/irfanview/irfanview.desktop index 4a4fcfc..8a601fc 100644 --- a/irfanview/irfanview.desktop +++ b/irfanview/irfanview.desktop @@ -1,13 +1,13 @@ [Desktop Entry] -Version=1.0 -Name=Irfanview -GenericName=Graphics Viewer +Categories=Graphics;Viewer; Comment=View graphics Exec=/usr/bin/irfanview %F +GenericName=Graphics Viewer Icon=irfanview -Terminal=false -Type=Application +Keywords=irfan;graphics;image;viewer;batch; MimeType=x-content/image-dcf;image/png;image/gif;image/jpeg;image/jpg;image/bmp;image/tiff;image/ico;image/vnd.adobe.photoshop; +Name=Irfanview StartupNotify=true -Categories=Graphics;Viewer; -Keywords=irfan;graphics;image;viewer;batch; +Terminal=false +Type=Application +Version=1.0 diff --git a/irfanview/irfanview.spec b/irfanview/irfanview.spec index b693bb4..caf711e 100644 --- a/irfanview/irfanview.spec +++ b/irfanview/irfanview.spec @@ -6,7 +6,7 @@ Name: irfanview Version: 4.53 -Release: 1 +Release: 2 Summary: irfanview is a graphics viewer %define version_num %( echo %version | tr -d '\.' ) @@ -25,6 +25,7 @@ Source6: %{name}64 Source7: %{name}-vlc Source8: i_view32.ini Source9: %{name}-icons.tgz +Source10: %{name}-common Packager: Bgstack15 Buildarch: noarch @@ -107,6 +108,7 @@ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4} # application start and default scripts %{__install} -p -D -m0754 %{SOURCE8} %{buildroot}%{_bindir}/%{name}-vlc +%{__install} -p -D -m0754 %{SOURCE10} %{buildroot}%{_bindir}/%{name}-common # man pages pushd %{name}-bin32 @@ -116,14 +118,19 @@ popd # icons %{__tar} -zxvf %{SOURCE9} %{name}-circle.svg -for shape in circle ; + +ff=" -filter Lanczos" +for s in 16 22 24 32 48 64 96 128 256 ; do - for s in 16 22 24 32 48 64 96 128 256 ; - do - mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps - convert -background none -filter Lanczos -resize ${s}x${s} %{name}-${shape}.svg %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/%{name}.png - done + dir=%{buildroot}%{_datadir}/icons/hicolor/${s}x${s} + rr=" -resize ${s}x${s}" + mkdir -p ${dir}/apps + # apps + convert -background none ${ff} ${rr} %{name}-circle.svg ${dir}/apps/%{name}.png + # mimetypes + # none done + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps cp -p %{name}-circle.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg @@ -134,13 +141,7 @@ cp -p %{name}-circle.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{n rm -rf %{buildroot} || : %post -# Update icon caches -for word in hicolor ; -do - touch --no-create %{_datadir}/icons/${word} || : -done -update-desktop-database &> /dev/null || : -/sbin/ldconfig || : +touch --no-create %{_datadir}/icons/hicolor 1>/dev/null 2>&1 || : %post bin32 case "${1}" in @@ -175,25 +176,19 @@ case "${1}" in esac %postun -update-desktop-database &> /dev/null || : if test "$1" = "0" ; then - - for word in hicolor ; - do - touch --no-create %{_datadir}/icons/${word} &>/dev/null - done - + touch --no-create %{_datadir}/icons/hicolor 1>/dev/null 2>&1 || : fi -/sbin/ldconfig || : %posttrans -/usr/bin/gtk-update-icon-cache "%{_datadir}/icons/hicolor" &>/dev/null || : -/usr/bin/update-mime-database "%{_datadir}/mime" &>/dev/null || : +update-desktop-database 1>/dev/null 2>&1 & : +gtk-update-icon-cache %{_datadir}/icons/hicolor 1>/dev/null 2>&1 & : +update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & : %files common %{_docdir}/%{name} -%{_bindir}/%{name}-vlc +%{_bindir}/%{name}-* %{_datadir}/applications/* %{_datadir}/icons/hicolor/*/*/* %ghost %attr(755, -, -) %{_bindir}/%{name} @@ -209,5 +204,8 @@ fi %{_datadir}/%{name}64 %changelog +* Sun Jun 16 2019 B Stack - 4.53-2 +- improve app start scripts and mimetypes + * Sat May 18 2019 B Stack - 4.53-1 - version bump diff --git a/irfanview/irfanview32 b/irfanview/irfanview32 index 66f0ee8..7c8218d 100755 --- a/irfanview/irfanview32 +++ b/irfanview/irfanview32 @@ -1,12 +1,17 @@ #!/bin/sh -# File: /usr/bin/irfanview +# File: /usr/bin/irfanview32 +# Locations: symlink /usr/bin/irfanview # Author: bgstack15@gmail.com # Startdate: 2016-01-29 # Title: Wrapper script for passing files to Irfanview # Purpose: Converts file paths to a wine format and also handles compressed files # History: 2016-01-29 Initial quick script written. It used a bunch of sed commands to transform paths to a wine format. # 2019-02-26 remove /etc/default/irfanview file -# Usage: irfan /path/to/image /another/image/file +# 2019-06-01 fix invocation for single item with space in name. Cannot call multiple objcts with spaces in filename. +# 2019-06-16 remove DEVTTY in favor of just showing on current tty +# 2019-06-16 replace winepath call with wine $WINEPATH_BIN +# 2019-06-16 split into package-arch-specific and common scripts +# Usage: irfanview /path/to/image /another/image/file # Reference: # Ideas for zip expansion and winepath https://github.com/Zykr/IrfanViewLinux/blob/master/irfanview # Improve: @@ -14,81 +19,9 @@ # load variables test -z "${IV_WINEPREFIX}" && export IV_WINEPREFIX="$HOME/.wine" test -n "${IV_WINEPREFIX}" && export WINEPREFIX="${IV_WINEPREFIX}" || export WINEPREFIX=$HOME/.wine -test -z "${IV_DEVTTY}" && export IV_DEVTTY=/dev/null test -z "${IV_EXEC_NAME}" && export IV_EXEC_NAME="i_view32.exe" test -z "${IV_EXEC_PATH}" && export IV_EXEC_PATH="/usr/share/irfanview32/i_view32.exe" +test -z "${IV_WINEPATH_BIN}" && export IV_WINEPATH_BIN="/usr/lib/wine/fakedlls/winepath.exe" +export IV_VALID_CALL=do_not_set_this_manually -IV_VERSION="2019-02-26a" - -# Define functions -expandword() { - # call: expandword "${word}" - # if file, add it - # if directory, expand it - # if tarball, extract it and operate on the directory like normal - local _word="$( echo "${@}" | sed -e 'sF\/\/F\/Fg;' )" - if test -d "${_word}"; - then - # loop through all files in the directory - for _newword in "${_word}"/*; - do - expandword "${_newword}"; - done - elif test -f "${_word}"; - then - # file exists so check if tarball - case "${_word}" in - *.tgz|*.tar.gz) - # extract it and expand the temporary directory - _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" - echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY} - tar -zx -C "${_tmpdir}" -f "${_word}" 1>${IV_DEVTTY} 2>&1 - expandword "${_tmpdir}" - ;; - *.zip) - _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" - echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY} - echo "7za e -w${_tmpdir} ${_word}" 1>${IV_DEVTTY} 2>&1 - ( cd "${_tmpdir}"; 7za e "${_word}" 1>${IV_DEVTTY} 2>&1; ) - expandword "${_tmpdir}" - ;; - *) - # assume it is readable and add it to list of files to open - echo "File ${_word}" 1>${IV_DEVTTY} - thisfile="$( getwinepath "${_word}" )" - irfanfiles="${irfanfiles} \"${thisfile}\"" - ;; - esac - fi -} - -getwinepath() { - # call: getwinepath "$foo" - winepath -w "${@}" -} - -# Define variables -alltempdirs="" - -# prepare files -irfanargs= -irfanfiles= - -for word in "${@}"; -do - expandword "${word}" -done -irfanfiles="${irfanfiles## }" - -# run wine -cd $WINEPREFIX -echo "${irfanfiles}" | xargs echo wine "${IV_EXEC_PATH}" ${irfanargs} > ${IV_DEVTTY} -echo "${irfanfiles}" | xargs wine "${IV_EXEC_PATH}" ${irfanargs} & - -#wait $( pgrep -P $$ ${IV_EXEC_NAME} ) -# WORKHERE try wait with: -wait %1 -for thistempdir in ${alltempdirs}; -do - rm -rf "${thistempdir}" 1>${IV_DEVTTY} -done +. irfanview-common "$@" diff --git a/irfanview/irfanview64 b/irfanview/irfanview64 index b67e43d..d3c16e5 100755 --- a/irfanview/irfanview64 +++ b/irfanview/irfanview64 @@ -1,12 +1,17 @@ #!/bin/sh # File: /usr/bin/irfanview64 +# Locations: symlink /usr/bin/irfanview # Author: bgstack15@gmail.com # Startdate: 2016-01-29 # Title: Wrapper script for passing files to Irfanview # Purpose: Converts file paths to a wine format and also handles compressed files # History: 2016-01-29 Initial quick script written. It used a bunch of sed commands to transform paths to a wine format. # 2019-02-26 remove /etc/default/irfanview file -# Usage: irfan /path/to/image /another/image/file +# 2019-06-01 fix invocation for single item with space in name. Cannot call multiple objcts with spaces in filename. +# 2019-06-16 remove DEVTTY in favor of just showing on current tty +# 2019-06-16 replace winepath call with wine $WINEPATH_BIN +# 2019-06-16 split into package-arch-specific and common scripts +# Usage: irfanview /path/to/image /another/image/file # Reference: # Ideas for zip expansion and winepath https://github.com/Zykr/IrfanViewLinux/blob/master/irfanview # Improve: @@ -14,81 +19,9 @@ # load variables test -z "${IV_WINEPREFIX}" && export IV_WINEPREFIX="$HOME/.wine64" test -n "${IV_WINEPREFIX}" && export WINEPREFIX="${IV_WINEPREFIX}" || export WINEPREFIX=$HOME/.wine64 -test -z "${IV_DEVTTY}" && export IV_DEVTTY=/dev/null test -z "${IV_EXEC_NAME}" && export IV_EXEC_NAME="i_view64.exe" test -z "${IV_EXEC_PATH}" && export IV_EXEC_PATH="/usr/share/irfanview64/i_view64.exe" +test -z "${IV_WINEPATH_BIN}" && export IV_WINEPATH_BIN="/usr/lib64/wine/fakedlls/winepath.exe" +export IV_VALID_CALL=do_not_set_this_manually -IV_VERSION="2019-02-26a" - -# Define functions -expandword() { - # call: expandword "${word}" - # if file, add it - # if directory, expand it - # if tarball, extract it and operate on the directory like normal - local _word="$( echo "${@}" | sed -e 'sF\/\/F\/Fg;' )" - if test -d "${_word}"; - then - # loop through all files in the directory - for _newword in "${_word}"/*; - do - expandword "${_newword}"; - done - elif test -f "${_word}"; - then - # file exists so check if tarball - case "${_word}" in - *.tgz|*.tar.gz) - # extract it and expand the temporary directory - _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" - echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY} - tar -zx -C "${_tmpdir}" -f "${_word}" 1>${IV_DEVTTY} 2>&1 - expandword "${_tmpdir}" - ;; - *.zip) - _tmpdir="$( mktemp -d )"; alltempdirs="${alltempdirs} ${_tmpdir}" - echo "tmpdir ${_tmpdir}" 1>${IV_DEVTTY} - echo "7za e -w${_tmpdir} ${_word}" 1>${IV_DEVTTY} 2>&1 - ( cd "${_tmpdir}"; 7za e "${_word}" 1>${IV_DEVTTY} 2>&1; ) - expandword "${_tmpdir}" - ;; - *) - # assume it is readable and add it to list of files to open - echo "File ${_word}" 1>${IV_DEVTTY} - thisfile="$( getwinepath "${_word}" )" - irfanfiles="${irfanfiles} \"${thisfile}\"" - ;; - esac - fi -} - -getwinepath() { - # call: getwinepath "$foo" - winepath -w "${@}" -} - -# Define variables -alltempdirs="" - -# prepare files -irfanargs= -irfanfiles= - -for word in "${@}"; -do - expandword "${word}" -done -irfanfiles="${irfanfiles## }" - -# run wine -cd $WINEPREFIX -echo "${irfanfiles}" | xargs echo wine "${IV_EXEC_PATH}" ${irfanargs} > ${IV_DEVTTY} -echo "${irfanfiles}" | xargs wine "${IV_EXEC_PATH}" ${irfanargs} & - -#wait $( pgrep -P $$ ${IV_EXEC_NAME} ) -# WORKHERE try wait with: -wait %1 -for thistempdir in ${alltempdirs}; -do - rm -rf "${thistempdir}" 1>${IV_DEVTTY} -done +. irfanview-common "$@" -- cgit