On Tue, Sep 19, 2017 at 04:28:12PM +0200, Pino Toscano wrote:
On Wednesday, 9 August 2017 19:23:43 CEST Richard W.M. Jones wrote:
> +let parse_version_from_major_minor str data =
> + if verbose () then
> + eprintf "parse_version_from_major_minor: parsing '%s'\n%!"
str;
> +
> + if PCRE.matches re_major_minor str ||
> + PCRE.matches re_major_no_minor str then (
> + let major =
> + try Some (int_of_string (PCRE.sub 1))
> + with Not_found | Invalid_argument _ | Failure _ -> None in
> + let minor =
> + try Some (int_of_string (PCRE.sub 2))
> + with Not_found | Invalid_argument _ | Failure _ -> None in
> + match major, minor with
> + | None, None
> + | None, Some _ -> ()
> + | Some major, None -> data.version <- Some (major, 0)
> + | Some major, Some minor -> data.version <- Some (major, minor)
> + )
IMHO this is more complex than needed:
if PCRE.matches re_major_minor str (
let major = int_of_string (PCRE.sub 1) in
let minor = int_of_string (PCRE.sub 2) in
data.version <- Some (major, minor)
)
else if PCRE.matches re_major_no_minor str then (
let major = int_of_string (PCRE.sub 1) in
data.version <- Some (major, 0)
)
After all, the regexps should already ensure the captures are
available, and that they caught integer values.
I'll send separate patches to fix/simplify these cases.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW