Alexandre Julliard : version: Abstract resource finding into a common function.
Alexandre Julliard
julliard at winehq.org
Thu Oct 1 09:48:19 CDT 2009
Module: wine
Branch: master
Commit: e04b9984b60c4eecf31ae7b29717ce0a6871d575
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e04b9984b60c4eecf31ae7b29717ce0a6871d575
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Oct 1 13:53:42 2009 +0200
version: Abstract resource finding into a common function.
---
dlls/version/resource.c | 58 +++++++++++++++++++++--------------------------
1 files changed, 26 insertions(+), 32 deletions(-)
diff --git a/dlls/version/resource.c b/dlls/version/resource.c
index efd9115..2523aaa 100644
--- a/dlls/version/resource.c
+++ b/dlls/version/resource.c
@@ -390,38 +390,46 @@ static BOOL find_pe_resource( HFILE lzfd, LPCSTR typeid, LPCSTR resid,
}
+/***********************************************************************
+ * find_resource [internal]
+ */
+DWORD find_resource( HFILE lzfd, LPCSTR type, LPCSTR id, DWORD *reslen, DWORD *offset )
+{
+ DWORD magic = read_xx_header( lzfd );
+
+ switch (magic)
+ {
+ case IMAGE_OS2_SIGNATURE:
+ if (!find_ne_resource( lzfd, type, id, reslen, offset )) magic = 0;
+ break;
+ case IMAGE_NT_SIGNATURE:
+ if (!find_pe_resource( lzfd, type, id, reslen, offset )) magic = 0;
+ break;
+ }
+ return magic;
+}
+
+
/*************************************************************************
* GetFileResourceSize [VER.2]
*/
DWORD WINAPI GetFileResourceSize16( LPCSTR lpszFileName, LPCSTR lpszResType,
LPCSTR lpszResId, LPDWORD lpdwFileOffset )
{
- BOOL retv = FALSE;
HFILE lzfd;
OFSTRUCT ofs;
- DWORD reslen;
+ DWORD reslen = 0;
TRACE("(%s,type=%p,id=%p,off=%p)\n",
debugstr_a(lpszFileName), lpszResType, lpszResId, lpszResId );
lzfd = LZOpenFileA( (LPSTR)lpszFileName, &ofs, OF_READ );
- if ( lzfd < 0 ) return 0;
-
- switch ( read_xx_header( lzfd ) )
+ if (lzfd >= 0)
{
- case IMAGE_OS2_SIGNATURE:
- retv = find_ne_resource( lzfd, lpszResType, lpszResId,
- &reslen, lpdwFileOffset );
- break;
-
- case IMAGE_NT_SIGNATURE:
- retv = find_pe_resource( lzfd, lpszResType, lpszResId,
- &reslen, lpdwFileOffset );
- break;
+ if (!find_resource( lzfd, lpszResType, lpszResId, &reslen, lpdwFileOffset )) reslen = 0;
+ LZClose( lzfd );
}
-
- LZClose( lzfd );
- return retv? reslen : 0;
+ return reslen;
}
@@ -432,7 +440,6 @@ DWORD WINAPI GetFileResource16( LPCSTR lpszFileName, LPCSTR lpszResType,
LPCSTR lpszResId, DWORD dwFileOffset,
DWORD dwResLen, LPVOID lpvData )
{
- BOOL retv = FALSE;
HFILE lzfd;
OFSTRUCT ofs;
DWORD reslen = dwResLen;
@@ -446,20 +453,7 @@ DWORD WINAPI GetFileResource16( LPCSTR lpszFileName, LPCSTR lpszResType,
if ( !dwFileOffset )
{
- switch ( read_xx_header( lzfd ) )
- {
- case IMAGE_OS2_SIGNATURE:
- retv = find_ne_resource( lzfd, lpszResType, lpszResId,
- &reslen, &dwFileOffset );
- break;
-
- case IMAGE_NT_SIGNATURE:
- retv = find_pe_resource( lzfd, lpszResType, lpszResId,
- &reslen, &dwFileOffset );
- break;
- }
-
- if ( !retv )
+ if (!find_resource( lzfd, lpszResType, lpszResId, &reslen, &dwFileOffset ))
{
LZClose( lzfd );
return 0;
More information about the wine-cvs
mailing list