Remove CVS info.
[doldaconnect.git] / config / dc-filter
CommitLineData
d3372da9 1#!/bin/sh
2trap "" SIGHUP SIGPIPE
3if [ ! -d $HOME/dc ]; then mkdir $HOME/dc; fi
4if [ ! -d $HOME/dc/done ]; then mkdir $HOME/dc/done; fi
5if [ ! -d $HOME/dc/resume ]; then mkdir $HOME/dc/resume; fi
6if [ ! -d $HOME/dc/users ]; then mkdir $HOME/dc/users; fi
7exec 2>>$HOME/dc/filterlog
8cd $HOME/dc
9unset speedrec
10for dir in /usr/libexec /usr/local/libexec; do
11 if [ -x "${dir}/speedrec" ]; then
12 speedrec="${dir}/speedrec"
13 fi
14done
15if [ -z "$speedrec" ]; then
16 echo "could not find speedrec - using cat instead" >&2
17fi
18maxsize=0
19unset resfile
20unset infofile
21found=y
22while [ -z "$resfile" -a "$found" = y ]; do
23 unset found
24 for file in resume/*.info; do
25 if [ ! -r "$file" ]; then continue; fi
26 . "$file"
27 if [ "$filesize" -eq "$2" ]; then
28 thisfile="${file%.info}"
29 if [ ! -e "${thisfile}.lock" ]; then
30 size="$(wc -c <"$thisfile")"
31 found=y
32 if [ "$size" -gt "$maxsize" ]; then
33 maxsize="$size"
34 resfile="$thisfile"
35 infofile="$file"
36 fi
37 fi
38 fi
39 done
40 if [ -n "$resfile" ]; then
41 if ! locktouch "${resfile}.lock"; then
42 unset resfile
43 fi
44 fi
45done
46unset "${!dcarg_@}"
47if [ -n "$resfile" ]; then
48 . "${resfile}.info"
49fi
50origname="$1"
51shift
52filesize="$1"
53shift
54peername="$1"
55shift
56while [ $# -gt 1 ]; do
57 rec="$1"
58 shift
59 val="$1"
60 shift
61 declare "dcarg_$rec"="$val"
62done
63if [ -z "$resfile" ]; then
64 resfile="$(mktemp resume/resXXXXXX)"
65 chmod 644 "$resfile"
66 maxsize=0
67 >"${resfile}.lock"
68fi
69declare -p origname filesize "${!dcarg_@}" >"${resfile}.info"
70echo "resume $maxsize"
71if [ -z "$speedrec" ]; then
72 cat >>"$resfile"
73else
74 peerfile="$(tr / _ <<<"$peername")"
75 "$speedrec" "$HOME/dc/users/$peerfile" >>"$resfile"
76fi
77size="$(wc -c <"$resfile")"
78if [ "$size" -eq 0 ]; then
79 rm -f "$resfile" "${resfile}.info" "${resfile}.lock"
80 exit 1
81fi
82rm -f "${resfile}.lock"
83if [ "$size" -lt "$filesize" ]; then
84 exit 1 # Exit code != 0 means restart transfer
85fi
86rm -f "${resfile}.info"
87
88destdir="$HOME/dc/done"
89
90newname="$destdir"/"$origname"
91if [ -e "$newname" ]; then
92 newname="$(mktemp "${newname}XXXXXX")"
93fi
94mv "$resfile" "$newname"
95if [ -x $HOME/dc/complete ]; then
96 export "${!dcarg_@}"
97 exec $HOME/dc/complete "$newname"
98fi
99exit 0