5 if [ ! -d $HOME/dc ]; then mkdir $HOME/dc; fi
6 if [ ! -d $HOME/dc/done ]; then mkdir $HOME/dc/done; fi
7 if [ ! -d $HOME/dc/resume ]; then mkdir $HOME/dc/resume; fi
8 if [ ! -d $HOME/dc/users ]; then mkdir $HOME/dc/users; fi
9 exec 2>>$HOME/dc/filterlog
15 for dir in "${binpath[@]}"; do
16 lepath=("${lepath[@]}" "${dir%/bin}/libexec")
18 for dir in "${lepath[@]}" /usr/libexec /usr/local/libexec; do
19 if [ -x "${dir}/speedrec" ]; then
20 speedrecpath="${dir}/speedrec"
23 if [ -z "$speedrecpath" ]; then
24 echo "could not find speedrec - using cat instead" >&2
31 while [ -z "$resfile" -a "$found" = y ]; do
33 for file in resume/*.info; do
34 if [ ! -r "$file" ]; then continue; fi
36 if [ "$filesize" -eq "$2" ]; then
37 thisfile="${file%.info}"
38 if [ ! -e "${thisfile}.lock" ]; then
39 size="$(wc -c <"$thisfile")"
41 if [ "$size" -gt "$maxsize" ]; then
49 if [ -n "$resfile" ]; then
50 if ! locktouch "${resfile}.lock"; then
57 if [ -n "$resfile" ]; then
67 while [ $# -gt 1 ]; do
72 declare "dcarg_$rec"="$val"
75 if [ -z "$resfile" ]; then
76 resfile="$(mktemp resume/resXXXXXX)"
81 declare -p origname filesize "${!dcarg_@}" >"${resfile}.info"
83 echo "resume $maxsize" 2>/dev/null # Avoid EPIPE warning if the server has already closed the transfer.
85 if [ -z "$speedrecpath" ]; then
88 speedrec=("$speedrecpath" "$HOME/dc/users/$(tr / _ <<<"$peername")")
89 peerfile="$(tr / _ <<<"$peername")"
91 if ! which tthsum >/dev/null 2>&1; then
94 tthsum=(tthsum -6 -F 3 -s "${resfile}.tthstate" -f)
96 "${speedrec[@]}" | "${tthsum[@]}" 3>"${resfile}.tthfinal" >>"$resfile"
98 size="$(wc -c <"$resfile")"
100 if [ "$size" -eq 0 ]; then
101 rm -f "$resfile" "${resfile}.info" "${resfile}.lock" "${resfile}.tthstate" "${resfile}.tthfinal"
105 if [ "$size" -lt "$filesize" ]; then
106 rm -f "${resfile}.lock" "${resfile}.tthfinal"
107 exit 1 # Exit code != 0 means restart transfer
110 tth="$(cat "${resfile}.tthfinal")"
111 if [ -z "$tth" ]; then unset tth; fi
113 rm -f "${resfile}.info" "${resfile}.lock" "${resfile}.tthstate" "${resfile}.tthfinal"
115 destdir="$HOME/dc/done"
117 newname="$destdir"/"$origname"
118 if [ -e "$newname" ]; then
119 newname="$(mktemp "${newname}XXXXXX")"
121 mv "$resfile" "$newname"
122 if [ -x $HOME/dc/complete ]; then
123 export "${!dcarg_@}" tth filesize
124 exec $HOME/dc/complete "$newname"