aboutsummaryrefslogtreecommitdiff
path: root/tls
diff options
context:
space:
mode:
authorkinichiro <kinichiro.inoguchi@gmail.com>2018-02-25 01:59:39 +0900
committerkinichiro <kinichiro.inoguchi@gmail.com>2018-02-25 21:56:05 +0900
commit3681d02253d29229e265720984ce81a35206de4c (patch)
tree95590bed234fb09e40e14feb5cdb6c0120f07334 /tls
parent47781e69e2946011ea7bd0723e98a2fedff88980 (diff)
downloadportable-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.txt10
-rw-r--r--tls/Makefile.am7
-rw-r--r--tls/compat/ftruncate.c13
-rw-r--r--tls/compat/getuid.c14
-rw-r--r--tls/compat/pread.c23
-rw-r--r--tls/compat/pwrite.c23
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
22if(CMAKE_HOST_WIN32)
23set(
24 TLS_SRC
25 ${TLS_SRC}
26 compat/ftruncate.c
27 compat/getuid.c
28 compat/pread.c
29 compat/pwrite.c
30)
31endif()
22 32
23if(NOT "${OPENSSLDIR}" STREQUAL "") 33if(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
30libtls_la_SOURCES += tls_util.c 30libtls_la_SOURCES += tls_util.c
31libtls_la_SOURCES += tls_verify.c 31libtls_la_SOURCES += tls_verify.c
32noinst_HEADERS = tls_internal.h 32noinst_HEADERS = tls_internal.h
33
34if HOST_WIN
35libtls_la_SOURCES += compat/ftruncate.c
36libtls_la_SOURCES += compat/getuid.c
37libtls_la_SOURCES += compat/pread.c
38libtls_la_SOURCES += compat/pwrite.c
39endif
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
9int
10ftruncate(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
9uid_t
10getuid(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
9ssize_t
10pread(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
9ssize_t
10pwrite(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}