msvcrt: Improve acosf compatibility with native ucrtbase.
[wine.git] / dlls / shlwapi / istream.c
blob37fa4c6ddccc7422f4b522c66d663f588cdbe0a9
1 /*
2 * SHLWAPI IStream functions
4 * Copyright 2002 Jon Griffiths
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #include <stdarg.h>
21 #include <string.h>
23 #define COBJMACROS
24 #define NONAMELESSUNION
26 #include "windef.h"
27 #include "winbase.h"
28 #include "winerror.h"
29 #include "winnls.h"
30 #define NO_SHLWAPI_REG
31 #define NO_SHLWAPI_PATH
32 #include "shlwapi.h"
33 #include "wine/debug.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(shell);
37 /*************************************************************************
38 * @ [SHLWAPI.166]
40 * Determine if a stream has 0 length.
42 * PARAMS
43 * lpStream [I] IStream object
45 * RETURNS
46 * TRUE: If the stream has 0 length
47 * FALSE: Otherwise.
49 BOOL WINAPI SHIsEmptyStream(IStream *lpStream)
51 STATSTG statstg;
52 BOOL bRet = TRUE;
54 TRACE("(%p)\n", lpStream);
56 memset(&statstg, 0, sizeof(statstg));
58 if(SUCCEEDED(IStream_Stat(lpStream, &statstg, 1)))
60 if(statstg.cbSize.QuadPart)
61 bRet = FALSE; /* Non-Zero */
63 else
65 DWORD dummy, read_len;
67 /* Try to read from the stream */
68 if (SUCCEEDED(IStream_Read(lpStream, &dummy, sizeof(dummy), &read_len)) && read_len == sizeof(dummy))
70 LARGE_INTEGER zero;
71 zero.QuadPart = 0;
73 IStream_Seek(lpStream, zero, 0, NULL);
74 bRet = FALSE; /* Non-Zero */
77 return bRet;