--- a/libpurple/win32/win32dep.c Thu Oct 26 22:38:06 2023 -0500
+++ b/libpurple/win32/win32dep.c Thu Oct 26 22:42:30 2023 -0500
@@ -48,35 +48,6 @@
-/* Escape windows dir separators. This is needed when paths are saved,
- and on being read back have their '\' chars used as an escape char.
- Returns an allocated string which needs to be freed.
-char *wpurple_escape_dirsep(const char *filename) {
- const char *tmp = filename;
- g_return_val_if_fail(filename != NULL, NULL);
- ret = g_malloc0(strlen(filename) + sepcount + 1);
/* Determine whether the specified dll contains the specified procedure.
If so, load it (if not already loaded). */
FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure) {
@@ -303,174 +274,6 @@
-gboolean wpurple_write_reg_string(HKEY rootkey, const char *subkey, const char *valname,
- gboolean success = FALSE;
- wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL,
- if(RegOpenKeyExW(rootkey, wc_subkey, 0,
- KEY_SET_VALUE, ®_key) == ERROR_SUCCESS) {
- wchar_t *wc_valname = NULL;
- wc_valname = g_utf8_to_utf16(valname, -1,
- wchar_t *wc_value = g_utf8_to_utf16(value, -1,
- int len = (wcslen(wc_value) * sizeof(wchar_t)) + 1;
- if(RegSetValueExW(reg_key, wc_valname, 0, REG_SZ,
- if(RegDeleteValueW(reg_key, wc_valname) == ERROR_SUCCESS)
-static HKEY _reg_open_key(HKEY rootkey, const char *subkey, REGSAM access) {
- wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL,
- rv = RegOpenKeyExW(rootkey, wc_subkey, 0, access, ®_key);
- if (rv != ERROR_SUCCESS) {
- char *errmsg = g_win32_error_message(rv);
- purple_debug_error("wpurple", "Could not open reg key '%s' subkey '%s'.\nMessage: (%ld) %s\n",
- ((rootkey == HKEY_LOCAL_MACHINE) ? "HKLM" :
- (rootkey == HKEY_CURRENT_USER) ? "HKCU" :
- (rootkey == HKEY_CLASSES_ROOT) ? "HKCR" : "???"),
-static gboolean _reg_read(HKEY reg_key, const char *valname, LPDWORD type, LPBYTE data, LPDWORD data_len) {
- wchar_t *wc_valname = NULL;
- wc_valname = g_utf8_to_utf16(valname, -1, NULL, NULL, NULL);
- rv = RegQueryValueExW(reg_key, wc_valname, 0, type, data, data_len);
- if (rv != ERROR_SUCCESS) {
- char *errmsg = g_win32_error_message(rv);
- purple_debug_error("wpurple", "Could not read from reg key value '%s'.\nMessage: (%ld) %s\n",
- return (rv == ERROR_SUCCESS);
-gboolean wpurple_reg_val_exists(HKEY rootkey, const char *subkey, const char *valname)
- wchar_t name_buffer[100];
- wchar_t *wc_valname = NULL;
- wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, NULL, NULL);
- retv = RegOpenKeyExW(rootkey, wc_subkey, 0, KEY_ENUMERATE_SUB_KEYS, &hkey);
- if (retv != ERROR_SUCCESS)
- if (valname[0] == '\0' || valname == NULL) {
- wc_valname = g_utf8_to_utf16(valname, -1, NULL, NULL, NULL);
- DWORD name_size = sizeof(name_buffer);
- retv = RegEnumValueW(hkey, index++, name_buffer, &name_size,
- NULL, NULL, NULL, NULL);
- if (retv != ERROR_SUCCESS)
- name_size /= sizeof(wchar_t);
- if (wcsncmp(name_buffer, wc_valname, name_size) == 0) {
-gboolean wpurple_read_reg_dword(HKEY rootkey, const char *subkey, const char *valname, LPDWORD result) {
- HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE);
- gboolean success = FALSE;
- if(_reg_read(reg_key, valname, &type, (LPBYTE)result, &nbytes))
-char *wpurple_read_reg_string(HKEY rootkey, const char *subkey, const char *valname) {
- HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE);
- if(_reg_read(reg_key, valname, &type, NULL, &nbytes) && type == REG_SZ) {
- LPBYTE data = (LPBYTE) g_new(wchar_t, ((nbytes + 1) / sizeof(wchar_t)) + 1);
- if(_reg_read(reg_key, valname, &type, data, &nbytes)) {
- wchar_t *wc_temp = (wchar_t*) data;
- wc_temp[nbytes / sizeof(wchar_t)] = '\0';
- result = g_utf16_to_utf8(wc_temp, -1,
int wpurple_input_pipe(int pipefd[2])
SOCKET sock_server, sock_client, sock_server_established;
--- a/libpurple/win32/win32dep.h Thu Oct 26 22:38:06 2023 -0500
+++ b/libpurple/win32/win32dep.h Thu Oct 26 22:42:30 2023 -0500
@@ -31,14 +31,6 @@
-/* the winapi headers don't yet have winhttp.h, so we use the struct from msdn directly */
- LPWSTR lpszAutoConfigUrl;
- LPWSTR lpszProxyBypass;
-} WINHTTP_CURRENT_USER_IE_PROXY_CONFIG;
/* rpcndr.h defines small as char, causing problems, so we need to undefine it */
@@ -51,11 +43,6 @@
/* Windows helper functions */
FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure);
-gboolean wpurple_reg_val_exists(HKEY rootkey, const char *subkey, const char *valname);
-gboolean wpurple_read_reg_dword(HKEY rootkey, const char *subkey, const char *valname, LPDWORD result);
-char *wpurple_read_reg_string(HKEY rootkey, const char *subkey, const char *valname); /* needs to be g_free'd */
-gboolean wpurple_write_reg_string(HKEY rootkey, const char *subkey, const char *valname, const char *value);
-char *wpurple_escape_dirsep(const char *filename); /* needs to be g_free'd */
/* Simulate unix pipes by creating a pair of connected sockets */
int wpurple_input_pipe(int pipefd[2]);