summaryrefslogtreecommitdiff
path: root/irfanview/irfanview32
blob: 66f0ee824acd877231395d0fccd013897ad837a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
# File: /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
# Reference:
#    Ideas for zip expansion and winepath https://github.com/Zykr/IrfanViewLinux/blob/master/irfanview
# Improve:

# 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"

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
bgstack15