mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Make unit tests work on win32
svn:r3094
This commit is contained in:
parent
c3c6873945
commit
ac759adb43
@ -1011,7 +1011,7 @@ static void dumpstats(int severity) {
|
||||
/** Called before we make any calls to network-related functions.
|
||||
* (Some operating systems require their network libraries to be
|
||||
* initialized.) */
|
||||
static int network_init(void)
|
||||
int network_init(void)
|
||||
{
|
||||
#ifdef MS_WINDOWS
|
||||
/* This silly exercise is necessary before windows will allow gethostbyname to work.
|
||||
|
@ -1387,6 +1387,7 @@ int proxy_mode(or_options_t *options);
|
||||
|
||||
void handle_signals(int is_parent);
|
||||
void tor_cleanup(void);
|
||||
int network_init(void);
|
||||
|
||||
int tor_main(int argc, char *argv[]);
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
/* $Id$ */
|
||||
const char test_c_id[] = "$Id$";
|
||||
|
||||
#include "orconfig.h"
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_FCNTL_H
|
||||
#include <fcntl.h>
|
||||
@ -12,8 +13,10 @@ const char test_c_id[] = "$Id$";
|
||||
#ifdef MS_WINDOWS
|
||||
/* For mkdir() */
|
||||
#include <direct.h>
|
||||
#endif
|
||||
#else
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
#include "or.h"
|
||||
#include "../common/test.h"
|
||||
#include "../common/torgzip.h"
|
||||
@ -34,10 +37,12 @@ setup_directory(void)
|
||||
int r;
|
||||
if (is_setup) return;
|
||||
|
||||
tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d", (int) getpid());
|
||||
#ifdef MS_WINDOWS
|
||||
// XXXX
|
||||
tor_snprintf(temp_dir, sizeof(temp_dir), "c:\\windows\\temp\\tor_test_%d", (int)getpid());
|
||||
r = mkdir(temp_dir);
|
||||
#else
|
||||
tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d", (int) getpid());
|
||||
r = mkdir(temp_dir, 0700);
|
||||
#endif
|
||||
if (r) {
|
||||
@ -60,6 +65,35 @@ get_fname(const char *name)
|
||||
static void
|
||||
remove_directory(void)
|
||||
{
|
||||
#ifdef MS_WINDOWS
|
||||
char *pattern;
|
||||
HANDLE handle;
|
||||
WIN32_FIND_DATA findData;
|
||||
|
||||
setup_directory();
|
||||
pattern = tor_malloc(strlen(temp_dir)+16);
|
||||
tor_snprintf(pattern, strlen(temp_dir)+16, "%s\\*", temp_dir);
|
||||
handle = FindFirstFile(pattern, &findData);
|
||||
if (handle == INVALID_HANDLE_VALUE) {
|
||||
perror("Can't remove");
|
||||
return;
|
||||
}
|
||||
while(1) {
|
||||
size_t dlen = strlen(findData.cFileName)+strlen(temp_dir)+16;
|
||||
char *deleteable = tor_malloc(dlen);
|
||||
tor_snprintf(deleteable, dlen, "%s\\%s", temp_dir, findData.cFileName);
|
||||
unlink(deleteable);
|
||||
tor_free(deleteable);
|
||||
if (!FindNextFile(handle, &findData)) {
|
||||
if (GetLastError() != ERROR_NO_MORE_FILES) {
|
||||
perror("error reading dir");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
FindClose(handle);
|
||||
tor_free(pattern);
|
||||
#else
|
||||
DIR *dirp;
|
||||
struct dirent *de;
|
||||
setup_directory();
|
||||
@ -78,6 +112,7 @@ remove_directory(void)
|
||||
#endif
|
||||
}
|
||||
closedir(dirp);
|
||||
#endif
|
||||
rmdir(temp_dir);
|
||||
}
|
||||
|
||||
@ -1239,6 +1274,7 @@ test_rend_fns(void)
|
||||
int
|
||||
main(int c, char**v) {
|
||||
or_options_t *options = tor_malloc_zero(sizeof(or_options_t));
|
||||
network_init();
|
||||
options_init(options);
|
||||
set_options(options);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user