Implemented a few Url* functions.
diff --git a/include/shlwapi.h b/include/shlwapi.h
index a3531c8..57e0a6c 100644
--- a/include/shlwapi.h
+++ b/include/shlwapi.h
@@ -7,6 +7,27 @@
extern "C" {
#endif /* defined(__cplusplus) */
+
+/*
+ * The URL_ defines were determined by trial and error. If they become
+ * documented please check them and add the missing ones including:
+ *
+ * URL_ESCAPE_PERCENT
+ * URL_PLUGGABLE_PROTOCOL
+ * URL_DONT_ESCAPE_EXTRA_INFO
+ * URL_ESCAPE_SEGMENT_ONLY
+ */
+
+#define URL_UNESCAPE_INPLACE 0x00100000
+#define URL_DONT_UNESCAPE_EXTRA_INFO 0x02000000
+
+#define URL_ESCAPE_SPACES_ONLY 0x04000000
+
+#define URL_UNESCAPE 0x10000000
+#define URL_ESCAPE_UNSAFE 0x20000000
+#define URL_DONT_SIMPLIFY 0x40000000
+
+
BOOL WINAPI PathAppendA(LPSTR lpszPath1,LPCSTR lpszPath2);
BOOL WINAPI PathAppendW(LPWSTR lpszPath1,LPCWSTR lpszPath2);
@@ -130,6 +151,24 @@
DWORD WINAPI SHDeleteEmptyKeyW(HKEY hKey, LPCWSTR lpszSubKey);
#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
+HRESULT WINAPI UrlCanonicalizeA(LPCSTR pszUrl, LPSTR pszCanonicalized,
+ LPDWORD pcchCanonicalized, DWORD dwFlags);
+HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized,
+ LPDWORD pcchCanonicalized, DWORD dwFlags);
+#define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
+
+HRESULT WINAPI UrlEscapeA(LPCSTR pszUrl, LPSTR pszEscaped, LPDWORD pcchEscaped,
+ DWORD dwFlags);
+HRESULT WINAPI UrlEscapeW(LPCWSTR pszUrl, LPWSTR pszEscaped,
+ LPDWORD pcchEscaped, DWORD dwFlags);
+#define UrlEscape WINELIB_NAME_AW(UrlEscape)
+
+HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped,
+ LPDWORD pcchUnescaped, DWORD dwFlags);
+HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped,
+ LPDWORD pcchUnescaped, DWORD dwFlags);
+#define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
+
typedef struct _DllVersionInfo {
DWORD cbSize;
DWORD dwMajorVersion;