0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.0210

This commit is contained in:
Bram Moolenaar
2006-02-28 23:52:23 +00:00
parent b388adb188
commit 03f4855fc2
3 changed files with 79 additions and 0 deletions

View File

@@ -2547,6 +2547,61 @@ mch_isdir(char_u *name)
return (f & FILE_ATTRIBUTE_DIRECTORY) != 0;
}
/*
* Return TRUE if file "fname" has more than one link.
*/
int
mch_is_linked(char_u *fname)
{
HANDLE hFile;
int res = 0;
BY_HANDLE_FILE_INFORMATION inf;
#ifdef FEAT_MBYTE
WCHAR *wn = NULL;
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
wn = enc_to_ucs2(fname, NULL);
if (wn != NULL)
{
hFile = CreateFileW(wn, /* file name */
GENERIC_READ, /* access mode */
0, /* share mode */
NULL, /* security descriptor */
OPEN_EXISTING, /* creation disposition */
0, /* file attributes */
NULL); /* handle to template file */
if (hFile == INVALID_HANDLE_VALUE
&& GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
/* Retry with non-wide function (for Windows 98). */
vim_free(wn);
wn = NULL;
}
}
if (wn == NULL)
#endif
hFile = CreateFile(fname, /* file name */
GENERIC_READ, /* access mode */
0, /* share mode */
NULL, /* security descriptor */
OPEN_EXISTING, /* creation disposition */
0, /* file attributes */
NULL); /* handle to template file */
if (hFile != INVALID_HANDLE_VALUE)
{
if (GetFileInformationByHandle(hFile, &inf) != 0
&& inf.nNumberOfLinks > 1)
res = 1;
CloseHandle(hFile);
}
#ifdef FEAT_MBYTE
vim_free(wn);
#endif
return res;
}
/*
* Return TRUE if file or directory "name" is writable (not readonly).
* Strange semantics of Win32: a readonly directory is writable, but you can't