summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2018-11-13 14:37:02 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-11-14 05:41:15 (GMT)
commit1e1a876bb2c895d59db8b7c8c4eb49ceef454bd3 (patch)
tree882f769a0ce05895ed5a93d84d8e8a1196cc025f
parentd166e6afe5f257217836ef24a73764eba390c58d (diff)
downloadgit-1e1a876bb2c895d59db8b7c8c4eb49ceef454bd3.zip
git-1e1a876bb2c895d59db8b7c8c4eb49ceef454bd3.tar.gz
git-1e1a876bb2c895d59db8b7c8c4eb49ceef454bd3.tar.bz2
mingw: use `CreateHardLink()` directly
The function `CreateHardLink()` is available in all supported Windows versions (even since Windows XP), so there is no more need to resolve it at runtime. Helped-by: Max Kirillov <max@max630.net> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--compat/mingw.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index d2f4fab..14ef818 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -2211,24 +2211,12 @@ int mingw_raise(int sig)
int link(const char *oldpath, const char *newpath)
{
- typedef BOOL (WINAPI *T)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES);
- static T create_hard_link = NULL;
wchar_t woldpath[MAX_PATH], wnewpath[MAX_PATH];
if (xutftowcs_path(woldpath, oldpath) < 0 ||
xutftowcs_path(wnewpath, newpath) < 0)
return -1;
- if (!create_hard_link) {
- create_hard_link = (T) GetProcAddress(
- GetModuleHandle("kernel32.dll"), "CreateHardLinkW");
- if (!create_hard_link)
- create_hard_link = (T)-1;
- }
- if (create_hard_link == (T)-1) {
- errno = ENOSYS;
- return -1;
- }
- if (!create_hard_link(wnewpath, woldpath, NULL)) {
+ if (!CreateHardLinkW(wnewpath, woldpath, NULL)) {
errno = err_win_to_posix(GetLastError());
return -1;
}