On Sun, Sep 06, 2015 at 08:34:12PM +0900, Osamu Aoki wrote:
> uupdate has a bit cryptic shell contruct:
>
> | UVERSION=`expr "$SVERSION" : '\(.*\)-[0-9a-zA-Z.+~]*$'` ||
> | {
> | echo "$PROGNAME: a native Debian package cannot take upstream updates"
> >&2
> | exit 1
> | }
>
> It looks like some expert coding style beyond I would come up but there
> is a catch.
>
> * If SVERSION=1-1, uupdate works.
> * If SVERSION=1, uupdate thinks it is a native Debian package (right).
> * If SVERSION=0-1, uupdate thinks it is a native Debian package (wrong).
>
> The reason is the return code of expr is:
> Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION
> is null or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an
> error occurred.
>
> If SVERSION=1, it is null and return 1. Good.
> If SVERSION=0-1, it is 0 and return 1. Not nice!
Good catch! Thanks.
> So we should ignore return code with
> || true
That's not necessary, since we aren't using the return value for
anything.
> and use
> test -z "$UVERSION"
> to decide if it is a native Debian package or not.
Ack.
Feel free to commit it.
Cheers,
--
James
GPG Key: 4096R/331BA3DB 2011-12-05 James McCoy <[email protected]>
_______________________________________________
devscripts-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel