X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fapp.cpp;h=353557e7dc5209d0ae6dce3bdbb0a2ffe6c06490;hb=75524b385a2b3adaa5feabf547b80d412f3a1c56;hp=8c929fe724ffe480a120177b76ca3e5b04607f2e;hpb=6d5be0fb38f93a758127491f6c81de829554bf1d;p=staging%2Fwindowmanager.git diff --git a/src/app.cpp b/src/app.cpp index 8c929fe..353557e 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -59,12 +59,24 @@ result layout_from_json(json const &j) { return Ok(l); } +result file_to_json(char const *filename) { + std::ifstream i(filename); + if (i.fail()) { + return Err("Could not open config file"); + } + json j; + i >> j; + return Ok(j); +} + struct result load_layout(char const *filename) { DB("loading layout from " << filename); - json jlayouts; - std::ifstream i(filename); - i >> jlayouts; + auto j = file_to_json(filename); + if (j.is_err()) { + return Err(j.unwrap_err()); + } + json jlayouts = j.unwrap(); auto layouts = layouts_type(); layouts.reserve(jlayouts.size()); @@ -78,9 +90,11 @@ struct result load_layer_ids(char const *filename) { DB("loading IDs from " << filename); - json jids; - std::ifstream i(filename); - i >> jids; + auto j = file_to_json(filename); + if (j.is_err()) { + return Err(j.unwrap_err()); + } + json jids = j.unwrap(); return to_surface_id_to_layer_map(jids); }