aboutsummaryrefslogtreecommitdiff
path: root/src/path.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/path.c')
-rw-r--r--src/path.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/path.c b/src/path.c
index 078c26467a..bfd21b426c 100644
--- a/src/path.c
+++ b/src/path.c
@@ -1673,3 +1673,24 @@ int after_pathsep(char_u *b, char_u *p)
&& (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
}
+/*
+ * Return TRUE if file names "f1" and "f2" are in the same directory.
+ * "f1" may be a short name, "f2" must be a full path.
+ */
+int same_directory(char_u *f1, char_u *f2)
+{
+ char_u ffname[MAXPATHL];
+ char_u *t1;
+ char_u *t2;
+
+ /* safety check */
+ if (f1 == NULL || f2 == NULL)
+ return FALSE;
+
+ (void)vim_FullName(f1, ffname, MAXPATHL, FALSE);
+ t1 = gettail_sep(ffname);
+ t2 = gettail_sep(f2);
+ return t1 - ffname == t2 - f2
+ && pathcmp((char *)ffname, (char *)f2, (int)(t1 - ffname)) == 0;
+}
+