Image loading error now just warns.
authorphillbush <phillbush@cock.li>
Wed, 12 Aug 2020 23:49:55 +0000 (20:49 -0300)
committerphillbush <phillbush@cock.li>
Wed, 12 Aug 2020 23:49:55 +0000 (20:49 -0300)
Rather than exiting with error.

xmenu.c

diff --git a/xmenu.c b/xmenu.c
index d6b2cde..f910d0c 100644 (file)
--- a/xmenu.c
+++ b/xmenu.c
@@ -574,8 +574,6 @@ parsestdin(void)
                        file = label + 4;
                        label = strtok(NULL, "\t\n");
                }
                        file = label + 4;
                        label = strtok(NULL, "\t\n");
                }
-               if (file && *file == '\0')
-                       errx(1, "blank icon filename");
 
                /* get the output */
                output = strtok(NULL, "\n");
 
                /* get the output */
                output = strtok(NULL, "\n");
@@ -897,7 +895,10 @@ loadicon(const char *file)
        int imgsize;
 
        icon = imlib_load_image_with_error_return(file, &errcode);
        int imgsize;
 
        icon = imlib_load_image_with_error_return(file, &errcode);
-       if (icon == NULL) {
+       if (*file == '\0') {
+               warnx("could not load icon (file name is blank)");
+               return NULL;
+       } else if (icon == NULL) {
                switch (errcode) {
                case IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST:
                        errstr = "file does not exist";
                switch (errcode) {
                case IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST:
                        errstr = "file does not exist";
@@ -933,7 +934,8 @@ loadicon(const char *file)
                        errstr = "unknown error";
                        break;
                }
                        errstr = "unknown error";
                        break;
                }
-               errx(1, "could not load icon (%s): %s", errstr, file);
+               warnx("could not load icon (%s): %s", errstr, file);
+               return NULL;
        }
 
        imlib_context_set_image(icon);
        }
 
        imlib_context_set_image(icon);
@@ -1012,9 +1014,10 @@ drawitems(struct Menu *menu)
                        }
 
                        /* draw icon */
                        }
 
                        /* draw icon */
-                       if (item->file != NULL && !iflag) {
+                       if (item->file && !iflag)
                                item->icon = loadicon(item->file);
 
                                item->icon = loadicon(item->file);
 
+                       if (item->icon) {
                                imlib_context_set_image(item->icon);
                                imlib_context_set_drawable(item->sel);
                                imlib_render_image_on_drawable(config.horzpadding, config.iconpadding);
                                imlib_context_set_image(item->icon);
                                imlib_context_set_drawable(item->sel);
                                imlib_render_image_on_drawable(config.horzpadding, config.iconpadding);