... | ... |
@@ -2,6 +2,19 @@ |
2 | 2 |
|
3 | 3 |
set -e |
4 | 4 |
|
5 |
+# on n'autorise qu'une seule exécution à la fois |
|
6 |
+process_token=$(mktemp --dry-run /dev/shm/XXXXXXXXXXXXXXXX) |
|
7 |
+token_file="$process_token.${0##*/}" |
|
8 |
+touch $token_file |
|
9 |
+while true; do |
|
10 |
+ if ls -1rt /dev/shm/*."${0##*/}" | head -1 | grep -q "^$token_file$"; then |
|
11 |
+ # c'est notre tour |
|
12 |
+ break |
|
13 |
+ else |
|
14 |
+ sleep 5 |
|
15 |
+ fi |
|
16 |
+done |
|
17 |
+ |
|
5 | 18 |
for tool in sqlite3 getopt mktemp w3m jq; do |
6 | 19 |
which $tool > /dev/null 2>&1 || { |
7 | 20 |
echo missing tool $tool |
... | ... |
@@ -413,7 +426,7 @@ function save_database () { |
413 | 426 |
else |
414 | 427 |
echo "je ne peux rien faire avec $database !" |
415 | 428 |
fi |
416 |
- rm -f "$in_ram_database" "$tempfile" |
|
429 |
+ rm -f "$in_ram_database" "$tempfile" "$token_file" |
|
417 | 430 |
} |
418 | 431 |
|
419 | 432 |
function dernier_scrutin_public () { |
... | ... |
@@ -572,7 +585,7 @@ done |
572 | 585 |
|
573 | 586 |
test "$options_error" = $true_flag && exit 1 |
574 | 587 |
|
575 |
-in_ram_database=$(mktemp --dry-run /dev/shm/XXXXXXXXXXXX) |
|
588 |
+in_ram_database=$process_token.db |
|
576 | 589 |
if test -r "$database"; then |
577 | 590 |
cp "$database" "$in_ram_database" |
578 | 591 |
else |