mirror of
https://github.com/neovim/neovim.git
synced 2025-10-07 02:16:31 +00:00
Test and refactor gettail -> path_tail.
This commit is contained in:

committed by
Thiago de Arruda

parent
6d712defa5
commit
77bfb6cd99
@@ -2683,7 +2683,7 @@ void maketitle(void)
|
||||
if (curbuf->b_fname == NULL)
|
||||
vim_strncpy(buf, (char_u *)_("[No Name]"), SPACE_FOR_FNAME);
|
||||
else {
|
||||
p = transstr(gettail(curbuf->b_fname));
|
||||
p = transstr(path_tail(curbuf->b_fname));
|
||||
vim_strncpy(buf, p, SPACE_FOR_FNAME);
|
||||
vim_free(p);
|
||||
}
|
||||
@@ -2770,7 +2770,7 @@ void maketitle(void)
|
||||
if (buf_spname(curbuf) != NULL)
|
||||
i_name = buf_spname(curbuf);
|
||||
else /* use file name only in icon */
|
||||
i_name = gettail(curbuf->b_ffname);
|
||||
i_name = path_tail(curbuf->b_ffname);
|
||||
*i_str = NUL;
|
||||
/* Truncate name at 100 bytes. */
|
||||
len = (int)STRLEN(i_name);
|
||||
@@ -3143,7 +3143,7 @@ build_stl_str_hl (
|
||||
if (opt != STL_FILENAME)
|
||||
str = NameBuff;
|
||||
else
|
||||
str = gettail(NameBuff);
|
||||
str = path_tail(NameBuff);
|
||||
break;
|
||||
|
||||
case STL_VIM_EXPR: /* '{' */
|
||||
|
10
src/eval.c
10
src/eval.c
@@ -11691,7 +11691,7 @@ static void f_mkdir(typval_T *argvars, typval_T *rettv)
|
||||
if (*dir == NUL)
|
||||
rettv->vval.v_number = FAIL;
|
||||
else {
|
||||
if (*gettail(dir) == NUL)
|
||||
if (*path_tail(dir) == NUL)
|
||||
/* remove trailing slashes */
|
||||
*gettail_sep(dir) = NUL;
|
||||
|
||||
@@ -12470,18 +12470,18 @@ static void f_resolve(typval_T *argvars, typval_T *rettv)
|
||||
q[-1] = NUL;
|
||||
}
|
||||
|
||||
q = gettail(p);
|
||||
q = path_tail(p);
|
||||
if (q > p && *q == NUL) {
|
||||
/* Ignore trailing path separator. */
|
||||
q[-1] = NUL;
|
||||
q = gettail(p);
|
||||
q = path_tail(p);
|
||||
}
|
||||
if (q > p && !os_is_absolute_path(buf)) {
|
||||
/* symlink is relative to directory of argument */
|
||||
cpy = alloc((unsigned)(STRLEN(p) + STRLEN(buf) + 1));
|
||||
if (cpy != NULL) {
|
||||
STRCPY(cpy, p);
|
||||
STRCPY(gettail(cpy), buf);
|
||||
STRCPY(path_tail(cpy), buf);
|
||||
vim_free(p);
|
||||
p = cpy;
|
||||
}
|
||||
@@ -19400,7 +19400,7 @@ repeat:
|
||||
}
|
||||
}
|
||||
|
||||
tail = gettail(*fnamep);
|
||||
tail = path_tail(*fnamep);
|
||||
*fnamelen = (int)STRLEN(*fnamep);
|
||||
|
||||
/* ":h" - head, remove "/file_name", can be repeated */
|
||||
|
@@ -1621,8 +1621,8 @@ void write_viminfo(char_u *file, int forceit)
|
||||
* the same file as the original.
|
||||
*/
|
||||
wp = tempname + STRLEN(tempname) - 5;
|
||||
if (wp < gettail(tempname)) /* empty file name? */
|
||||
wp = gettail(tempname);
|
||||
if (wp < path_tail(tempname)) /* empty file name? */
|
||||
wp = path_tail(tempname);
|
||||
for (*wp = 'z'; mch_stat((char *)tempname, &st_new) == 0;
|
||||
--*wp) {
|
||||
/*
|
||||
@@ -5193,7 +5193,7 @@ void fix_help_buffer(void)
|
||||
* In the "help.txt" and "help.abx" file, add the locally added help
|
||||
* files. This uses the very first line in the help file.
|
||||
*/
|
||||
fname = gettail(curbuf->b_fname);
|
||||
fname = path_tail(curbuf->b_fname);
|
||||
if (fnamecmp(fname, "help.txt") == 0
|
||||
|| (fnamencmp(fname, "help.", 5) == 0
|
||||
&& ASCII_ISALPHA(fname[5])
|
||||
@@ -5246,11 +5246,11 @@ void fix_help_buffer(void)
|
||||
continue;
|
||||
f1 = fnames[i1];
|
||||
f2 = fnames[i2];
|
||||
t1 = gettail(f1);
|
||||
t1 = path_tail(f1);
|
||||
if (fnamencmp(f1, f2, t1 - f1) != 0)
|
||||
continue;
|
||||
e1 = vim_strrchr(t1, '.');
|
||||
e2 = vim_strrchr(gettail(f2), '.');
|
||||
e2 = vim_strrchr(path_tail(f2), '.');
|
||||
if (e1 == NUL || e2 == NUL)
|
||||
continue;
|
||||
if (fnamecmp(e1, ".txt") != 0
|
||||
|
@@ -2519,7 +2519,7 @@ do_source (
|
||||
* Try again, replacing file name ".vimrc" by "_vimrc" or vice versa,
|
||||
* and ".exrc" by "_exrc" or vice versa.
|
||||
*/
|
||||
p = gettail(fname_exp);
|
||||
p = path_tail(fname_exp);
|
||||
if ((*p == '.' || *p == '_')
|
||||
&& (STRICMP(p + 1, "vimrc") == 0
|
||||
|| STRICMP(p + 1, "gvimrc") == 0
|
||||
|
@@ -8058,7 +8058,7 @@ eval_vars (
|
||||
resultlen = (int)STRLEN(result); /* length of new string */
|
||||
if (src[*usedlen] == '<') { /* remove the file name extension */
|
||||
++*usedlen;
|
||||
if ((s = vim_strrchr(result, '.')) != NULL && s >= gettail(result))
|
||||
if ((s = vim_strrchr(result, '.')) != NULL && s >= path_tail(result))
|
||||
resultlen = (int)(s - result);
|
||||
} else if (!skip_mod) {
|
||||
valid |= modify_fname(src, usedlen, &result, &resultbuf,
|
||||
|
@@ -3303,7 +3303,7 @@ static int showmatches(expand_T *xp, int wildmenu)
|
||||
}
|
||||
|
||||
/*
|
||||
* Private gettail for showmatches() (and win_redr_status_matches()):
|
||||
* Private path_tail for showmatches() (and win_redr_status_matches()):
|
||||
* Find tail of file name path, but ignore trailing "/".
|
||||
*/
|
||||
char_u *sm_gettail(char_u *s)
|
||||
@@ -3344,7 +3344,7 @@ static int expand_showtail(expand_T *xp)
|
||||
&& xp->xp_context != EXPAND_DIRECTORIES)
|
||||
return FALSE;
|
||||
|
||||
end = gettail(xp->xp_pattern);
|
||||
end = path_tail(xp->xp_pattern);
|
||||
if (end == xp->xp_pattern) /* there is no path separator */
|
||||
return FALSE;
|
||||
|
||||
@@ -3461,7 +3461,7 @@ addstar (
|
||||
* ` could be anywhere in the file name.
|
||||
* When the name ends in '$' don't add a star, remove the '$'.
|
||||
*/
|
||||
tail = gettail(retval);
|
||||
tail = path_tail(retval);
|
||||
ends_in_star = (len > 0 && retval[len - 1] == '*');
|
||||
#ifndef BACKSLASH_IN_FILENAME
|
||||
for (i = len - 2; i >= 0; --i) {
|
||||
|
@@ -318,7 +318,7 @@ vim_findfile_init (
|
||||
&& (vim_ispathsep(path[1]) || path[1] == NUL)
|
||||
&& (!tagfile || vim_strchr(p_cpo, CPO_DOTTAG) == NULL)
|
||||
&& rel_fname != NULL) {
|
||||
int len = (int)(gettail(rel_fname) - rel_fname);
|
||||
int len = (int)(path_tail(rel_fname) - rel_fname);
|
||||
|
||||
if (!vim_isAbsName(rel_fname) && len + 1 < MAXPATHL) {
|
||||
/* Make the start dir an absolute path name. */
|
||||
@@ -503,7 +503,7 @@ vim_findfile_init (
|
||||
STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
|
||||
add_pathsep(ff_expand_buffer);
|
||||
} else {
|
||||
char_u *p = gettail(search_ctx->ffsc_fix_path);
|
||||
char_u *p = path_tail(search_ctx->ffsc_fix_path);
|
||||
char_u *wc_path = NULL;
|
||||
char_u *temp = NULL;
|
||||
int len = 0;
|
||||
@@ -1505,7 +1505,7 @@ find_file_in_path_option (
|
||||
&& rel_fname != NULL
|
||||
&& STRLEN(rel_fname) + l < MAXPATHL) {
|
||||
STRCPY(NameBuff, rel_fname);
|
||||
STRCPY(gettail(NameBuff), ff_file_to_find);
|
||||
STRCPY(path_tail(NameBuff), ff_file_to_find);
|
||||
l = (int)STRLEN(NameBuff);
|
||||
} else {
|
||||
STRCPY(NameBuff, ff_file_to_find);
|
||||
|
16
src/fileio.c
16
src/fileio.c
@@ -2957,7 +2957,7 @@ buf_write (
|
||||
*/
|
||||
STRCPY(IObuff, fname);
|
||||
for (i = 4913;; i += 123) {
|
||||
sprintf((char *)gettail(IObuff), "%d", i);
|
||||
sprintf((char *)path_tail(IObuff), "%d", i);
|
||||
if (mch_lstat((char *)IObuff, &st) < 0)
|
||||
break;
|
||||
}
|
||||
@@ -4872,7 +4872,7 @@ buf_modname (
|
||||
/*
|
||||
* Prepend the dot.
|
||||
*/
|
||||
if (prepend_dot && !shortname && *(e = gettail(retval)) != '.'
|
||||
if (prepend_dot && !shortname && *(e = path_tail(retval)) != '.'
|
||||
#ifdef USE_LONG_FNAME
|
||||
&& USE_LONG_FNAME
|
||||
#endif
|
||||
@@ -4994,7 +4994,7 @@ int vim_rename(char_u *from, char_u *to)
|
||||
* the file name differs we need to go through a temp file.
|
||||
*/
|
||||
if (fnamecmp(from, to) == 0) {
|
||||
if (p_fic && STRCMP(gettail(from), gettail(to)) != 0)
|
||||
if (p_fic && STRCMP(path_tail(from), path_tail(to)) != 0)
|
||||
use_tmp_file = TRUE;
|
||||
else
|
||||
return 0;
|
||||
@@ -5031,7 +5031,7 @@ int vim_rename(char_u *from, char_u *to)
|
||||
return -1;
|
||||
STRCPY(tempname, from);
|
||||
for (n = 123; n < 99999; ++n) {
|
||||
sprintf((char *)gettail((char_u *)tempname), "%d", n);
|
||||
sprintf((char *)path_tail((char_u *)tempname), "%d", n);
|
||||
if (mch_stat(tempname, &st) < 0) {
|
||||
if (rename((char *)from, tempname) == 0) {
|
||||
if (rename(tempname, (char *)to) == 0)
|
||||
@@ -5640,7 +5640,7 @@ void vim_deltempdir(void)
|
||||
mch_remove(files[i]);
|
||||
FreeWild(file_count, files);
|
||||
}
|
||||
gettail(NameBuff)[-1] = NUL;
|
||||
path_tail(NameBuff)[-1] = NUL;
|
||||
(void)mch_rmdir(NameBuff);
|
||||
|
||||
vim_free(vim_tempdir);
|
||||
@@ -7482,7 +7482,7 @@ apply_autocmds_group (
|
||||
if (event == EVENT_FILETYPE)
|
||||
did_filetype = TRUE;
|
||||
|
||||
tail = gettail(fname);
|
||||
tail = path_tail(fname);
|
||||
|
||||
/* Find first autocommand that matches */
|
||||
patcmd.curpat = first_autopat[(int)event];
|
||||
@@ -7739,7 +7739,7 @@ int has_autocmd(event_T event, char_u *sfname, buf_T *buf)
|
||||
{
|
||||
AutoPat *ap;
|
||||
char_u *fname;
|
||||
char_u *tail = gettail(sfname);
|
||||
char_u *tail = path_tail(sfname);
|
||||
int retval = FALSE;
|
||||
|
||||
fname = FullName_save(sfname, FALSE);
|
||||
@@ -8064,7 +8064,7 @@ int match_file_list(char_u *list, char_u *sfname, char_u *ffname)
|
||||
int match;
|
||||
char_u *p;
|
||||
|
||||
tail = gettail(sfname);
|
||||
tail = path_tail(sfname);
|
||||
|
||||
/* try all patterns in 'wildignore' */
|
||||
p = list;
|
||||
|
@@ -2231,7 +2231,7 @@ static char *cs_resolve_file(int i, char *name)
|
||||
csdir = alloc(MAXPATHL);
|
||||
if (csdir != NULL) {
|
||||
vim_strncpy(csdir, (char_u *)csinfo[i].fname,
|
||||
gettail((char_u *)csinfo[i].fname)
|
||||
path_tail((char_u *)csinfo[i].fname)
|
||||
- (char_u *)csinfo[i].fname);
|
||||
len += (int)STRLEN(csdir);
|
||||
}
|
||||
|
@@ -931,7 +931,7 @@ static void parse_command_name(mparm_T *parmp)
|
||||
{
|
||||
char_u *initstr;
|
||||
|
||||
initstr = gettail((char_u *)parmp->argv[0]);
|
||||
initstr = path_tail((char_u *)parmp->argv[0]);
|
||||
|
||||
|
||||
set_vim_var_string(VV_PROGNAME, initstr, -1);
|
||||
@@ -1440,7 +1440,7 @@ scripterror:
|
||||
&& !os_isdir(alist_name(&GARGLIST[0]))) {
|
||||
char_u *r;
|
||||
|
||||
r = concat_fnames(p, gettail(alist_name(&GARGLIST[0])), TRUE);
|
||||
r = concat_fnames(p, path_tail(alist_name(&GARGLIST[0])), TRUE);
|
||||
if (r != NULL) {
|
||||
vim_free(p);
|
||||
p = r;
|
||||
|
@@ -1589,7 +1589,7 @@ recover_names (
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
tail = gettail(fname_res);
|
||||
tail = path_tail(fname_res);
|
||||
tail = concat_fnames(dir_name, tail, TRUE);
|
||||
}
|
||||
if (tail == NULL)
|
||||
@@ -1682,7 +1682,7 @@ recover_names (
|
||||
/* print the swap file name */
|
||||
msg_outnum((long)++file_count);
|
||||
MSG_PUTS(". ");
|
||||
msg_puts(gettail(files[i]));
|
||||
msg_puts(path_tail(files[i]));
|
||||
msg_putchar('\n');
|
||||
(void)swapfile_info(files[i]);
|
||||
}
|
||||
@@ -3398,7 +3398,7 @@ int resolve_symlink(char_u *fname, char_u *buf)
|
||||
else {
|
||||
char_u *tail;
|
||||
|
||||
tail = gettail(tmp);
|
||||
tail = path_tail(tmp);
|
||||
if (STRLEN(tail) + STRLEN(buf) >= MAXPATHL)
|
||||
return FAIL;
|
||||
STRCPY(tail, buf);
|
||||
@@ -3492,7 +3492,7 @@ get_file_in_dir (
|
||||
char_u *retval;
|
||||
int save_char;
|
||||
|
||||
tail = gettail(fname);
|
||||
tail = path_tail(fname);
|
||||
|
||||
if (dname[0] == '.' && dname[1] == NUL)
|
||||
retval = vim_strsave(fname);
|
||||
@@ -3697,10 +3697,10 @@ findswapname (
|
||||
* It either contains two dots, is longer than 8 chars, or starts
|
||||
* with a dot.
|
||||
*/
|
||||
tail = gettail(buf_fname);
|
||||
tail = path_tail(buf_fname);
|
||||
if ( vim_strchr(tail, '.') != NULL
|
||||
|| STRLEN(tail) > (size_t)8
|
||||
|| *gettail(fname) == '.') {
|
||||
|| *path_tail(fname) == '.') {
|
||||
fname2 = alloc(n + 2);
|
||||
if (fname2 != NULL) {
|
||||
STRCPY(fname2, fname);
|
||||
@@ -3710,7 +3710,7 @@ findswapname (
|
||||
*/
|
||||
if (vim_strchr(tail, '.') != NULL)
|
||||
fname2[n - 1] = 'x';
|
||||
else if (*gettail(fname) == '.') {
|
||||
else if (*path_tail(fname) == '.') {
|
||||
fname2[n] = 'x';
|
||||
fname2[n + 1] = NUL;
|
||||
} else
|
||||
@@ -3835,8 +3835,8 @@ findswapname (
|
||||
* have a different mountpoint.
|
||||
*/
|
||||
if (b0.b0_flags & B0_SAME_DIR) {
|
||||
if (fnamecmp(gettail(buf->b_ffname),
|
||||
gettail(b0.b0_fname)) != 0
|
||||
if (fnamecmp(path_tail(buf->b_ffname),
|
||||
path_tail(b0.b0_fname)) != 0
|
||||
|| !same_directory(fname, buf->b_ffname)) {
|
||||
#ifdef CHECK_INODE
|
||||
/* Symlinks may point to the same file even
|
||||
|
@@ -3052,7 +3052,7 @@ char_u *vim_getenv(char_u *name, int *mustfree)
|
||||
#endif
|
||||
if (p != NULL) {
|
||||
/* remove the file name */
|
||||
pend = gettail(p);
|
||||
pend = path_tail(p);
|
||||
|
||||
/* remove "doc/" from 'helpfile', if present */
|
||||
if (p == p_hf)
|
||||
@@ -3285,7 +3285,7 @@ home_replace (
|
||||
* If the file is a help file, remove the path completely.
|
||||
*/
|
||||
if (buf != NULL && buf->b_help) {
|
||||
STRCPY(dst, gettail(src));
|
||||
STRCPY(dst, path_tail(src));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -994,7 +994,7 @@ char_u *vim_strsave_escaped_ext(char_u *string, char_u *esc_chars, int cc, int b
|
||||
*/
|
||||
int csh_like_shell(void)
|
||||
{
|
||||
return strstr((char *)gettail(p_sh), "csh") != NULL;
|
||||
return strstr((char *)path_tail(p_sh), "csh") != NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -2493,7 +2493,7 @@ void set_init_3(void)
|
||||
p = skiptowhite(p_sh);
|
||||
if (*p == NUL) {
|
||||
/* No white space, use the tail. */
|
||||
p = vim_strsave(gettail(p_sh));
|
||||
p = vim_strsave(path_tail(p_sh));
|
||||
} else {
|
||||
char_u *p1, *p2;
|
||||
|
||||
|
@@ -1943,7 +1943,7 @@ int flags; /* EW_* flags */
|
||||
else if (STRCMP(p_sh + len - 3, "zsh") == 0)
|
||||
shell_style = STYLE_PRINT;
|
||||
}
|
||||
if (shell_style == STYLE_ECHO && strstr((char *)gettail(p_sh),
|
||||
if (shell_style == STYLE_ECHO && strstr((char *)path_tail(p_sh),
|
||||
"sh") != NULL)
|
||||
shell_style = STYLE_VIMGLOB;
|
||||
|
||||
|
32
src/path.c
32
src/path.c
@@ -61,23 +61,21 @@ FileComparison path_full_compare(char_u *s1, char_u *s2, int checkname)
|
||||
return FPC_DIFF;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the tail of a path: the file name.
|
||||
* When the path ends in a path separator the tail is the NUL after it.
|
||||
* Fail safe: never returns NULL.
|
||||
*/
|
||||
char_u *gettail(char_u *fname)
|
||||
char_u *path_tail(char_u *fname)
|
||||
{
|
||||
char_u *p1, *p2;
|
||||
|
||||
if (fname == NULL)
|
||||
if (fname == NULL) {
|
||||
return (char_u *)"";
|
||||
for (p1 = p2 = get_past_head(fname); *p2; ) { /* find last part of path */
|
||||
if (vim_ispathsep_nocolon(*p2))
|
||||
p1 = p2 + 1;
|
||||
}
|
||||
|
||||
char_u *tail, *p2;
|
||||
// Find last part of path.
|
||||
for (tail = p2 = get_past_head(fname); *p2; ) {
|
||||
if (vim_ispathsep_nocolon(*p2)) {
|
||||
tail = p2 + 1;
|
||||
}
|
||||
mb_ptr_adv(p2);
|
||||
}
|
||||
return p1;
|
||||
return tail;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -91,7 +89,7 @@ char_u *gettail_sep(char_u *fname)
|
||||
char_u *t;
|
||||
|
||||
p = get_past_head(fname); /* don't remove the '/' from "c:/file" */
|
||||
t = gettail(fname);
|
||||
t = path_tail(fname);
|
||||
while (t > p && after_pathsep(fname, t))
|
||||
--t;
|
||||
return t;
|
||||
@@ -178,7 +176,7 @@ void shorten_dir(char_u *str)
|
||||
char_u *tail, *s, *d;
|
||||
int skip = FALSE;
|
||||
|
||||
tail = gettail(str);
|
||||
tail = path_tail(str);
|
||||
d = str;
|
||||
for (s = str;; ++s) {
|
||||
if (s >= tail) { /* copy the whole tail */
|
||||
@@ -644,7 +642,7 @@ static void expand_path_option(char_u *curdir, garray_T *gap)
|
||||
* "/path/file" + "./subdir" -> "/path/subdir" */
|
||||
if (curbuf->b_ffname == NULL)
|
||||
continue;
|
||||
p = gettail(curbuf->b_ffname);
|
||||
p = path_tail(curbuf->b_ffname);
|
||||
len = (int)(p - curbuf->b_ffname);
|
||||
if (len + (int)STRLEN(buf) >= MAXPATHL)
|
||||
continue;
|
||||
@@ -1942,7 +1940,7 @@ int match_suffix(char_u *fname)
|
||||
for (setsuf = p_su; *setsuf; ) {
|
||||
setsuflen = copy_option_part(&setsuf, suf_buf, MAXSUFLEN, ".,");
|
||||
if (setsuflen == 0) {
|
||||
char_u *tail = gettail(fname);
|
||||
char_u *tail = path_tail(fname);
|
||||
|
||||
/* empty entry: match name without a '.' */
|
||||
if (vim_strchr(tail, '.') == NULL) {
|
||||
|
11
src/path.h
11
src/path.h
@@ -19,6 +19,16 @@ typedef enum file_comparison {
|
||||
/// @return Enum of type FileComparison. @see FileComparison.
|
||||
FileComparison path_full_compare(char_u *s1, char_u *s2, int checkname);
|
||||
|
||||
/// Get the tail of a path:the file name.
|
||||
///
|
||||
/// @param fname A file path.
|
||||
/// @return
|
||||
/// - Empty string, if fname is NULL.
|
||||
/// - The position of the last path seperator + 1. (i.e. empty string, if
|
||||
/// fname ends in a slash).
|
||||
/// - Never NULL.
|
||||
char_u *path_tail(char_u *fname);
|
||||
|
||||
int vim_ispathsep(int c);
|
||||
int vim_ispathsep_nocolon(int c);
|
||||
int vim_ispathlistsep(int c);
|
||||
@@ -33,7 +43,6 @@ int gen_expand_wildcards(int num_pat, char_u **pat, int *num_file,
|
||||
char_u ***file,
|
||||
int flags);
|
||||
void addfile(garray_T *gap, char_u *f, int flags);
|
||||
char_u *gettail(char_u *fname);
|
||||
char_u *gettail_sep(char_u *fname);
|
||||
char_u *getnextcomp(char_u *fname);
|
||||
char_u *get_past_head(char_u *path);
|
||||
|
@@ -1800,7 +1800,7 @@ void qf_list(exarg_T *eap)
|
||||
&& (buf = buflist_findnr(qfp->qf_fnum)) != NULL) {
|
||||
fname = buf->b_fname;
|
||||
if (qfp->qf_type == 1) /* :helpgrep */
|
||||
fname = gettail(fname);
|
||||
fname = path_tail(fname);
|
||||
}
|
||||
if (fname == NULL)
|
||||
sprintf((char *)IObuff, "%2d", i);
|
||||
@@ -2347,7 +2347,7 @@ static void qf_fill_buffer(qf_info_T *qi)
|
||||
&& (errbuf = buflist_findnr(qfp->qf_fnum)) != NULL
|
||||
&& errbuf->b_fname != NULL) {
|
||||
if (qfp->qf_type == 1) /* :helpgrep */
|
||||
STRCPY(IObuff, gettail(errbuf->b_fname));
|
||||
STRCPY(IObuff, path_tail(errbuf->b_fname));
|
||||
else
|
||||
STRCPY(IObuff, errbuf->b_fname);
|
||||
len = (int)STRLEN(IObuff);
|
||||
|
16
src/spell.c
16
src/spell.c
@@ -2580,7 +2580,7 @@ spell_load_file (
|
||||
goto endFAIL;
|
||||
|
||||
/* Check for .add.spl (_add.spl for VMS). */
|
||||
lp->sl_add = strstr((char *)gettail(fname), SPL_FNAME_ADD) != NULL;
|
||||
lp->sl_add = strstr((char *)path_tail(fname), SPL_FNAME_ADD) != NULL;
|
||||
} else
|
||||
lp = old_lp;
|
||||
|
||||
@@ -3875,7 +3875,7 @@ char_u *did_set_spelllang(win_T *wp)
|
||||
filename = TRUE;
|
||||
|
||||
/* Locate a region and remove it from the file name. */
|
||||
p = vim_strchr(gettail(lang), '_');
|
||||
p = vim_strchr(path_tail(lang), '_');
|
||||
if (p != NULL && ASCII_ISALPHA(p[1]) && ASCII_ISALPHA(p[2])
|
||||
&& !ASCII_ISALPHA(p[3])) {
|
||||
vim_strncpy(region_cp, p + 1, 2);
|
||||
@@ -4006,7 +4006,7 @@ char_u *did_set_spelllang(win_T *wp)
|
||||
if (round == 0)
|
||||
STRCPY(lang, "internal wordlist");
|
||||
else {
|
||||
vim_strncpy(lang, gettail(spf_name), MAXWLEN);
|
||||
vim_strncpy(lang, path_tail(spf_name), MAXWLEN);
|
||||
p = vim_strchr(lang, '.');
|
||||
if (p != NULL)
|
||||
*p = NUL; /* truncate at ".encoding.add" */
|
||||
@@ -8199,17 +8199,17 @@ mkspell (
|
||||
fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
|
||||
|
||||
/* Check for .ascii.spl. */
|
||||
if (strstr((char *)gettail(wfname), SPL_FNAME_ASCII) != NULL)
|
||||
if (strstr((char *)path_tail(wfname), SPL_FNAME_ASCII) != NULL)
|
||||
spin.si_ascii = TRUE;
|
||||
|
||||
/* Check for .add.spl. */
|
||||
if (strstr((char *)gettail(wfname), SPL_FNAME_ADD) != NULL)
|
||||
if (strstr((char *)path_tail(wfname), SPL_FNAME_ADD) != NULL)
|
||||
spin.si_add = TRUE;
|
||||
}
|
||||
|
||||
if (incount <= 0)
|
||||
EMSG(_(e_invarg)); /* need at least output and input names */
|
||||
else if (vim_strchr(gettail(wfname), '_') != NULL)
|
||||
else if (vim_strchr(path_tail(wfname), '_') != NULL)
|
||||
EMSG(_("E751: Output file name must not have region name"));
|
||||
else if (incount > 8)
|
||||
EMSG(_("E754: Only up to 8 regions supported"));
|
||||
@@ -8238,7 +8238,7 @@ mkspell (
|
||||
|
||||
if (incount > 1) {
|
||||
len = (int)STRLEN(innames[i]);
|
||||
if (STRLEN(gettail(innames[i])) < 5
|
||||
if (STRLEN(path_tail(innames[i])) < 5
|
||||
|| innames[i][len - 3] != '_') {
|
||||
EMSG2(_("E755: Invalid region in %s"), innames[i]);
|
||||
goto theend;
|
||||
@@ -8607,7 +8607,7 @@ static void init_spellfile(void)
|
||||
->lp_slang->sl_fname;
|
||||
vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
|
||||
fname != NULL
|
||||
&& strstr((char *)gettail(fname), ".ascii.") != NULL
|
||||
&& strstr((char *)path_tail(fname), ".ascii.") != NULL
|
||||
? (char_u *)"ascii" : spell_enc());
|
||||
set_option_value((char_u *)"spellfile", 0L, buf, OPT_LOCAL);
|
||||
break;
|
||||
|
@@ -2113,7 +2113,7 @@ get_tagfname (
|
||||
return FAIL;
|
||||
++tnp->tn_hf_idx;
|
||||
STRCPY(buf, p_hf);
|
||||
STRCPY(gettail(buf), "tags");
|
||||
STRCPY(path_tail(buf), "tags");
|
||||
} else
|
||||
vim_strncpy(buf, ((char_u **)(tag_fnames.ga_data))[
|
||||
tnp->tn_hf_idx++], MAXPATHL - 1);
|
||||
@@ -2162,7 +2162,7 @@ get_tagfname (
|
||||
r_ptr = vim_findfile_stopdir(buf);
|
||||
/* move the filename one char forward and truncate the
|
||||
* filepath with a NUL */
|
||||
filename = gettail(buf);
|
||||
filename = path_tail(buf);
|
||||
STRMOVE(filename + 1, filename);
|
||||
*filename++ = NUL;
|
||||
|
||||
@@ -2702,7 +2702,7 @@ static char_u *expand_tag_fname(char_u *fname, char_u *tag_fname, int expand)
|
||||
|
||||
if ((p_tr || curbuf->b_help)
|
||||
&& !vim_isAbsName(fname)
|
||||
&& (p = gettail(tag_fname)) != tag_fname) {
|
||||
&& (p = path_tail(tag_fname)) != tag_fname) {
|
||||
retval = alloc(MAXPATHL);
|
||||
if (retval != NULL) {
|
||||
STRCPY(retval, tag_fname);
|
||||
|
@@ -719,7 +719,7 @@ char_u *u_get_undo_file_name(char_u *buf_ffname, int reading)
|
||||
undo_file_name = vim_strnsave(ffname, (int)(STRLEN(ffname) + 5));
|
||||
if (undo_file_name == NULL)
|
||||
break;
|
||||
p = gettail(undo_file_name);
|
||||
p = path_tail(undo_file_name);
|
||||
memmove(p + 1, p, STRLEN(p) + 1);
|
||||
*p = '.';
|
||||
STRCAT(p, ".un~");
|
||||
|
@@ -1,4 +1,4 @@
|
||||
{:cimport, :internalize, :eq, :ffi, :lib, :cstr, :to_cstr} = require 'test.unit.helpers'
|
||||
{:cimport, :internalize, :eq, :neq, :ffi, :lib, :cstr, :to_cstr} = require 'test.unit.helpers'
|
||||
|
||||
path = lib
|
||||
|
||||
@@ -7,10 +7,12 @@ typedef enum file_comparison {
|
||||
FPC_SAME = 1, FPC_DIFF = 2, FPC_NOTX = 4, FPC_DIFFX = 6, FPC_SAMEX = 7
|
||||
} FileComparison;
|
||||
FileComparison path_full_compare(char_u *s1, char_u *s2, int checkname);
|
||||
char_u *path_tail(char_u *fname);
|
||||
]]
|
||||
|
||||
-- import constants parsed by ffi
|
||||
{:FPC_SAME, :FPC_DIFF, :FPC_NOTX, :FPC_DIFFX, :FPC_SAMEX} = path
|
||||
NULL = ffi.cast 'void*', 0
|
||||
|
||||
describe 'path function', ->
|
||||
describe 'path_full_compare', ->
|
||||
@@ -49,3 +51,14 @@ describe 'path function', ->
|
||||
eq FPC_DIFFX, (path_full_compare f1, 'null.txt')
|
||||
eq FPC_DIFFX, (path_full_compare 'null.txt', f1)
|
||||
|
||||
describe 'path_tail', ->
|
||||
path_tail = (file) ->
|
||||
res = path.path_tail (to_cstr file)
|
||||
neq NULL, res
|
||||
ffi.string res
|
||||
|
||||
it 'returns the tail of a given file path', ->
|
||||
eq 'file.txt', path_tail 'directory/file.txt'
|
||||
|
||||
it 'returns an empty string if file ends in a slash', ->
|
||||
eq '', path_tail 'directory/'
|
||||
|
Reference in New Issue
Block a user