store-gc: xargs -d tampoco existe en busybox — el arreglo anterior imprimía «huérfanos ?»

El primer intento cambió `du --files0-from=-` (GNU) por `xargs -d '\n' du -sk`… y `-d` también es
extensión GNU. En la caja quedó «espacio: superados 0 · huérfanos ?». Va con `tr '\n' '\0' | xargs
-0`, que busybox sí tiene, y se probó la función suelta en las dos máquinas.

Lo que SÍ funcionó del intento anterior es el `?`: cuando el total no se puede calcular, la función
lo DICE en vez de imprimir 0. Un cero inventado habría dicho «no hay nada que ganar» justo cuando
había 150 huérfanos.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-09-17 15:19:59 +00:00
co-authored by Claude Opus 5
parent 4fe6046200
commit 1ca210a311
+5 -2
View File
@@ -159,10 +159,13 @@ espacio() { # du sobre una lista de dirs, tolerante a lista vacía
# ⚠ `du --files0-from=-` es de GNU coreutils y **busybox no lo tiene** (medido en la caja takana
# el 2026-09-17): devolvía vacío, así que el gc anunciaba «espacio: superados · huérfanos » y
# nadie podía saber si valía la pena correrlo. Un número que falta se lee como un número chico.
# `xargs du -sk` anda en los dos mundos; el total lo suma awk, en KiB, y se imprime humano.
# `xargs -0 du -sk` anda en los dos mundos; el total lo suma awk, en KiB, y se imprime humano.
# ⚠ `xargs -d '\n'` NO sirve: `-d` también es extensión GNU y busybox la rechaza — el primer
# intento de este arreglo imprimió «huérfanos ?» en la caja. El `?` es a propósito: un total que
# no se pudo calcular se DICE, no se muestra como 0.
[ -s "$1" ] || { echo "0"; return; }
sed "s|^|$STORE/|" "$1" \
| xargs -d '\n' du -sk 2>/dev/null \
| tr '\n' '\0' | xargs -0 du -sk 2>/dev/null \
| awk '{t+=$1} END {
if (t=="") {print "?"; exit}
if (t>1048576) printf "%.1fG\n", t/1048576;