60 lines
1.5 KiB
Plaintext
60 lines
1.5 KiB
Plaintext
edit:add-var winmail~ {|@argv|
|
||
use path
|
||
use os
|
||
|
||
var curdir = (pwd)
|
||
var tmpdir = (os:temp-dir 'winmail-*')
|
||
var remove = $false
|
||
var browse = $e:falkon~
|
||
var explore = $e:dolphin~
|
||
var data = ''
|
||
|
||
fn print_help {||
|
||
echo 'winmail [(-h|-k|-r)] [<winmail_file>]'
|
||
echo ''
|
||
echo 'Options:'
|
||
echo ' -h, --help Affiche cette aide'
|
||
echo ' -k, --keep Conserve le fichier winmail.dat fourni en entrée (option par défaut)'
|
||
echo ' -r, --remove Supprime le fichier winmail.dat une fois le programme terminé'
|
||
echo ''
|
||
echo 'Si le fichier de données winmail.dat n’est pas défini, utilise le winmail.dat du répertoire courant, si trouvé'
|
||
}
|
||
|
||
each {|e|
|
||
if (or (eq $e -r) (eq $e --remove)) {
|
||
set remove = $true
|
||
} elif (or (eq $e -k) (eq $e --keep)) {
|
||
set remove = $false
|
||
} elif (or (eq $e -h) (eq $e --help)) {
|
||
print_help
|
||
exit
|
||
} else {
|
||
set data = (path:abs $e)
|
||
}
|
||
} $argv
|
||
|
||
if (eq $data '') {
|
||
set data = (path:abs 'winmail.dat')
|
||
}
|
||
|
||
if (not (os:is-regular $data)) {
|
||
fail (printf 'Le fichier %s n’existe pas.' $data)
|
||
}
|
||
|
||
cd $tmpdir
|
||
tnef --save-body $data
|
||
|
||
if (os:is-regular message.html) {
|
||
perl -pe 's/cid:(image(\\d{3})\.(jpe?g|png|gif))@[[:alnum:]]{8}\.[[:alnum:]]{8}/\\1/g' message.html > message2.html
|
||
$browse message2.html > /dev/null 2> /dev/null
|
||
} else {
|
||
$explore . > /dev/null 2> /dev/null
|
||
}
|
||
|
||
cd $curdir
|
||
os:remove-all $tmpdir
|
||
if $remove {
|
||
os:remove $data
|
||
}
|
||
}
|