Fix conditional branch to same target simplification.
[smatch.git] / compat-mingw.c
blob66456c72442983ed6b7fe0b44366e31fd085f646
1 /*
2 * Mingw Compatibility functions
3 *
4 *
5 * Licensed under the Open Software License version 1.1
6 */
10 #include <stdarg.h>
11 #include <windef.h>
12 #include <winbase.h>
13 #include <stdlib.h>
14 #include <string.h>
16 #include "lib.h"
17 #include "allocate.h"
18 #include "token.h"
20 void *blob_alloc(unsigned long size)
22 void *ptr;
23 ptr = malloc(size);
24 if (ptr != NULL)
25 memset(ptr, 0, size);
26 return ptr;
29 void blob_free(void *addr, unsigned long size)
31 free(addr);
34 long double string_to_ld(const char *nptr, char **endptr)
36 return strtod(nptr, endptr);
39 int identical_files(struct stream* s, struct stat *st, const char * name)
41 HANDLE file1 =CreateFile(s->name,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
42 if(file1==INVALID_HANDLE_VALUE)
43 return 0;
44 HANDLE file2=CreateFile(name,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
45 if(file2==INVALID_HANDLE_VALUE) {
46 CloseHandle(file1);
47 return 0;
49 BY_HANDLE_FILE_INFORMATION info1;
50 BY_HANDLE_FILE_INFORMATION info2;
51 int same=0;
52 if(GetFileInformationByHandle(file1,&info1) && GetFileInformationByHandle(file2,&info2)){
53 if(info1.nFileIndexLow==info2.nFileIndexLow &&
54 info1.nFileIndexHigh==info2.nFileIndexHigh &&
55 info1.dwVolumeSerialNumber==info2.dwVolumeSerialNumber)
56 same=1;
58 CloseHandle(file1);
59 CloseHandle(file2);
60 return same;