#!/bin/bash usage() { echo "usage: sztest [-hab] [-H SYS-HEADER] [-L LOCAL-HEADER] TYPE [CCFLAGS...]" } mode=size sheaders= lheaders= while [ "${1:0:1}" = "-" ]; do opt="$1" shift case "$opt" in "-h") usage exit 0 ;; "-a") mode=align ;; "-b") mode=both ;; "-H") sheaders="$sheaders $1" shift ;; "-L") lheaders="$lheaders $1" shift ;; esac done if [ $# -lt 1 ]; then usage >&2 exit 1 fi type="$1" shift file="$(mktemp /tmp/sztestXXXXXX)" cat >"$file.c" < #include #include #include #include EOF for header in $sheaders; do echo "#include <$header>" >>"$file.c" done for header in $lheaders; do echo "#include \"$header\"" >>"$file.c" done cat >>"$file.c" <>"$file.c" ;; align) echo " printf(\"%zi\\n\", __alignof__($type));" >>"$file.c" ;; both) echo " printf(\"%zi %zi\\n\", sizeof($type), __alignof__($type));" >>"$file.c" ;; esac cat >>"$file.c" <