/* * Copyright 2018, University Corporation for Atmospheric Research * See netcdf/COPYRIGHT file for copying and redistribution conditions. */ #include "config.h" #include #include #include #include #include #include #include #include #include //#include #if defined(DLL_NETCDF) /* define when library is a DLL */ # if defined(DLL_EXPORT) /* define when building the library */ # define MSC_EXTRA __declspec(dllexport) # else # define MSC_EXTRA __declspec(dllimport) # endif #else # define MSC_EXTRA #endif /* defined(DLL_NETCDF) */ #ifndef EXTERNL # define EXTERNL MSC_EXTRA extern #endif EXTERNL int getmountpoint(char* keyvalue, size_t size) { /* See if we can get the MSYS2|CYGWIN prefix from the registry */ LSTATUS stat; const LPCSTR rpath = "SOFTWARE\\Cygwin\\setup\\"; const LPCSTR leaf = "rootdir"; HKEY key; if(size == 0 || keyvalue == NULL) return -1; keyvalue[0] = '\0'; stat = RegOpenKeyA(HKEY_LOCAL_MACHINE, rpath, &key); if(stat != ERROR_SUCCESS) { // wprintf(L"RegOpenKeyA failed. Error code: %li\n", stat); goto done; } stat = RegGetValueA(key, NULL, leaf, RRF_RT_REG_SZ, NULL, (PVOID)keyvalue, (LPDWORD)&size); if(stat != ERROR_SUCCESS) { // wprintf(L"RegGetValueA failed. Error code: %li\n", stat); goto done; } done: return (stat == ERROR_SUCCESS ? 0 : -1); }