Web lists-archives.com

Re: [PATCH v5 19/40] lib-httpd: add upload.sh




Christian Couder <christian.couder@xxxxxxxxx> writes:

> +OLDIFS="$IFS"
> +IFS='&'
> +set -- $QUERY_STRING
> +IFS="$OLDIFS"
> +
> +while test $# -gt 0
> +do
> +    key=${1%=*}
> +    val=${1#*=}

When you see that ${V%X*} and ${V#*X} appear in a pair for the same
variable V and same delimiter X, it almost always indicates a bug
waiting to happen.

What's the definition of "key" here?  A member of known set of short
tokens, all of which consists only of alphanumeric, or something?
Even if you do not currently plan to deal with a value with '=' in
it, it may be prudent to double '%' above (and do not double '#').

Style: indent your shell script with tabs.

> +
> +    case "$key" in
> +	"sha1") sha1="$val" ;;
> +	"type") type="$val" ;;
> +	"size") size="$val" ;;
> +	"delete") delete=1 ;;
> +	*) echo >&2 "unknown key '$key'" ;;
> +    esac

Indent your shell script with tabs; case/esac and the labels used
for each case arms all align at the same column.

> +
> +    shift
> +done
> +
> +case "$REQUEST_METHOD" in
> +  POST)

Likewise.

> +    if test "$delete" = "1"
> +    then
> +	rm -f "$FILES_DIR/$sha1-$size-$type"
> +    else
> +	mkdir -p "$FILES_DIR"
> +	cat >"$FILES_DIR/$sha1-$size-$type"
> +    fi
> +
> +    echo 'Status: 204 No Content'
> +    echo
> +    ;;
> +
> +  *)
> +    echo 'Status: 405 Method Not Allowed'
> +    echo
> +esac