X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=handler.c;h=8608a9751ea9f5705b182b762cb0a9b5b8090852;hb=c1f6a82c21d6fdb30af178f3b5604a202ab1b26c;hp=0c4627f1ca549429c63a3e3809a47d5bf4429b7e;hpb=cf9033dd5ac75cb3c8c2fd55011f3ec5cd4c2371;p=oweals%2Fnetifd.git diff --git a/handler.c b/handler.c index 0c4627f..8608a97 100644 --- a/handler.c +++ b/handler.c @@ -34,6 +34,9 @@ netifd_dir_push(int fd) static void netifd_dir_pop(int prev_fd) { + if (prev_fd < 0) + return; + if (fchdir(prev_fd)) {} close(prev_fd); } @@ -105,7 +108,7 @@ netifd_parse_script_handler(const char *name, script_dump_cb cb) tok = json_tokener_new(); obj = json_tokener_parse_ex(tok, start, len); - if (!is_error(obj)) { + if (obj) { netifd_init_script_handler(name, obj, cb); json_object_put(obj); json_tokener_free(tok); @@ -128,8 +131,10 @@ void netifd_init_script_handlers(int dir_fd, script_dump_cb cb) int i, prev_fd; prev_fd = netifd_dir_push(dir_fd); - if (glob("./*.sh", 0, NULL, &g)) + if (glob("./*.sh", 0, NULL, &g)) { + netifd_dir_pop(prev_fd); return; + } for (i = 0; i < g.gl_pathc; i++) netifd_parse_script_handler(g.gl_pathv[i], cb);