#!/bin/bash PROG_PATH='/usr/bin/joe' REWRITE_FILE='1' CHARSET_TO='utf8' usage(){ echo "usage: $PROG_ALIAS koi8|win " exit 0 } if [ "$1" != "" ] && [ "$2" != "" ]; then #-------------------- detect charset CHARSET_FROM='' case $1 in 'koi8') CHARSET_FROM='koi8-r' ;; 'win') CHARSET_FROM='cp1251' ;; *) usage ;; esac #-------------------- define directoty TMP_DIRECTORY='/tmp/translate/'; if [ ! -d $TMP_DIRECTORY ]; then echo "!!!! No such directory $TMP_DIRECTORY" if [ ! -d /tmp/ ]; then echo "!!!! No such directory /tmp/" if [ /bin/mkdir -m 0777 /tmp/ ]; then echo "!!!! Create directory /tmp/" else echo "!!!! Not created /tmp/ : Permission denied" exit 0 fi fi if /bin/mkdir -m 0777 $TMP_DIRECTORY ; then echo "!!!! Create directory $TMP_DIRECTORY" else echo "!!!! Not created $TMP_DIRECTORY : Permission denied" exit 0 fi fi #-------------------- define filename FILE_ORIG=$2 if ! echo $FILE_ORIG | grep '^\/' > /dev/null 2>&1 ; then PUTH_PWD=`pwd` FILE_ORIG=`echo $PUTH_PWD/$FILE_ORIG` fi FILE_TMP=`echo "$FILE_ORIG" | sed -e 's/\//\.\./g'` FILE_TMP=`echo $TMP_DIRECTORY$FILE_TMP` #-------------------- define user && group USER=`ls -l $FILE_ORIG | sed -e 's/^[^ ]* [^ ]* //' -e 's/ .*//'` GROUP=`ls -l $FILE_ORIG | sed -e 's/^[^ ]* [^ ]* [^ ]* //' -e 's/ .*//'` #-------------------- create copy origcharset if /bin/cp $FILE_ORIG $FILE_TMP.origcharset ; then /bin/chmod 0666 $FILE_TMP.origcharset echo "!!!! create file $FILE_TMP.origcharset" else echo "!!!! Error create file $FILE_TMP.origcharset" exit 0 fi #-------------------- change charset if /usr/bin/iconv -f $CHARSET_FROM -t $CHARSET_TO -o $FILE_TMP $FILE_ORIG ; then /bin/chmod 0666 $FILE_TMP echo "!!!! change charset from $CHARSET_FROM in $CHARSET_TO" else echo "!!!! Error change charset in file $FILE_ORIG" exit 0 fi #-------------------- run program view/edit echo "!!!! start $PROG_PATH $FILE_TMP" $PROG_PATH $FILE_TMP #-------------------- rewrite file if [ $REWRITE_FILE != 0 ]; then #-------------------- back change charset if /usr/bin/iconv -t $CHARSET_FROM -f $CHARSET_TO -o $FILE_ORIG $FILE_TMP ; then echo "!!!! change charset from $CHARSET_TO in $CHARSET_FROM" else echo "!!!! Error change charset in file $FILE_ORIG" echo "!!!! Save BAK file $FILE_TMP" exit 0 fi #-------------------- restore user && group /bin/chown $USER:$GROUP $FILE_ORIG fi else $PROG_PATH $1 $2 fi