Quoting Natanael Copa (nc...@alpinelinux.org): > - use '[ -x /path/prog ]' instead of 'type /path/prog' > - avoid getopt --longoptions > - add \ at after && and || when those are at end of line > - make sure condition expands to empty string if variable is empty >
looks good to me, thanks. Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > Signed-off-by: Natanael Copa <nc...@alpinelinux.org> > --- > I have tested it with 'lxc-create -t debian ...' with busybox as /bin/sh > > src/lxc/lxc-create.in | 70 > +++++++++++++++++++++++++++++---------------------- > 1 file changed, 40 insertions(+), 30 deletions(-) > > diff --git a/src/lxc/lxc-create.in b/src/lxc/lxc-create.in > index 101e489..e8056e9 100644 > --- a/src/lxc/lxc-create.in > +++ b/src/lxc/lxc-create.in > @@ -1,4 +1,4 @@ > -#!/bin/bash > +#!/bin/sh > > # > # lxc: linux Container library > @@ -54,16 +54,26 @@ help() { > echo " $(basename $0) -t ubuntu -h" >&2 > exit 0 > fi > - type ${templatedir}/lxc-$lxc_template 2>/dev/null > - if [ $? -eq 0 ]; then > + if [ -x ${templatedir}/lxc-$lxc_template ]; then > echo >&2 > echo "Template-specific options (TEMPLATE_OPTIONS):" >&2 > ${templatedir}/lxc-$lxc_template -h > fi > } > > -shortoptions='hn:f:t:B:' > -longoptions='help,name:,config:,template:,backingstore:,fstype:,dir:,lvname:,vgname:,fssize:' > +usage_err() { > + [ -n "$1" ] && echo "$1" >&2 > + usage > + exit 1 > +} > + > +optarg_check() { > + local opt="$1" optarg="$2" > + if [ -z "$optarg" ]; then > + usage_err "option '$opt' requires an argument" > + fi > +} > + > lxc_path=@LXCPATH@ > bindir=@BINDIR@ > templatedir=@LXCTEMPLATEDIR@ > @@ -73,68 +83,69 @@ fssize=500M > vgname=lxc > custom_rootfs="" > > -getopt=$(getopt -o $shortoptions --longoptions $longoptions -- "$@") > -if [ $? != 0 ]; then > - usage > - exit 1; > -fi > - > -eval set -- "$getopt" > - > -while true; do > - case "$1" in > +while [ $# -gt 0 ]; do > + local opt="$1" > + shift > + case "$opt" in > -h|--help) > help > exit 1 > ;; > -n|--name) > - shift > + optarg_check $opt "$1" > lxc_name=$1 > shift > ;; > -f|--config) > - shift > + optarg_check $opt "$1" > lxc_config=$1 > shift > ;; > -t|--template) > - shift > + optarg_check $opt "$1" > lxc_template=$1 > shift > ;; > -B|--backingstore) > - shift > + optarg_check $opt "$1" > backingstore=$1 > shift > ;; > --dir) > - shift > + optarg_check $opt "$1" > custom_rootfs=$1 > shift > ;; > --lvname) > - shift > + optarg_check $opt "$1" > lvname=$1 > shift > ;; > --vgname) > - shift > + optarg_check $opt "$1" > vgname=$1 > shift > ;; > --fstype) > - shift > + optarg_check $opt "$1" > fstype=$1 > shift > ;; > --fssize) > - shift > + optarg_check $opt "$1" > fssize=$1 > shift > ;; > --) > shift > break;; > + -?) > + usage_err "unknown option '$opt'" > + ;; > + -*) > + # split opts -abc into -a -b -c > + set -- $(echo "${opt#-}" | sed 's/\(.\)/ -\1/g') "$@" > + ;; > *) > usage > exit 1 > @@ -200,7 +211,7 @@ rootfs="$lxc_path/$lxc_name/rootfs" > > if [ "$backingstore" = "_unset" -o "$backingstore" = "btrfs" ]; then > # if no backing store was given, then see if btrfs would work > - if which btrfs >/dev/null 2>&1 && > + if which btrfs >/dev/null 2>&1 && \ > btrfs filesystem df "$lxc_path/" >/dev/null 2>&1; then > backingstore="btrfs" > else > @@ -246,10 +257,10 @@ elif [ "$backingstore" = "btrfs" ]; then > fi > > cleanup() { > - if [ $backingstore = "lvm" ]; then > + if [ "$backingstore" = "lvm" ]; then > umount $rootfs > lvremove -f $rootdev > - elif [ $backingstore = "btrfs" ]; then > + elif [ "$backingstore" = "btrfs" ]; then > btrfs subvolume delete "$rootfs" > fi > ${bindir}/lxc-destroy -n $lxc_name > @@ -299,8 +310,7 @@ if [ ! -z $lxc_template ]; then > template_path=${templatedir}/lxc-$lxc_template > fi > > - type $template_path 2>/dev/null > - if [ $? -ne 0 ]; then > + if ! [ -x "$template_path" ]; then > echo "$(basename $0): unknown template '$lxc_template'" >&2 > cleanup > fi > @@ -314,7 +324,7 @@ if [ ! -z $lxc_template ]; then > echo "'$lxc_template' template installed" > fi > > -if [ $backingstore = "lvm" ]; then > +if [ "$backingstore" = "lvm" ]; then > echo "Unmounting LVM" > umount $rootfs > > -- > 1.8.0 > > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > Lxc-devel mailing list > Lxc-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/lxc-devel ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel