diff options
author | Thomas Wienecke <wienecke.t@gmail.com> | 2014-03-30 01:57:46 +0100 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-03 10:32:41 -0300 |
commit | 6d712defa52e58627aca5c875677d14d705300e8 (patch) | |
tree | 69516dc311b87cc7840f05d0a88259fe2094a465 /src/path.c | |
parent | 81237af70e7ac2d2277f428da87ca5fa7b16c8e1 (diff) | |
download | rneovim-6d712defa52e58627aca5c875677d14d705300e8.tar.gz rneovim-6d712defa52e58627aca5c875677d14d705300e8.tar.bz2 rneovim-6d712defa52e58627aca5c875677d14d705300e8.zip |
Refactor fullpathcmp -> path_full_compare.
Diffstat (limited to 'src/path.c')
-rw-r--r-- | src/path.c | 65 |
1 files changed, 15 insertions, 50 deletions
diff --git a/src/path.c b/src/path.c index 1b22a1e656..e5680d5073 100644 --- a/src/path.c +++ b/src/path.c @@ -29,71 +29,36 @@ #define URL_SLASH 1 /* path_is_url() has found "://" */ #define URL_BACKSLASH 2 /* path_is_url() has found ":\\" */ -FileComparison fullpathcmp ( - char_u *s1, - char_u *s2, - int checkname -) +FileComparison path_full_compare(char_u *s1, char_u *s2, int checkname) { -#ifdef UNIX + assert(s1 && s2); char_u exp1[MAXPATHL]; char_u full1[MAXPATHL]; char_u full2[MAXPATHL]; - struct stat st1, st2; + uv_stat_t st1, st2; int r1, r2; expand_env(s1, exp1, MAXPATHL); - r1 = mch_stat((char *)exp1, &st1); - r2 = mch_stat((char *)s2, &st2); - if (r1 != 0 && r2 != 0) { - /* if mch_stat() doesn't work, may compare the names */ + r1 = os_stat(exp1, &st1); + r2 = os_stat(s2, &st2); + if (r1 != OK && r2 != OK) { + // If os_stat() doesn't work, may compare the names. if (checkname) { - if (fnamecmp(exp1, s2) == 0) - return FPC_SAMEX; - r1 = vim_FullName(exp1, full1, MAXPATHL, FALSE); - r2 = vim_FullName(s2, full2, MAXPATHL, FALSE); - if (r1 == OK && r2 == OK && fnamecmp(full1, full2) == 0) + vim_FullName(exp1, full1, MAXPATHL, FALSE); + vim_FullName(s2, full2, MAXPATHL, FALSE); + if (fnamecmp(full1, full2) == 0) { return FPC_SAMEX; + } } return FPC_NOTX; } - if (r1 != 0 || r2 != 0) + if (r1 != OK || r2 != OK) { return FPC_DIFFX; - if (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino) + } + if (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino) { return FPC_SAME; - return FPC_DIFF; -#else - char_u *exp1; /* expanded s1 */ - char_u *full1; /* full path of s1 */ - char_u *full2; /* full path of s2 */ - int retval = FPC_DIFF; - int r1, r2; - - /* allocate one buffer to store three paths (alloc()/free() is slow!) */ - if ((exp1 = alloc(MAXPATHL * 3)) != NULL) { - full1 = exp1 + MAXPATHL; - full2 = full1 + MAXPATHL; - - expand_env(s1, exp1, MAXPATHL); - r1 = vim_FullName(exp1, full1, MAXPATHL, FALSE); - r2 = vim_FullName(s2, full2, MAXPATHL, FALSE); - - /* If vim_FullName() fails, the file probably doesn't exist. */ - if (r1 != OK && r2 != OK) { - if (checkname && fnamecmp(exp1, s2) == 0) - retval = FPC_SAMEX; - else - retval = FPC_NOTX; - } else if (r1 != OK || r2 != OK) - retval = FPC_DIFFX; - else if (fnamecmp(full1, full2)) - retval = FPC_DIFF; - else - retval = FPC_SAME; - vim_free(exp1); } - return retval; -#endif + return FPC_DIFF; } /* |