From daabb017dc0ef383c1d3c6cfea0eb8211508b1fa Mon Sep 17 00:00:00 2001 From: Ulrich Eckhardt Date: Wed, 15 Jun 2011 09:38:08 +0000 Subject: [PATCH] From: Ulrich Eckhardt Subject: [E-devel] Provide sensible errors for edje utilities If you start edje_player or edje_inspector with a path to a file that doesn't exist you get a bogus error message saying that the file doesn't contain any groups. The attached patch uses access() to check if the program can read the file, giving a sensible error message if not. I have checked the other utilities there, too, and they work, with the exception of edje_external_inspector. I'm not sure how this one works at all, but it seems not to take a file but a list of modules, maybe someone with greater insight can take a look at that. Going through things installed under bin, I'll take a look if those behave properly and create patches for those, too, if this one is okay. SVN revision: 60338 --- legacy/edje/src/bin/edje_inspector.c | 10 ++++++++++ legacy/edje/src/bin/edje_player.c | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/legacy/edje/src/bin/edje_inspector.c b/legacy/edje/src/bin/edje_inspector.c index f422ebad60..ed3baafa12 100644 --- a/legacy/edje/src/bin/edje_inspector.c +++ b/legacy/edje/src/bin/edje_inspector.c @@ -11,6 +11,7 @@ #include #include #include +#include static int _log_dom; #define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__) @@ -1577,6 +1578,15 @@ main(int argc, char **argv) file = argv[arg_index]; + // check if the file is accessible + if (access(file, R_OK) == -1) + { + int e = errno; + ERR("File '%s' not accessible, error %d (%s).\n", + file, e, strerror(e)); + ret = 1; + goto error_getopt; + } DBG("mode=%s, detail=%d(%s), group=%s, part=%s, program=%s, api-only=" FMT_UCHAR ", api-fix=" FMT_UCHAR ", machine=" FMT_UCHAR ", file=%s", diff --git a/legacy/edje/src/bin/edje_player.c b/legacy/edje/src/bin/edje_player.c index 1e861cc37f..4d0c0a3ecf 100644 --- a/legacy/edje/src/bin/edje_player.c +++ b/legacy/edje/src/bin/edje_player.c @@ -674,6 +674,15 @@ int main(int argc, char **argv) ecore_app_args_set(argc, (const char **)argv); edje_scale_set(opts.scale); + // check if the given edj file is there + if (access(argv[args], R_OK) == -1) + { + int e = errno; + fprintf(stderr, "ERROR: file '%s' not accessible, error %d (%s).\n", + argv[args], e, strerror(e)); + goto end; + } + opts.file = argv[args]; if (opts.list_groups) {