2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: lib/dnsapi/precomp.h
5 * PURPOSE: Win32 DNS API Libary Header
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
12 /* INCLUDES ******************************************************************/
16 /* PSDK/NDK Headers */
17 #define WIN32_NO_STATUS
19 #define COM_NO_WINDOWS_H
24 #define NTOS_MODE_USER
25 #include <ndk/rtlfuncs.h>
27 /* Internal DNSAPI Headers */
28 #include <internal/windns.h>
30 static inline LPWSTR
dns_strdup_uw( const char *str
)
35 DWORD len
= MultiByteToWideChar( CP_UTF8
, 0, str
, -1, NULL
, 0 );
36 if ((ret
= HeapAlloc(GetProcessHeap(),0,( len
* sizeof(WCHAR
) ))))
37 MultiByteToWideChar( CP_UTF8
, 0, str
, -1, ret
, len
);
42 static inline LPWSTR
dns_strdup_aw( LPCSTR str
)
47 DWORD len
= MultiByteToWideChar( CP_ACP
, 0, str
, -1, NULL
, 0 );
48 if ((ret
= HeapAlloc(GetProcessHeap(), 0, ( len
* sizeof(WCHAR
) ))))
49 MultiByteToWideChar( CP_ACP
, 0, str
, -1, ret
, len
);
54 static inline LPSTR
dns_strdup_a( LPCSTR src
)
58 if (!src
) return NULL
;
59 dst
= HeapAlloc(GetProcessHeap(), 0, (lstrlenA( src
) + 1) * sizeof(char) );
60 if (dst
) lstrcpyA( dst
, src
);
64 static inline char *dns_strdup_u( const char *src
)
68 if (!src
) return NULL
;
69 dst
= HeapAlloc(GetProcessHeap(), 0, (strlen( src
) + 1) * sizeof(char) );
70 if (dst
) strcpy( dst
, src
);
74 static inline LPWSTR
dns_strdup_w( LPCWSTR src
)
78 if (!src
) return NULL
;
79 dst
= HeapAlloc(GetProcessHeap(), 0, (lstrlenW( src
) + 1) * sizeof(WCHAR
) );
80 if (dst
) lstrcpyW( dst
, src
);
84 static inline LPSTR
dns_strdup_wa( LPCWSTR str
)
89 DWORD len
= WideCharToMultiByte( CP_ACP
, 0, str
, -1, NULL
, 0, NULL
, NULL
);
90 if ((ret
= HeapAlloc(GetProcessHeap(), 0, len
)))
91 WideCharToMultiByte( CP_ACP
, 0, str
, -1, ret
, len
, NULL
, NULL
);
96 static inline char *dns_strdup_wu( LPCWSTR str
)
101 DWORD len
= WideCharToMultiByte( CP_UTF8
, 0, str
, -1, NULL
, 0, NULL
, NULL
);
102 if ((ret
= HeapAlloc(GetProcessHeap(), 0, len
)))
103 WideCharToMultiByte( CP_UTF8
, 0, str
, -1, ret
, len
, NULL
, NULL
);
108 static inline char *dns_strdup_au( LPCSTR src
)
111 LPWSTR ret
= dns_strdup_aw( src
);
115 dst
= dns_strdup_wu( ret
);
116 HeapFree( GetProcessHeap(), 0, ret
);
121 static inline LPSTR
dns_strdup_ua( const char *src
)
124 LPWSTR ret
= dns_strdup_uw( src
);
128 dst
= dns_strdup_wa( ret
);
129 HeapFree( GetProcessHeap(), 0, ret
);
134 #endif /* _DNSAPI_H */