From ffa25716611e1af39cf5cd4f6a1248d208040374 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 69d7414..6686cdf 100644 --- a/cmdbuf.c +++ b/cmdbuf.c @@ -74,16 +74,16 @@ struct mlist /* * These are the various command histories that exist. */ -struct mlist mlist_search = +struct mlist mlist_search = { &mlist_search, &mlist_search, &mlist_search, NULL, 0 }; public void * constant ml_search = (void *) &mlist_search; -struct mlist mlist_examine = +struct mlist mlist_examine = { &mlist_examine, &mlist_examine, &mlist_examine, NULL, 0 }; public void * constant ml_examine = (void *) &mlist_examine; #if SHELL_ESCAPE || PIPEC -struct mlist mlist_shell = +struct mlist mlist_shell = { &mlist_shell, &mlist_shell, &mlist_shell, NULL, 0 }; public void * constant ml_shell = (void *) &mlist_shell; #endif @@ -420,7 +420,7 @@ cmd_right() char *pr; char *ncp; int width; - + if (*cp == '\0') { /* Already at the end of the line. */ @@ -454,7 +454,7 @@ cmd_left() { char *ncp; int width, bswidth; - + if (cp <= cmdbuf) { /* Already at the beginning of the line */ @@ -485,14 +485,14 @@ cmd_ichar(cs, clen) int clen; { char *s; - + if (strlen(cmdbuf) + clen >= sizeof(cmdbuf)-1) { /* No room in the command buffer for another char. */ bell(); return (CC_ERROR); } - + /* * Make room for the new character (shift the tail of the buffer right). */ @@ -552,7 +552,7 @@ cmd_erase() */ updown_match = -1; cmd_repaint(cp); - + /* * We say that erasing the entire command string causes us * to abort the current command, if CF_QUIT_ON_ERASE is set. @@ -689,7 +689,7 @@ cmd_updown(action) { char *s; struct mlist *ml; - + if (curr_mlist == NULL) { /* @@ -754,7 +754,7 @@ cmd_addhist(mlist, cmd, modified) { #if CMD_HISTORY struct mlist *ml; - + /* * Don't save a trivial command. */ @@ -826,7 +826,7 @@ cmd_edit(c) #else #define not_in_completion() #endif - + /* * See if the char is indeed a line-editing command. */ @@ -937,7 +937,7 @@ cmd_istr(str) char *s; int action; char *endline = str + strlen(str); - + for (s = str; *s != '\0'; ) { char *os = s; @@ -969,7 +969,7 @@ delimit_word() char *esc = get_meta_escape(); int esclen = (int) strlen(esc); #endif - + /* * Move cursor to end of word. */ @@ -1042,7 +1042,7 @@ delimit_word() /* * Set things up to enter completion mode. - * Expand the word under the cursor into a list of filenames + * Expand the word under the cursor into a list of filenames * which start with that word, and set tk_text to that list. */ static void @@ -1050,7 +1050,7 @@ init_compl() { char *word; char c; - + /* * Get rid of any previous tk_text. */ @@ -1139,8 +1139,8 @@ cmd_complete(action) if (!in_completion || action == EC_EXPAND) { /* - * Expand the word under the cursor and - * use the first word in the expansion + * Expand the word under the cursor and + * use the first word in the expansion * (or the entire expansion if we're doing EC_EXPAND). */ init_compl(); @@ -1172,13 +1172,13 @@ cmd_complete(action) */ tk_trial = next_compl(action, tk_trial); } - + /* * Remove the original word, or the previous trial completion. */ while (cp > tk_ipoint) (void) cmd_erase(); - + if (tk_trial == NULL) { /* @@ -1209,9 +1209,9 @@ cmd_complete(action) goto fail; } } - + return (CC_OK); - + fail: in_completion = 0; bell(); @@ -1292,7 +1292,7 @@ cmd_char(c) literal = 0; return (cmd_ichar(cmd_mbc_buf, len)); } - + /* * See if it is a line-editing character. */ @@ -1308,7 +1308,7 @@ cmd_char(c) break; } } - + /* * Insert the char into the command buffer. */ @@ -1378,10 +1378,14 @@ 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; - + /* See if filename is explicitly specified by $LESSHISTFILE. */ name = lgetenv("LESSHISTFILE"); if (name != NULL && *name != '\0') @@ -1396,6 +1400,13 @@ histfile_name() if (strcmp(LESSHISTFILE, "") == 0 || strcmp(LESSHISTFILE, "-") == 0) return (NULL); +#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') @@ -1406,6 +1417,7 @@ histfile_name() #endif return (NULL); } +#endif len = (int) (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 100644 --- 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 9631f1c..dc13a96 100644 --- 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 f57fb1e..17159dd 100644 --- 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 298748b..fa4c05b 100644 --- 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); -- 2.2.2