#!/bin/bash
cleaner() {
	local			\
		key		\
		faildepends	\
		taskid		\
		count
	for key in ${!failedtasks[@]}
	do
		taskid=${failedtasks[key]}
		gettaskinfos $taskid
		faildepends=$(
			Select tasks required_by <<-EOWhere
				id = $taskid
			EOWhere
		)
		(( failed+=faildepends ))
		(( ran+=faildepends ))
		Update tasks status 2 <<<"id = $taskid"
		rm -f "$cleanup"
		unset failedtasks[key]
	done
	for key in ${!finishedtasks[@]}
	do
		taskid=${finishedtasks[key]}
		gettaskinfos $taskid
		if [ -n "$destfilename" ]
		then
			echo						\
			"UPDATE	destination_files"			\
			"SET filename=\"${destfilename//\"/\"\"}\"," 	\
			"	last_change=("				\
			"		SELECT last_change"	 	\
			"		FROM source_files" 		\
			"		WHERE id=$sourcefileid"		\
			"	),"					\
			"	old_filename=("				\
			"		SELECT filename"		\
			"		FROM destination_files"		\
			"		WHERE id=$destfileid"		\
			"	),"					\
			"	rename_pattern=("			\
			"		SELECT rename_pattern"		\
			"		FROM tasks"			\
			"		WHERE id=$taskid"		\
			"	),"					\
			"	fat32compat=("				\
			"		SELECT fat32compat"		\
			"		FROM tasks"			\
			"		WHERE id=$taskid"		\
			"	),"					\
			"	ascii=("				\
			"		SELECT ascii"			\
			"		FROM tasks"			\
			"		WHERE id=$taskid"		\
			"	)"					\
			"WHERE  id=$destfileid;"			\
			>&3
		fi
		count=$(Select tasks required_by <<<"id = $taskid")
		if (( count == 0 ))
		then
			[[ -n "$cleanup" ]] && rm -f "$tempdir/$cleanup"
			Delete tasks <<<"id = $taskid"
			unset finishedtasks[key]
		else
			Update tasks status 4	\
				<<<"id = $taskid"
		fi
	done
}
