diff -up less-436/cmdbuf.c.orig less-436/cmdbuf.c --- less-436/cmdbuf.c.orig 2010-01-01 16:33:39.000000000 -0700 +++ less-436/cmdbuf.c 2010-01-01 16:39:46.000000000 -0700 @@ -1325,7 +1325,11 @@ cmd_lastpattern() static char * histfile_name() { +#ifdef __HAIKU__ + char home[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH]; +#else char *home; +#endif char *name; int len; @@ -1339,6 +1343,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') @@ -1349,6 +1360,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 -up less-436/configure.ac.orig less-436/configure.ac --- less-436/configure.ac.orig 2010-01-01 16:06:56.000000000 -0700 +++ less-436/configure.ac 2010-01-01 16:16:09.000000000 -0700 @@ -562,10 +562,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 -up less-436/filename.c.orig less-436/filename.c --- less-436/filename.c.orig 2010-01-01 16:25:25.000000000 -0700 +++ less-436/filename.c 2010-01-01 16:23:03.000000000 -0700 @@ -267,12 +267,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 -up less-436/less.h.orig less-436/less.h --- less-436/less.h.orig 2010-01-01 16:27:31.000000000 -0700 +++ less-436/less.h 2010-01-01 16:28:33.000000000 -0700 @@ -94,6 +94,11 @@ #include #endif +#ifdef __HAIKU__ +#include +#include +#endif + #if MSDOS_COMPILER==WIN32C || OS2 #include #endif diff -up less-436/lesskey.c.orig less-436/lesskey.c --- less-436/lesskey.c.orig 2010-01-01 16:25:42.000000000 -0700 +++ less-436/lesskey.c 2010-01-01 16:24:17.000000000 -0700 @@ -244,8 +244,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);