From 7c68252560d46c538183ece85460e92ed9f98218 Mon Sep 17 00:00:00 2001 From: Juergen Schmied Date: Thu, 9 May 2002 19:38:06 +0000 Subject: [PATCH] Use only winapi functions in _convert_winnt_registry_to_wine_format. --- misc/registry.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/misc/registry.c b/misc/registry.c index 49ef205ee3c..74fc2a362ab 100644 --- a/misc/registry.c +++ b/misc/registry.c @@ -948,6 +948,7 @@ static int _nt_dump_nk(LPSTR key_name,char *base,nt_nk *nk,FILE *f,int level) DWORD *vl; LPSTR new_key_name = NULL; + TRACE("%s\n", key_name); if (nk->SubBlockId != NT_REG_KEY_BLOCK_ID) { ERR("unknown node id 0x%04x, please report!\n", nk->SubBlockId); @@ -1333,25 +1334,26 @@ error1: /* convert winnt native registry file to wine format [Internal] */ static LPSTR _convert_winnt_registry_to_wine_format(LPCSTR fn,int level) { - int fd; FILE *f; - DOS_FULL_NAME full_name; void *base; LPSTR ret = NULL; - struct stat st; + HANDLE hFile; + HANDLE hMapping; nt_regf *regf; nt_hbin *hbin; nt_hbin_sub *hbin_sub; nt_nk *nk; - if (!DOSFS_GetFullName( fn, 0, &full_name )) return NULL; + TRACE("%s\n", fn); - /* map the registry into the memory */ - if ((fd = open(full_name.long_name, O_RDONLY | O_NONBLOCK)) == -1) return NULL; - if ((fstat(fd, &st) == -1)) goto error1; - if (!st.st_size) goto error1; - if ((base = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED) goto error1; + hFile = CreateFileA( fn, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0 ); + if ( hFile == INVALID_HANDLE_VALUE ) return NULL; + hMapping = CreateFileMappingA( hFile, NULL, PAGE_READONLY|SEC_COMMIT, 0, 0, NULL ); + if (!hMapping) goto error1; + base = MapViewOfFile( hMapping, FILE_MAP_READ, 0, 0, 0 ); + CloseHandle( hMapping ); + if (!base) goto error1; /* control signature */ if (*(LPDWORD)base != NT_REG_HEADER_BLOCK_ID) { @@ -1389,9 +1391,9 @@ static LPSTR _convert_winnt_registry_to_wine_format(LPCSTR fn,int level) fclose(f); error: - munmap(base,st.st_size); + UnmapViewOfFile( base ); error1: - close(fd); + CloseHandle(hFile); return ret; }