mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Move format_win32_error into lib/log/
This commit is contained in:
parent
356f59b1bd
commit
3246c114a2
@ -1934,51 +1934,6 @@ network_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
/** Return a newly allocated string describing the windows system error code
|
||||
* <b>err</b>. Note that error codes are different from errno. Error codes
|
||||
* come from GetLastError() when a winapi call fails. errno is set only when
|
||||
* ANSI functions fail. Whee. */
|
||||
char *
|
||||
format_win32_error(DWORD err)
|
||||
{
|
||||
TCHAR *str = NULL;
|
||||
char *result;
|
||||
DWORD n;
|
||||
|
||||
/* Somebody once decided that this interface was better than strerror(). */
|
||||
n = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, err,
|
||||
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
|
||||
(LPVOID)&str,
|
||||
0, NULL);
|
||||
|
||||
if (str && n) {
|
||||
#ifdef UNICODE
|
||||
size_t len;
|
||||
if (n > 128*1024)
|
||||
len = (128 * 1024) * 2 + 1; /* This shouldn't be possible, but let's
|
||||
* make sure. */
|
||||
else
|
||||
len = n * 2 + 1;
|
||||
result = tor_malloc(len);
|
||||
wcstombs(result,str,len);
|
||||
result[len-1] = '\0';
|
||||
#else /* !(defined(UNICODE)) */
|
||||
result = tor_strdup(str);
|
||||
#endif /* defined(UNICODE) */
|
||||
} else {
|
||||
result = tor_strdup("<unformattable error>");
|
||||
}
|
||||
if (str) {
|
||||
LocalFree(str); /* LocalFree != free() */
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif /* defined(_WIN32) */
|
||||
|
||||
#if defined(HW_PHYSMEM64)
|
||||
/* This appears to be an OpenBSD thing */
|
||||
#define INT64_HW_MEM HW_PHYSMEM64
|
||||
|
@ -50,6 +50,7 @@
|
||||
#include "lib/string/compat_ctype.h"
|
||||
#include "lib/string/compat_string.h"
|
||||
#include "lib/string/printf.h"
|
||||
#include "lib/log/win32err.h"
|
||||
#include "lib/net/socket.h"
|
||||
#include "lib/net/ipv4.h"
|
||||
#include "lib/net/ipv6.h"
|
||||
@ -250,11 +251,6 @@ int tor_mlockall(void);
|
||||
#define MIN(a,b) ( ((a)>(b)) ? (b) : (a) )
|
||||
#endif
|
||||
|
||||
/* Platform-specific helpers. */
|
||||
#ifdef _WIN32
|
||||
char *format_win32_error(DWORD err);
|
||||
#endif
|
||||
|
||||
/*for some reason my compiler doesn't have these version flags defined
|
||||
a nice homework assignment for someone one day is to define the rest*/
|
||||
//these are the values as given on MSDN
|
||||
|
@ -9,7 +9,8 @@ src_lib_libtor_log_a_SOURCES = \
|
||||
src/lib/log/escape.c \
|
||||
src/lib/log/ratelim.c \
|
||||
src/lib/log/torlog.c \
|
||||
src/lib/log/util_bug.c
|
||||
src/lib/log/util_bug.c \
|
||||
src/lib/log/win32err.c
|
||||
|
||||
src_lib_libtor_log_testing_a_SOURCES = \
|
||||
$(src_lib_libtor_log_a_SOURCES)
|
||||
@ -23,4 +24,5 @@ noinst_HEADERS += \
|
||||
src/lib/log/escape.h \
|
||||
src/lib/log/ratelim.h \
|
||||
src/lib/log/torlog.h \
|
||||
src/lib/log/util_bug.h
|
||||
src/lib/log/util_bug.h \
|
||||
src/lib/log/win32err.h
|
||||
|
56
src/lib/log/win32err.c
Normal file
56
src/lib/log/win32err.c
Normal file
@ -0,0 +1,56 @@
|
||||
/* Copyright (c) 2003-2004, Roger Dingledine
|
||||
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||
* Copyright (c) 2007-2018, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "orconfig.h"
|
||||
#include "lib/log/win32err.h"
|
||||
#include "lib/malloc/util_malloc.h"
|
||||
|
||||
#include <tchar.h>
|
||||
#include <windows.h>
|
||||
|
||||
/** Return a newly allocated string describing the windows system error code
|
||||
* <b>err</b>. Note that error codes are different from errno. Error codes
|
||||
* come from GetLastError() when a winapi call fails. errno is set only when
|
||||
* ANSI functions fail. Whee. */
|
||||
char *
|
||||
format_win32_error(DWORD err)
|
||||
{
|
||||
TCHAR *str = NULL;
|
||||
char *result;
|
||||
DWORD n;
|
||||
|
||||
/* Somebody once decided that this interface was better than strerror(). */
|
||||
n = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, err,
|
||||
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
|
||||
(LPVOID)&str,
|
||||
0, NULL);
|
||||
|
||||
if (str && n) {
|
||||
#ifdef UNICODE
|
||||
size_t len;
|
||||
if (n > 128*1024)
|
||||
len = (128 * 1024) * 2 + 1; /* This shouldn't be possible, but let's
|
||||
* make sure. */
|
||||
else
|
||||
len = n * 2 + 1;
|
||||
result = tor_malloc(len);
|
||||
wcstombs(result,str,len);
|
||||
result[len-1] = '\0';
|
||||
#else /* !(defined(UNICODE)) */
|
||||
result = tor_strdup(str);
|
||||
#endif /* defined(UNICODE) */
|
||||
} else {
|
||||
result = tor_strdup("<unformattable error>");
|
||||
}
|
||||
if (str) {
|
||||
LocalFree(str); /* LocalFree != free() */
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif /* defined(_WIN32) */
|
17
src/lib/log/win32err.h
Normal file
17
src/lib/log/win32err.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* Copyright (c) 2003-2004, Roger Dingledine
|
||||
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||
* Copyright (c) 2007-2018, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
#ifndef TOR_WIN32ERR_H
|
||||
#define TOR_WIN32ERR_H
|
||||
|
||||
#include "orconfig.h"
|
||||
|
||||
/* Platform-specific helpers. */
|
||||
#ifdef _WIN32
|
||||
#include <windef.h>
|
||||
char *format_win32_error(DWORD err);
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user