Use getlocalbase() instead of compiled in LOCALBASE to locate calendars

This commit is contained in:
Stefan Eßer 2020-12-12 11:51:29 +00:00
parent 6c2596f00c
commit 6f139d796f
2 changed files with 9 additions and 3 deletions

View File

@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
#include <ctype.h> #include <ctype.h>
#include <err.h> #include <err.h>
#include <errno.h> #include <errno.h>
#include <libutil.h>
#include <locale.h> #include <locale.h>
#include <pwd.h> #include <pwd.h>
#include <stdbool.h> #include <stdbool.h>
@ -121,6 +122,7 @@ cal_fopen(const char *file)
unsigned int i; unsigned int i;
struct stat sb; struct stat sb;
static bool warned = false; static bool warned = false;
char calendarhome[MAXPATHLEN];
if (home == NULL || *home == '\0') { if (home == NULL || *home == '\0') {
warnx("Cannot get home directory"); warnx("Cannot get home directory");
@ -133,12 +135,16 @@ cal_fopen(const char *file)
} }
for (i = 0; i < nitems(calendarHomes); i++) { for (i = 0; i < nitems(calendarHomes); i++) {
if (chdir(calendarHomes[i]) != 0) if (snprintf(calendarhome, sizeof (calendarhome), calendarHomes[i],
getlocalbase()) >= (int)sizeof (calendarhome))
continue;
if (chdir(calendarhome) != 0)
continue; continue;
if ((fp = fopen(file, "r")) != NULL) { if ((fp = fopen(file, "r")) != NULL) {
cal_home = home; cal_home = home;
cal_dir = calendarHomes[i]; cal_dir = calendarhome;
cal_file = file; cal_file = file;
return (fp); return (fp);
} }

View File

@ -35,4 +35,4 @@
#include <paths.h> #include <paths.h>
#define _PATH_INCLUDE "/usr/share/calendar" #define _PATH_INCLUDE "/usr/share/calendar"
#define _PATH_INCLUDE_LOCAL _PATH_LOCALBASE "/share/calendar" #define _PATH_INCLUDE_LOCAL "%s/share/calendar"