X-Git-Url: http://dolda2000.com/gitweb/?p=utils.git;a=blobdiff_plain;f=sztest;h=9ca4e1f41dca34cc2e9954617023c28c93c18266;hp=fd7505ca6527afdcd5f31a26701dbdc44e3cb794;hb=refs%2Fheads%2Fmaster;hpb=1c2fdcc245551183bbddfaa80bd9328062fc4ed1 diff --git a/sztest b/sztest index fd7505c..9ca4e1f 100755 --- a/sztest +++ b/sztest @@ -1,21 +1,40 @@ -#!/bin/sh +#!/bin/bash -if [ $# -lt 1 ]; then - echo "usage: sztest [-H HEADER] TYPE [CCFLAGS...]" >&2 - exit 1 -fi +usage() { + echo "usage: sztest [-hab] [-H SYS-HEADER] [-L LOCAL-HEADER] TYPE [CCFLAGS...]" +} -headers= +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") - headers="$headers $1" + 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)" @@ -26,18 +45,33 @@ cat >"$file.c" < #include EOF -for header in $headers; do +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" <