From 0f52325ac08aa259b5254fb66748833c0a21cfcc Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Mon, 8 Apr 2013 01:54:16 +0200 Subject: [PATCH] move files copy --- atom | 74 +---------------------- lib/copy/copyFiles_action | 73 ++++++++++++++++++++++ lib/copy/{copyFile => copyFiles_matching} | 2 +- 3 files changed, 76 insertions(+), 73 deletions(-) create mode 100644 lib/copy/copyFiles_action rename lib/copy/{copyFile => copyFiles_matching} (97%) diff --git a/atom b/atom index 4023d92..d3c0dd2 100755 --- a/atom +++ b/atom @@ -518,7 +518,7 @@ do getDestFile if (( copied )) then - copyFile + copyFiles_matching else encodeFile::${destinationformat[$destination]} fi @@ -790,77 +790,7 @@ do unset count done -echo ' - SELECT - source_files.filename, - source_files.last_change, - destinations.id, - destination_files.id - FROM source_files - INNER JOIN destination_files - ON source_files.id - = destination_files.source_file_id - INNER JOIN destinations - ON destination_files.destination_id=destinations.id - INNER JOIN mime_type_actions - ON mime_type_actions.id = source_files.mime_type - WHERE CAST(destination_files.last_change AS TEXT) - <> CAST(source_files.last_change AS TEXT) - AND mime_type_actions.destination_id = destinations.id - AND mime_type_actions.action = 2; - - SELECT "AtOM:NoMoreFiles";' >&3 -read -u4 line -while ! [[ $line = AtOM:NoMoreFiles ]] -do - copyfiles+=("$line") - read -u4 line -done - -for copyfile in "${copyfiles[@]}" -do - sourcefilename=${copyfile%%|*} - rest="${copyfile#*|}|" - lastchange=${rest%%|*} - rest=${rest#*|} - destinationid=${rest%%|*} - rest=${rest#*|} - destfileid=${rest%%|*} - rest=${rest#*|} - echo 'SELECT IFNULL( ( - SELECT destination_files.filename - FROM destination_files - INNER JOIN source_files - ON destination_files.source_file_id=source_files.id - INNER JOIN mime_type_actions - ON - mime_type_actions.id=source_files.mime_type - INNER JOIN destinations - ON destinations.id=destination_files.destination_id - WHERE destinations.id = '$destinationid' - AND source_files.filename LIKE "'"${sourcefilename%/*}"'/%" - AND mime_type_actions.action = 1 - LIMIT 1 - ),"AtOM:NotFound"); - '>&3 - read -u4 filename - if [[ $filename != AtOM:NotFound ]] - then - destdir=${filename%/*} - if cp -al "$sourcepath/$sourcefilename" "$destdir" 2>/dev/null\ - || cp -a "$sourcepath/$sourcefilename" "$destdir" - then - Update destination_files \ - filename "$destdir/${sourcefilename##*/}"\ - rename_pattern "${destinationrenamepath[$destination]}/${destinationrename[$destination]}:${destinationfat32compat["$destination"]}"\ - <<-EOWhere - id = $destfileid - last_change = $lastchange - EOWhere - progressSpin - fi - fi -done +copyFiles_action echo ' SELECT id, diff --git a/lib/copy/copyFiles_action b/lib/copy/copyFiles_action new file mode 100644 index 0000000..5124b42 --- /dev/null +++ b/lib/copy/copyFiles_action @@ -0,0 +1,73 @@ +copyFiles_action() { + echo ' + SELECT + source_files.filename, + source_files.last_change, + destinations.id, + destination_files.id + FROM source_files + INNER JOIN destination_files + ON source_files.id + = destination_files.source_file_id + INNER JOIN destinations + ON destination_files.destination_id=destinations.id + INNER JOIN mime_type_actions + ON mime_type_actions.id = source_files.mime_type + WHERE CAST(destination_files.last_change AS TEXT) + <> CAST(source_files.last_change AS TEXT) + AND mime_type_actions.destination_id = destinations.id + AND mime_type_actions.action = 2; + + SELECT "AtOM:NoMoreFiles";' >&3 + read -u4 line + while ! [[ $line = AtOM:NoMoreFiles ]] + do + copyfiles+=("$line") + read -u4 line + done + + for copyfile in "${copyfiles[@]}" + do + sourcefilename=${copyfile%%|*} + rest="${copyfile#*|}|" + lastchange=${rest%%|*} + rest=${rest#*|} + destinationid=${rest%%|*} + rest=${rest#*|} + destfileid=${rest%%|*} + rest=${rest#*|} + echo 'SELECT IFNULL( ( + SELECT destination_files.filename + FROM destination_files + INNER JOIN source_files + ON destination_files.source_file_id=source_files.id + INNER JOIN mime_type_actions + ON + mime_type_actions.id=source_files.mime_type + INNER JOIN destinations + ON destinations.id=destination_files.destination_id + WHERE destinations.id = '$destinationid' + AND source_files.filename LIKE "'"${sourcefilename%/*}"'/%" + AND mime_type_actions.action = 1 + LIMIT 1 + ),"AtOM:NotFound"); + '>&3 + read -u4 filename + if [[ $filename != AtOM:NotFound ]] + then + destdir=${filename%/*} + if cp -al "$sourcepath/$sourcefilename" "$destdir" 2>/dev/null\ + || cp -a "$sourcepath/$sourcefilename" "$destdir" + then + Update destination_files \ + filename "$destdir/${sourcefilename##*/}"\ + rename_pattern "${destinationrenamepath[$destination]}/${destinationrename[$destination]}:${destinationfat32compat["$destination"]}"\ + <<-EOWhere + id = $destfileid + last_change = $lastchange + EOWhere + progressSpin + fi + fi + done +} diff --git a/lib/copy/copyFile b/lib/copy/copyFiles_matching similarity index 97% rename from lib/copy/copyFile rename to lib/copy/copyFiles_matching index 9e7b784..194fc88 100644 --- a/lib/copy/copyFile +++ b/lib/copy/copyFiles_matching @@ -1,4 +1,4 @@ -copyFile() { +copyFiles_matching() { extension="${filename##*.}" cp -al \ "$sourcepath/$filename" \