nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 9faa95450b694792219104b10f8567c580d6cdd5
parent 26d7a7494eec6b2aee0c189a0e0567d0e0fe1e54
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Thu, 18 Jun 2020 17:24:18 +0200

tweaks: rename two functions, and rename and reshuffle a parameter

Also, drop an unneeded nulling: the function copy_of() already
NUL-terminates the copied string.

Diffstat:
Msrc/files.c | 21++++++++-------------
Msrc/prompt.c | 2+-
Msrc/proto.h | 2+-
3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/src/files.c b/src/files.c @@ -2363,8 +2363,7 @@ bool is_dir(const char *path) } /* Try to complete the given fragment in 'buf' to a username. */ -char **username_tab_completion(const char *buf, size_t *num_matches, - size_t buf_len) +char **username_completion(const char *buf, size_t length, size_t *num_matches) { char **matches = NULL; #ifdef HAVE_PWD_H @@ -2373,7 +2372,7 @@ char **username_tab_completion(const char *buf, size_t *num_matches, /* Iterate through the entries in the passwd file, and * add each fitting username to the list of matches. */ while ((userdata = getpwent()) != NULL) { - if (strncmp(userdata->pw_name, buf + 1, buf_len - 1) == 0) { + if (strncmp(userdata->pw_name, buf + 1, length - 1) == 0) { #ifdef ENABLE_OPERATINGDIR /* Skip directories that are outside of the allowed area. */ if (outside_of_confinement(userdata->pw_dir, TRUE)) @@ -2407,8 +2406,8 @@ char **username_tab_completion(const char *buf, size_t *num_matches, * This code may safely be consumed by a BSD or GPL license. */ /* Try to complete the given fragment in 'buf' to a filename. */ -char **cwd_tab_completion(const char *buf, bool allow_files, - size_t *num_matches, size_t buf_len) +char **filename_completion(const char *buf, size_t length, + bool allow_files, size_t *num_matches) { char *dirname = copy_of(buf); char *slash, *filename; @@ -2417,8 +2416,6 @@ char **cwd_tab_completion(const char *buf, bool allow_files, DIR *dir; const struct dirent *nextdir; - dirname[buf_len] = '\0'; - /* If there's a / in the name, split out filename and directory parts. */ slash = strrchr(dirname, '/'); if (slash != NULL) { @@ -2430,8 +2427,7 @@ char **cwd_tab_completion(const char *buf, bool allow_files, dirname = real_dir_from_tilde(dirname); /* A non-absolute path is relative to the current browser directory. */ if (dirname[0] != '/') { - dirname = charealloc(dirname, strlen(present_path) + - strlen(wasdirname) + 1); + dirname = charealloc(dirname, strlen(present_path) + strlen(wasdirname) + 1); sprintf(dirname, "%s%s", present_path, wasdirname); } free(wasdirname); @@ -2443,7 +2439,6 @@ char **cwd_tab_completion(const char *buf, bool allow_files, dir = opendir(dirname); if (dir == NULL) { - /* Don't print an error, just shut up and return. */ beep(); free(filename); free(dirname); @@ -2489,7 +2484,7 @@ char **cwd_tab_completion(const char *buf, bool allow_files, /* Do tab completion. 'place' is the position of the status-bar cursor, and * 'refresh_func' is the function to be called to refresh the edit window. */ -char *input_tab(char *buf, bool allow_files, size_t *place, +char *input_tab(char *buf, size_t *place, bool allow_files, bool *lastwastab, void (*refresh_func)(void), bool *listed) { size_t num_matches = 0; @@ -2506,12 +2501,12 @@ char *input_tab(char *buf, bool allow_files, size_t *place, /* If the fragment starts with a tilde and contains no slash, * then try completing it as a username. */ if (buf[0] == '~' && strchr(buf, '/') == NULL) - matches = username_tab_completion(buf, &num_matches, *place); + matches = username_completion(buf, *place, &num_matches); /* If there are no matches yet, try matching against filenames * in the current directory. */ if (matches == NULL) - matches = cwd_tab_completion(buf, allow_files, &num_matches, *place); + matches = filename_completion(buf, *place, allow_files, &num_matches); if (num_matches == 0) beep(); diff --git a/src/prompt.c b/src/prompt.c @@ -471,7 +471,7 @@ functionptrtype acquire_an_answer(int *actual, bool allow_tabs, } else #endif if (allow_tabs) - answer = input_tab(answer, allow_files, &typing_x, + answer = input_tab(answer, &typing_x, allow_files, &tabbed, refresh_func, listed); } else #endif /* ENABLE_TABCOMP */ diff --git a/src/proto.h b/src/proto.h @@ -323,7 +323,7 @@ char *real_dir_from_tilde(const char *buf); int diralphasort(const void *va, const void *vb); #endif #ifdef ENABLE_TABCOMP -char *input_tab(char *buf, bool allow_files, size_t *place, +char *input_tab(char *buf, size_t *place, bool allow_files, bool *lastwastab, void (*refresh_func)(void), bool *listed); #endif