From 84d816bea8e0c4bf9a8073ac66ffb6d8d9a3a06d Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Wed, 3 Sep 2014 15:09:24 +0000 Subject: haiku patch diff --git a/cmdbuf.c b/cmdbuf.c index 604c536..e9b7957 100755 --- a/cmdbuf.c +++ b/cmdbuf.c @@ -1378,7 +1378,11 @@ mlist_size(ml) static char * histfile_name() { +#ifdef __HAIKU__ + char home[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH]; +#else char *home; +#endif char *name; int len; @@ -1392,6 +1396,13 @@ histfile_name() return (save(name)); } +#ifdef __HAIKU__ + { + dev_t volume = dev_for_path("/boot"); + if (find_directory(B_USER_SETTINGS_DIRECTORY, volume, true, home, sizeof(home)) != B_OK) + return (NULL); + } +#else /* Otherwise, file is in $HOME. */ home = lgetenv("HOME"); if (home == NULL || *home == '\0') @@ -1402,6 +1413,8 @@ histfile_name() #endif return (NULL); } +#endif + len = strlen(home) + strlen(LESSHISTFILE) + 2; name = (char *) ecalloc(len, sizeof(char)); SNPRINTF2(name, len, "%s/%s", home, LESSHISTFILE); diff --git a/configure.ac b/configure.ac index 4ac9a35..d9e299a 100755 --- a/configure.ac +++ b/configure.ac @@ -596,10 +596,17 @@ AH_TOP([ * LESSHISTFILE is the filename of the history file * (in the HOME directory). */ -#define LESSKEYFILE ".less" -#define LESSKEYFILE_SYS SYSDIR "/sysless" -#define DEF_LESSKEYINFILE ".lesskey" -#define LESSHISTFILE ".lesshst" +#ifdef __HAIKU__ +# define LESSKEYFILE "less" +# define LESSKEYFILE_SYS SYSDIR "/sysless" +# define DEF_LESSKEYINFILE "lesskey" +# define LESSHISTFILE "lesshst" +#else +# define LESSKEYFILE ".less" +# define LESSKEYFILE_SYS SYSDIR "/sysless" +# define DEF_LESSKEYINFILE ".lesskey" +# define LESSHISTFILE ".lesshst" +#endif /* Settings always true on Unix. */ diff --git a/filename.c b/filename.c index 68fdadb..5d2b614 100755 --- a/filename.c +++ b/filename.c @@ -266,12 +266,23 @@ homefile(filename) { register char *pathname; +#ifdef __HAIKU__ + char path[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH]; + dev_t volume = dev_for_path("/boot"); + if (find_directory(B_USER_SETTINGS_DIRECTORY, volume, true, path, sizeof(path)) != B_OK) + return (NULL); + + pathname = dirfile(&path, filename); + if (pathname != NULL) + return (pathname); +#else /* * Try $HOME/filename. */ pathname = dirfile(lgetenv("HOME"), filename); if (pathname != NULL) return (pathname); +#endif #if OS2 /* * Try $INIT/filename. diff --git a/less.h b/less.h index 15c55af..56bfa64 100755 --- a/less.h +++ b/less.h @@ -93,6 +93,11 @@ #include #endif +#ifdef __HAIKU__ +#include +#include +#endif + #if MSDOS_COMPILER==WIN32C || OS2 #include #endif diff --git a/lesskey.c b/lesskey.c index 3408647..da8aba3 100755 --- a/lesskey.c +++ b/lesskey.c @@ -246,8 +246,19 @@ homefile(filename) char *p; char *pathname; +#ifdef __HAIKU__ + char path[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH]; + dev_t volume = dev_for_path("/boot"); + if (find_directory(B_USER_SETTINGS_DIRECTORY, volume, true, path, sizeof(path)) != B_OK) + return (NULL); + + pathname = mkpathname(&path, filename); + if (pathname != NULL) + return (pathname); +#else if ((p = getenv("HOME")) != NULL && *p != '\0') pathname = mkpathname(p, filename); +#endif #if OS2 else if ((p = getenv("INIT")) != NULL && *p != '\0') pathname = mkpathname(p, filename); -- 1.8.3.4