Allow GLOB_NOMATCH, which also occurs if the leading dir does not exist.
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Thu, 17 Dec 2009 23:26:31 +0000 (23:26 +0000)
committergraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Thu, 17 Dec 2009 23:26:31 +0000 (23:26 +0000)
This fixes OE's do_rootfs from failing without an error message.

git-svn-id: http://opkg.googlecode.com/svn/trunk@498 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

libopkg/opkg_conf.c

index a29666c0ede1343a4863cdad58a527eb4f2c664c..d0d0329c14330a7e1f3f9c8bb7db544ced2c4ae7 100644 (file)
@@ -392,10 +392,21 @@ root_filename_alloc(char *filename)
        return root_filename;
 }
 
+static int
+glob_errfunc(const char *epath, int eerrno)
+{
+       if (eerrno == ENOENT)
+               /* If leading dir does not exist, we get GLOB_NOMATCH. */
+               return 0;
+
+       opkg_msg(ERROR, "glob failed for %s: %s\n", epath, strerror(eerrno));
+       return 0;
+}
+
 int
 opkg_conf_init(void)
 {
-       int i;
+       int i, glob_ret;
        char *tmp, *tmp_dir_base, **tmp_val;
        nv_pair_list_t tmp_dest_nv_pair_list;
        glob_t globbuf;
@@ -436,7 +447,8 @@ opkg_conf_init(void)
        }
 
        memset(&globbuf, 0, sizeof(globbuf));
-       if (glob(etc_opkg_conf_pattern, 0, NULL, &globbuf)) {
+       glob_ret = glob(etc_opkg_conf_pattern, 0, glob_errfunc, &globbuf);
+       if (glob_ret && glob_ret != GLOB_NOMATCH) {
                free(etc_opkg_conf_pattern);
                globfree(&globbuf);
                goto err1;