Module Name: src Committed By: martin Date: Wed Aug 6 09:11:46 UTC 2014
Modified Files: src/usr.sbin/sysinst: main.c Log Message: Make sysinst use the catalog files installed in /usr/share/sysinst (if available), fall back to . if not, or use build-in english otherwise. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/sysinst/main.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/sysinst/main.c diff -u src/usr.sbin/sysinst/main.c:1.2 src/usr.sbin/sysinst/main.c:1.3 --- src/usr.sbin/sysinst/main.c:1.2 Sun Aug 3 16:09:38 2014 +++ src/usr.sbin/sysinst/main.c Wed Aug 6 09:11:46 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.2 2014/08/03 16:09:38 martin Exp $ */ +/* $NetBSD: main.c,v 1.3 2014/08/06 09:11:46 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -36,6 +36,7 @@ #include <sys/types.h> #include <sys/stat.h> +#include <sys/syslimits.h> #include <sys/uio.h> #include <stdio.h> #include <signal.h> @@ -275,13 +276,24 @@ select_language(void) DIR *dir; struct dirent *dirent; char **lang_msg, **fnames; + char prefix[PATH_MAX], fname[PATH_MAX]; int max_lang = 16, num_lang = 0; const char *cp; menu_ent *opt = 0; int lang_menu = -1; int lang; +#ifdef CATALOG_DIR + strcpy(prefix, CATALOG_DIR "/"); + dir = opendir(CATALOG_DIR); + if (!dir) { + strcpy(prefix, "./"); + dir = opendir("."); + } +#else dir = opendir("."); + strcpy(prefix, "./"); +#endif if (!dir) return; @@ -297,7 +309,9 @@ select_language(void) while ((dirent = readdir(dir)) != 0) { if (memcmp(dirent->d_name, "sysinstmsgs.", 12)) continue; - if (msg_file(dirent->d_name)) + strcpy(fname, prefix); + strcat(fname, dirent->d_name); + if (msg_file(fname)) continue; cp = msg_string(MSG_sysinst_message_language); if (!strcmp(cp, lang_msg[0])) @@ -314,7 +328,7 @@ select_language(void) break; fnames = new; } - fnames[num_lang] = strdup(dirent->d_name); + fnames[num_lang] = strdup(fname); lang_msg[num_lang++] = strdup(cp); } msg_file(0);