Use getlocalbase() instead of compiled in LOCALBASE to locate calendars
This commit is contained in:
parent
6c2596f00c
commit
6f139d796f
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user