dvdrip-monitor: New program to keep track of what's going on.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 6 Mar 2022 01:10:20 +0000 (01:10 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 6 Mar 2022 01:10:52 +0000 (01:10 +0000)
Makefile
dvdrip-monitor [new file with mode: 0755]

index 5be9cfc..eecede2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -47,6 +47,7 @@ dvd-id_SRCS            = dvd-id.c lib.c multiprogress.c
 
 SCRIPTS                        += dvdrip
 SCRIPTS                        += dvdrip-upload
+SCRIPTS                        += dvdrip-monitor
 
 %.o: %.c
        $(call v-tag,CC)$(CC) -c $(CFLAGS) -o$@ -MD -MF $*.dep $<
diff --git a/dvdrip-monitor b/dvdrip-monitor
new file mode 100755 (executable)
index 0000000..eb3415c
--- /dev/null
@@ -0,0 +1,32 @@
+#! /bin/sh -e
+
+tmp=${DVDRIP_TMPDIR-${HOME?}/tmp/dvdrip}
+
+case "$#" in 0) set -- /dev/sr[0-9]* ;; esac
+cls=$(tput clear)
+nl="
+"
+
+last=:
+while :; do
+  unset out
+  for dev in "$@"; do
+    label=$(lsblk -dn -oLABEL "$dev" 2>&1 || echo "(error)")
+    dev_id=$(stat -c%t:%T "$dev")
+    dest="(inactive)"
+    for i in "$tmp"/*/device; do
+      if [ ! -f "$i" ]; then continue; fi
+      d=$(cat "$i"); id=$(stat -c%t:%T "$d")
+      case $id in
+       "$dev_id")
+         for j in dest.new dest dest.seen; do
+           if dest=$(cat "${i%/device}/$j"); then break; fi
+         done
+         ;;
+      esac
+    done
+    out=${out+$out$nl}$(printf "%-6s %-32s %s\n" "${dev#/dev/}" "$label" "$dest")
+  done
+  case $out in "$last") ;; *) echo -n "$cls$out"; last=$out ;; esac
+  sleep 1
+done