#!/bin/sh
# script-friendly df

factor=1024  # for the default (GiB); use -H for GB

optstring="H"
while getopts "$optstring" opt; do
  case $opt in
    h) factor=1024 ;;  # default (GiB)
    H) factor=1000 ;;  # decimal (GB)
  esac
done
shift $((OPTIND-1))

target=${1:-.}

if free_bytes=$(stat -f --format="%a*%S" "$target" 2>/dev/null); then
    # GNU stat (Linux)
    :
elif free_bytes=$(stat -f "%a*%S" "$target" 2>/dev/null); then
    # BSD/macOS stat
    # XXX untested
    :
else
    # BusyBox stat fallback
    free_bytes=$(stat -f -c "%a*%S" "$target")
fi

free_gb=$((free_bytes / factor / factor / factor))
echo "$free_gb"
