ste

Једноставни уређивач табела
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување c7b55f201d1d2952e865a904ae388250a6307423
родитељ baf3c21db03eb16cc5fd0691421ae56c9e58201e
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Thu, 17 Aug 2023 11:39:42 +0200

Avoid stat

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
MINSTALL | 2+-
Mdate.do | 9++++++---
Mste.in | 4++--
Mversion.do | 9++++++---
измењених датотека: 4, додавања: 15(+), брисања: 9(-)

diff --git a/INSTALL b/INSTALL @@ -3,7 +3,7 @@ Prerequisites * gzip * Standard utilities: awk, cat, cp, cut, diff, getopts, grep, head, mv, printf, - rm, sed, stat, tail, touch, trap, wc + rm, sed, tail, touch, trap, wc * table[1] * vipe from moreutils[2] * Any text editor set via EDITOR environment variable diff --git a/date.do b/date.do @@ -1,12 +1,15 @@ FALLBACKDATE=${FALLBACKDATE:-unknown} -user=$(stat -c %U .) -e_user=$(id -un) +user=$(unalias ls >/dev/null 2>&1 || true; \ + LC_ALL=C command ls -nd . | LC_ALL=C awk '{print $3}') +e_user=$(id -u) +user_s=$(LC_ALL=C awk 'BEGIN{FS=":"}{if ($3=="'$user'") { print $1}}' \ + </etc/passwd) if [ -d .git ] && command -v git >/dev/null 2>&1; then if [ "$e_user" = "$user" ]; then env LC_ALL=C git log --format=format:%cd \ --date=format:"%B %d, %Y" -1 @ >$3 else - su "${user}" -c 'env LC_ALL=C git log --format=format:%cd '\ + su "${user_s}" -c 'env LC_ALL=C git log --format=format:%cd '\ '--date=format:"%B %d, %Y" -1 @' >$3 fi echo >>$3 diff --git a/ste.in b/ste.in @@ -121,10 +121,10 @@ if [ $# -lt 1 ]; then exit 1 fi -if ! stat "$file" >/dev/null 2>&1; then +if [ ! -r "$file" >/dev/null 2>&1 ]; then ${insprog} "$file" fi -if ! stat "$file" >/dev/null 2>&1; then +if [ ! -r "$file" >/dev/null 2>&1 ]; then error "File does not exist: '%s'" "$file" exit 1 fi diff --git a/version.do b/version.do @@ -1,11 +1,14 @@ FALLBACKVER=${FALLBACKVER:-unknown} -user=$(stat -c %U .) -e_user=$(id -un) +user=$(unalias ls >/dev/null 2>&1 || true; \ + LC_ALL=C command ls -nd . | LC_ALL=C awk '{print $3}') +e_user=$(id -u) +user_s=$(LC_ALL=C awk 'BEGIN{FS=":"}{if ($3=="'$user'") { print $1}}' \ + </etc/passwd) if [ -d .git ] && command -v git >/dev/null 2>&1; then if [ "$e_user" = "$user" ]; then git describe 2>/dev/null | sed 's/^v//' >$3 else - su "${user}" -c 'git describe' 2>/dev/null | sed 's/^v//' >$3 + su "${user_s}" -c 'git describe' 2>/dev/null | sed 's/^v//' >$3 fi else echo $FALLBACKVER >$3