diff options
author | kinichiro <kinichiro.inoguchi@gmail.com> | 2018-02-25 01:59:39 +0900 |
---|---|---|
committer | kinichiro <kinichiro.inoguchi@gmail.com> | 2018-02-25 21:56:05 +0900 |
commit | 3681d02253d29229e265720984ce81a35206de4c (patch) | |
tree | 95590bed234fb09e40e14feb5cdb6c0120f07334 /tls | |
parent | 47781e69e2946011ea7bd0723e98a2fedff88980 (diff) | |
download | portable-3681d02253d29229e265720984ce81a35206de4c.tar.gz portable-3681d02253d29229e265720984ce81a35206de4c.tar.bz2 portable-3681d02253d29229e265720984ce81a35206de4c.zip |
Add compat bits for libtls on Windows
Diffstat (limited to 'tls')
-rw-r--r-- | tls/CMakeLists.txt | 10 | ||||
-rw-r--r-- | tls/Makefile.am | 7 | ||||
-rw-r--r-- | tls/compat/ftruncate.c | 13 | ||||
-rw-r--r-- | tls/compat/getuid.c | 14 | ||||
-rw-r--r-- | tls/compat/pread.c | 23 | ||||
-rw-r--r-- | tls/compat/pwrite.c | 23 |
6 files changed, 90 insertions, 0 deletions
diff --git a/tls/CMakeLists.txt b/tls/CMakeLists.txt index bc0c8f5..0e13da5 100644 --- a/tls/CMakeLists.txt +++ b/tls/CMakeLists.txt | |||
@@ -19,6 +19,16 @@ set( | |||
19 | tls_verify.c | 19 | tls_verify.c |
20 | ) | 20 | ) |
21 | 21 | ||
22 | if(CMAKE_HOST_WIN32) | ||
23 | set( | ||
24 | TLS_SRC | ||
25 | ${TLS_SRC} | ||
26 | compat/ftruncate.c | ||
27 | compat/getuid.c | ||
28 | compat/pread.c | ||
29 | compat/pwrite.c | ||
30 | ) | ||
31 | endif() | ||
22 | 32 | ||
23 | if(NOT "${OPENSSLDIR}" STREQUAL "") | 33 | if(NOT "${OPENSSLDIR}" STREQUAL "") |
24 | add_definitions(-D_PATH_SSL_CA_FILE=\"${OPENSSLDIR}/cert.pem\") | 34 | add_definitions(-D_PATH_SSL_CA_FILE=\"${OPENSSLDIR}/cert.pem\") |
diff --git a/tls/Makefile.am b/tls/Makefile.am index bfe9571..58c0344 100644 --- a/tls/Makefile.am +++ b/tls/Makefile.am | |||
@@ -30,3 +30,10 @@ libtls_la_SOURCES += tls_peer.c | |||
30 | libtls_la_SOURCES += tls_util.c | 30 | libtls_la_SOURCES += tls_util.c |
31 | libtls_la_SOURCES += tls_verify.c | 31 | libtls_la_SOURCES += tls_verify.c |
32 | noinst_HEADERS = tls_internal.h | 32 | noinst_HEADERS = tls_internal.h |
33 | |||
34 | if HOST_WIN | ||
35 | libtls_la_SOURCES += compat/ftruncate.c | ||
36 | libtls_la_SOURCES += compat/getuid.c | ||
37 | libtls_la_SOURCES += compat/pread.c | ||
38 | libtls_la_SOURCES += compat/pwrite.c | ||
39 | endif | ||
diff --git a/tls/compat/ftruncate.c b/tls/compat/ftruncate.c new file mode 100644 index 0000000..e68e6d0 --- /dev/null +++ b/tls/compat/ftruncate.c | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * Public domain | ||
3 | * | ||
4 | * Kinichiro Inoguchi <inoguchi@openbsd.org> | ||
5 | */ | ||
6 | |||
7 | #include <unistd.h> | ||
8 | |||
9 | int | ||
10 | ftruncate(int fd, off_t length) | ||
11 | { | ||
12 | return _chsize(fd, length); | ||
13 | } | ||
diff --git a/tls/compat/getuid.c b/tls/compat/getuid.c new file mode 100644 index 0000000..632967a --- /dev/null +++ b/tls/compat/getuid.c | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Public domain | ||
3 | * | ||
4 | * Kinichiro Inoguchi <inoguchi@openbsd.org> | ||
5 | */ | ||
6 | |||
7 | #include <unistd.h> | ||
8 | |||
9 | uid_t | ||
10 | getuid(void) | ||
11 | { | ||
12 | /* Windows fstat sets 0 as st_uid */ | ||
13 | return 0; | ||
14 | } | ||
diff --git a/tls/compat/pread.c b/tls/compat/pread.c new file mode 100644 index 0000000..f0c9a2f --- /dev/null +++ b/tls/compat/pread.c | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Public domain | ||
3 | * | ||
4 | * Kinichiro Inoguchi <inoguchi@openbsd.org> | ||
5 | */ | ||
6 | |||
7 | #include <unistd.h> | ||
8 | |||
9 | ssize_t | ||
10 | pread(int d, void *buf, size_t nbytes, off_t offset) | ||
11 | { | ||
12 | off_t cpos, opos, rpos; | ||
13 | ssize_t bytes; | ||
14 | if((cpos = lseek(d, 0, SEEK_CUR)) == -1) | ||
15 | return -1; | ||
16 | if((opos = lseek(d, offset, SEEK_SET)) == -1) | ||
17 | return -1; | ||
18 | if((bytes = read(d, buf, nbytes)) == -1) | ||
19 | return -1; | ||
20 | if((rpos = lseek(d, cpos, SEEK_SET)) == -1) | ||
21 | return -1; | ||
22 | return bytes; | ||
23 | } | ||
diff --git a/tls/compat/pwrite.c b/tls/compat/pwrite.c new file mode 100644 index 0000000..a304f7a --- /dev/null +++ b/tls/compat/pwrite.c | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Public domain | ||
3 | * | ||
4 | * Kinichiro Inoguchi <inoguchi@openbsd.org> | ||
5 | */ | ||
6 | |||
7 | #include <unistd.h> | ||
8 | |||
9 | ssize_t | ||
10 | pwrite(int d, const void *buf, size_t nbytes, off_t offset) | ||
11 | { | ||
12 | off_t cpos, opos, rpos; | ||
13 | ssize_t bytes; | ||
14 | if((cpos = lseek(d, 0, SEEK_CUR)) == -1) | ||
15 | return -1; | ||
16 | if((opos = lseek(d, offset, SEEK_SET)) == -1) | ||
17 | return -1; | ||
18 | if((bytes = write(d, buf, nbytes)) == -1) | ||
19 | return -1; | ||
20 | if((rpos = lseek(d, cpos, SEEK_SET)) == -1) | ||
21 | return -1; | ||
22 | return bytes; | ||
23 | } | ||