summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config_tree.ml14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/config_tree.ml b/src/config_tree.ml
index c816d65..31b6f0f 100644
--- a/src/config_tree.ml
+++ b/src/config_tree.ml
@@ -144,9 +144,17 @@ struct
name]
|> S.concat ""
- let render_values = function
- | [v] -> PF.sprintf "\"%s\";" v
- | vs -> S.concat "; " vs |> PF.sprintf "[%s];"
+ let render_values values =
+ let quote_if_needed s =
+ try
+ let _ = Pcre.exec ~pat:"[\\s;{}#\\[\\]\"\']" s in
+ Printf.sprintf "\"%s\"" s
+ with Not_found -> s
+ in
+ match values with
+ | [] -> raise (Failure "Internal error: get_values got an empty list")
+ | [v] -> PF.sprintf "%s;" (quote_if_needed v)
+ | _ as vs -> S.concat "; " (List.map quote_if_needed vs) |> PF.sprintf "[%s];"
let render_inner_and_outer indents inner outer =
if inner = ""