acmecert: Fix cryptography bugs.
[utils.git] / planime
diff --git a/planime b/planime
index 27b3eac..c53a425 100755 (executable)
--- a/planime
+++ b/planime
@@ -50,7 +50,7 @@ findfile() {
            fi
        fi
        if [ "$m" = y ]; then
-           if [ "$eqt" = "$3" -o "$eqt" = "($3)" ]; then
+           if [ "$eqt" = "$3" -o "$eqt" = "($3)" -o "${eqt:0:2}" = "- " ]; then
                matches=("${matches[@]}" "$file")
            fi
        fi
@@ -71,59 +71,69 @@ findfile() {
 }
 
 origargs=("$0" "$@")
-cmdline=(mplayer -fs -ass)
+cmdline=(mpv -fs)
 debug=
+log=y
 unset pretend printfile
 
-while [ "${1:0:1}" = - ]; do
-    a="$1"
-    shift
-    case "$a" in
-       -h)
-           echo "usage: planime [-fdhtC] [-A PLAYER-ARGS... ;] [-s PAR VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]" >&2
+usage() {
+    echo "usage: planime [-fdhtCL] [-A PLAYER-ARGS... ;] [-s PAR=VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]"
+}
+
+while getopts hdtCLA:s:fv opt; do
+    case "$opt" in
+       h)
+           usage
            exit 0
            ;;
-       -d)
+       d)
            debug=y
            ;;
-       -t)
-           cmdline=("${cmdline[@]}" -ao oss:/dev/dsp1)
+       t)
+           cmdline=("${cmdline[@]}" -profile tv)
+           DISPLAY=:1
+           chwp=y
            ;;
-       -C)
+       C)
            pretend=y
            ;;
-       -A)
-           while :; do
-               if [ $# -lt 1 ]; then
+       L)
+           log=
+           ;;
+       A)
+           while [ "$OPTARG" != \; ]; do
+               cmdline+=("$OPTARG")
+               if [ "$OPTIND" -gt $# ]; then
                    echo "planime: unterminated argument list" >&2
                    exit 1
                fi
-               a="$1"
-               shift
-               if [ "$a" = \; ]; then
-                   break;
-               fi
-               cmdline=("${cmdline[@]}" "$a")
+               OPTARG="${!OPTIND}"
+               let OPTIND++
            done
            ;;
-       -s)
-           savepar="$1"
-           shift
-           saveval="$1"
-           shift
+       s)
+           p="$(expr index "$OPTARG" =)"
+           if [ "$p" -le 0 ]; then
+               usage >&2
+               exit 1
+           fi
+           savepar="${OPTARG:0:p}"
+           let p++
+           saveval="${OPTARG:p}"
            ;;
-       -f)
+       f)
            printfile=y
            ;;
-       --)
-           break
+       v)
+           cmdline+=(-v)
            ;;
        *)
-           echo "planime: unknown option \`$a'"
+           usage >&2
            exit 1
            ;;
     esac
 done
+shift $((OPTIND - 1))
 
 dirbase="$(basename "$(pwd)")"
 base=.
@@ -239,22 +249,25 @@ fi
 if [ -n "$alang" ]; then
     cmdline=("${cmdline[@]}" -alang "$alang")
 elif [ -n "$aid" ]; then
-    cmdline=("${cmdline[@]}" -aid "$aid")
+    cmdline=("${cmdline[@]}" -aid "$((aid + 1))")
 fi
 if [ -n "$slang" ]; then
     cmdline=("${cmdline[@]}" -slang "$slang")
 elif [ -n "$sid" ]; then
-    cmdline=("${cmdline[@]}" -sid "$sid")
+    cmdline=("${cmdline[@]}" -sid "$((sid + 1))")
 fi
 
-if [ "`hostname`" = pc6 -o "`hostname`" = pc7 -a "$DISPLAY" = :1 ]; then chwp=y; fi
-
 if [ -n "$pretend" ]; then
     echo "${cmdline[@]}" "$file"
 elif [ -n "$printfile" ]; then
     echo "$file"
 else
     if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
+    if [ "$log" = y ]; then
+       if [ -d $HOME/.anime ]; then
+           echo "$(date) $(basename "$file")" >>$HOME/.anime/plog
+       fi
+    fi
     "${cmdline[@]}" "$file"
     
     if [ "$nextep" = y ]; then