29 lines
730 B
Bash
29 lines
730 B
Bash
#!/usr/bin/env bash
|
|
# portable.sh — POSIX-safe helper functions for BSD/GNU shell portability
|
|
#
|
|
# Source this file in scripts that need cross-platform variants of:
|
|
# - stat(1) — BSD uses -f, GNU uses -c
|
|
#
|
|
# Usage:
|
|
# source "$(dirname "${BASH_SOURCE[0]}")/portable.sh"
|
|
# portable_stat_perms "$file" # -> octal permissions string, e.g. "755"
|
|
#
|
|
# Supported platforms:
|
|
# - macOS (BSD stat)
|
|
# - Linux/Ubuntu (GNU stat)
|
|
|
|
# portable_stat_perms <path>
|
|
# Outputs the file's permission bits as an octal string (e.g. "755").
|
|
# Exits non-zero if stat fails.
|
|
portable_stat_perms() {
|
|
local path="$1"
|
|
case "$(uname -s)" in
|
|
Darwin)
|
|
stat -f '%Lp' "$path"
|
|
;;
|
|
*)
|
|
stat -c '%a' "$path"
|
|
;;
|
|
esac
|
|
}
|