Skip to content

Commit 9c73709

Browse files
author
Stephane Legrand
committed
Modify the way to find the PostgreSQL major and minor versions to be able to parse string like 'PostgreSQL 9.3beta1'
1 parent 06ea50f commit 9c73709

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

myocamlbuild.ml

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -548,18 +548,34 @@ let () =
548548
let pgsql_libdir = A ("-L" ^ input_line ic) in
549549
let major, minor =
550550
let line = input_line ic in
551-
let major_start = String.index line ' ' + 1 in
552-
let major_dot = String.index_from line major_start '.' in
553-
let major =
554-
String.sub line major_start (major_dot - major_start)
555-
in
556-
let minor_start = major_dot + 1 in
557-
let minor_dot = String.index_from line minor_start '.' in
558-
let minor =
559-
String.sub line minor_start (minor_dot - minor_start)
560-
in
561-
A ("-DPG_OCAML_MAJOR_VERSION=" ^ major),
562-
A ("-DPG_OCAML_MINOR_VERSION=" ^ minor)
551+
let search_version s =
552+
let version = ref "" in
553+
let stop = ref false in
554+
let check_car c =
555+
let ascii = Char.code c in
556+
if (ascii >= 48 && ascii <= 57 && not !stop) then
557+
version := !version ^ (String.make 1 c)
558+
else
559+
stop := true
560+
in
561+
let () = String.iter check_car s in
562+
!version
563+
in
564+
try
565+
let first_space = String.index line ' ' in
566+
let first_dot = String.index line '.' in
567+
let first_part = String.sub line (first_space + 1) (first_dot - first_space - 1) in
568+
let second_part = String.sub line (first_dot + 1) (String.length line - first_dot - 1) in
569+
let major = search_version first_part in
570+
let minor = search_version second_part in
571+
if (major <> "" && minor <> "") then (
572+
A ("-DPG_OCAML_MAJOR_VERSION=" ^ major),
573+
A ("-DPG_OCAML_MINOR_VERSION=" ^ minor)
574+
) else (
575+
failwith ("Unable to find versions from line '" ^ line ^ "' (cmd: '" ^ cmd ^ "'")
576+
)
577+
with
578+
_ -> failwith ("Unable to find versions from line '" ^ line ^ "' (cmd: '" ^ cmd ^ "'")
563579
in
564580
close_in ic;
565581
let pgsql_lib = A "-lpq" in

0 commit comments

Comments
 (0)