X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fhelpfile.c;h=38a61ec6877d03c8e511e4bba9ec2f26a9a4f632;hb=51982054ac8f75d5c0ff61a6086c0163118a51c4;hp=27fc614b16564b9c51acacd6b812c16d0745f135;hpb=ecbcfca707fefbce71e7ea23f2148e6b08df5d6a;p=srvx.git diff --git a/src/helpfile.c b/src/helpfile.c index 27fc614..38a61ec 100644 --- a/src/helpfile.c +++ b/src/helpfile.c @@ -171,8 +171,10 @@ static struct language *language_read(const char *name) /* Open the directory stream; if we can't, fail. */ snprintf(filename, sizeof(filename), "languages/%s", name); - if (!(dir = opendir(filename))) + if (!(dir = opendir(filename))) { + log_module(MAIN_LOG, LOG_ERROR, "Unable to open language directory languages/%s: %s", name, strerror(errno)); return NULL; + } if (!(lang = dict_find(languages, name, NULL))) lang = language_alloc(name); @@ -222,28 +224,25 @@ static struct language *language_read(const char *name) static void language_read_list(void) { + struct stat sbuf; struct dirent *dirent; DIR *dir; + char namebuf[MAXLEN]; if (!(dir = opendir("languages"))) return; while ((dirent = readdir(dir))) { if (dirent->d_name[0] == '.') continue; -#ifdef HAVE_DIRENT_D_TYPE - if (dirent->d_type != DT_DIR) + snprintf(namebuf, sizeof(namebuf), "languages/%s", dirent->d_name); + if (stat(namebuf, &sbuf) < 0) { + log_module(MAIN_LOG, LOG_INFO, "Skipping language entry '%s' (unable to stat).", dirent->d_name); + continue; + } + if (!S_ISDIR(sbuf.st_mode)) { + log_module(MAIN_LOG, LOG_INFO, "Skipping language entry '%s' (not directory).", dirent->d_name); continue; -#else - { - char namebuf[MAXLEN]; - struct stat sbuf; - snprintf(namebuf, sizeof(namebuf), "languages/%s", dirent->d_name); - if (stat(namebuf, &sbuf) < 0) - continue; - if (!S_ISDIR(sbuf.st_mode)) - continue; } -#endif language_alloc(dirent->d_name); } closedir(dir);