- Fix for Win32 fixing Victor's fix for *nix.
[swift-upb.git] / compat.h
1 /*
2  *  compat.h
3  *  p2tp
4  *
5  *  Created by Arno Bakker, Victor Grishchenko
6  *  Copyright 2009 Delft University of Technology. All rights reserved.
7  *
8  */
9 #ifndef P2TP_COMPAT_H
10 #define P2TP_COMPAT_H
11
12 #ifdef _MSC_VER
13 #include "compat/stdint.h"
14 #else
15 #include <stdint.h>
16 #endif
17 #ifdef _WIN32
18 #include <winsock2.h>
19 #include <sys/stat.h>
20 #include <io.h>
21 #else
22 #include <sys/mman.h>
23 #endif
24 #include <fcntl.h>
25 #include <stdio.h>
26 #include <stdlib.h>
27
28 #ifdef _WIN32
29 #define open(a,b,c)     _open(a,b,c)
30 #define S_IRUSR _S_IREAD
31 #define S_IWUSR _S_IWRITE
32 #define S_IRGRP _S_IREAD
33 #define S_IROTH _S_IREAD
34 #endif
35
36 namespace p2tp {
37
38 typedef int64_t tint;
39 #define TINT_HOUR ((tint)1000000*60*60)
40 #define TINT_MIN ((tint)1000000*60)
41 #define TINT_SEC ((tint)1000000)
42 #define TINT_MSEC ((tint)1000)
43 #define TINT_uSEC ((tint)1)
44 #define TINT_NEVER ((tint)0x7fffffffffffffffLL)
45
46
47 size_t  file_size (int fd);
48
49 int     file_seek (int fd, size_t offset);
50
51 int     file_resize (int fd, size_t new_size);
52
53 void*   memory_map (int fd, size_t size=0);
54 void    memory_unmap (int fd, void*, size_t size);
55
56 void    print_error (const char* msg);
57
58 #ifdef _WIN32
59
60 /** UNIX pread approximation. Does change file pointer. Is not thread-safe */
61 size_t  pread(int fildes, void *buf, size_t nbyte, long offset);
62
63 /** UNIX pwrite approximation. Does change file pointer. Is not thread-safe */
64 size_t  pwrite(int fildes, const void *buf, size_t nbyte, long offset);
65
66 int     inet_aton(const char *cp, struct in_addr *inp);
67
68 #endif
69
70 tint    usec_time ();
71
72 };
73
74 #endif
75