correct application of playlists rules

This commit is contained in:
Gabriel Radureau
2025-10-16 17:18:58 +02:00
parent d2e2028610
commit 78313ffbef
17 changed files with 1098 additions and 247 deletions

View File

@@ -0,0 +1,50 @@
# Fonction pour ajouter une ligne à un fichier avec verrouillage (bloquant + timeout + gestion des signaux)
append_with_lock() {
local line="$1"
local file="$2"
local lock_dir="/tmp/dancevideos_moved_files.lock"
local timeout=30 # Timeout en secondes (ajustable)
local start_time=$(date +%s)
local got_lock=false
# Fonction de nettoyage du verrou (appelée en cas de signal ou de sortie)
cleanup_lock() {
if [ -d "$lock_dir" ]; then
rmdir "$lock_dir" 2>/dev/null
fi
}
# Piège les signaux d'interruption pour libérer le verrou
trap cleanup_lock INT TERM EXIT
# Attendre le verrou avec timeout
while true; do
# Vérifier le timeout
local current_time=$(date +%s)
if [ $((current_time - start_time)) -ge $timeout ]; then
echo "Timeout atteint pour l'obtention du verrou sur $file" >&2
trap - INT TERM EXIT # Désactive le piège pour éviter un nettoyage double
return 1
fi
# Tentative de verrouillage
if mkdir "$lock_dir" 2>/dev/null; then
got_lock=true
break
else
sleep 0.1 # Attendre avant de réessayer
fi
done
# Écriture dans le fichier (si verrou obtenu)
if $got_lock; then
set -x
echo "$line" >> "$file"
echo "$line" >> "$file" # write them twice because of bug where a line is skipped
set +x
# Libérer le verrou
rmdir "$lock_dir"
trap - INT TERM EXIT # Désactive le piège après utilisation
fi
}
export -f append_with_lock