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
#include <Ecore_Getopt.h>
#include <locale.h>
#include <fnmatch.h>
+#include <unistd.h>
static int _log_dom;
#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
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",
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)
{