summaryrefslogtreecommitdiff
path: root/wince/include
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2001-08-02 13:25:43 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-08-02 13:25:43 +0000
commite1caacb4fdb62cb28dc825ca0115faf95e569339 (patch)
tree82b5eb0dc32a568bebeaf78d402b2441de840112 /wince/include
parent6f2ad931e2b0390c895341c3cd8e3fad2616118f (diff)
downloadperl-e1caacb4fdb62cb28dc825ca0115faf95e569339.tar.gz
Integrate the PerlCE (WinCE Perl) port;
kindly supplied by Rainer Keuchel <rkeuc@allgeier.com>. p4raw-id: //depot/perl@11549
Diffstat (limited to 'wince/include')
-rw-r--r--wince/include/arpa/inet.h4
-rw-r--r--wince/include/cectype.h19
-rw-r--r--wince/include/errno.h49
-rw-r--r--wince/include/netdb.h12
-rw-r--r--wince/include/sys/socket.h217
-rw-r--r--wince/include/sys/stat.h55
-rw-r--r--wince/include/sys/types.h23
-rw-r--r--wince/include/sys/utime.h18
-rw-r--r--wince/include/time.h58
9 files changed, 455 insertions, 0 deletions
diff --git a/wince/include/arpa/inet.h b/wince/include/arpa/inet.h
new file mode 100644
index 0000000000..0303df0876
--- /dev/null
+++ b/wince/include/arpa/inet.h
@@ -0,0 +1,4 @@
+/*
+ * this is a dummy header file for Socket.xs
+ */
+
diff --git a/wince/include/cectype.h b/wince/include/cectype.h
new file mode 100644
index 0000000000..3531ba2ac0
--- /dev/null
+++ b/wince/include/cectype.h
@@ -0,0 +1,19 @@
+#ifndef CECTYPE_H
+#define CECTYPE_H 1
+
+#if UNDER_CE < 300
+#define isdigit(C) iswdigit(C)
+#define isalpha(C) iswalpha(C)
+#define islower(C) iswlower(C)
+#define isupper(C) iswupper(C)
+#define isspace(C) iswspace(C)
+#define isalnum(C) iswalnum(C)
+#define iscntrl(C) iswcntrl(C)
+#define isprint(C) iswprint(C)
+#define ispunct(C) iswpunct(C)
+#define isxdigit(C) iswxdigit(C)
+#define isascii(C) iswascii(C)
+#define isgraph(C) iswgraph(C)
+#endif
+
+#endif
diff --git a/wince/include/errno.h b/wince/include/errno.h
new file mode 100644
index 0000000000..29c4775d37
--- /dev/null
+++ b/wince/include/errno.h
@@ -0,0 +1,49 @@
+#ifndef ERRNO_H
+#define ERRNO_H 1
+
+#ifdef wince_private
+#include <cethread.h>
+#ifdef _MT
+#define errno _getptd()->_terrno
+#else
+extern int errno;
+#endif
+#endif
+
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define EOSERR 15 // rk
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define EDEADLK 36
+#define ENOSYS 37
+
+#endif
diff --git a/wince/include/netdb.h b/wince/include/netdb.h
new file mode 100644
index 0000000000..b0c5ea1949
--- /dev/null
+++ b/wince/include/netdb.h
@@ -0,0 +1,12 @@
+// netdb.h
+
+// djl
+// Provide UNIX compatibility
+
+
+#ifndef _INC_NETDB
+#define _INC_NETDB
+
+#include <sys/socket.h>
+
+#endif //_INC_NETDB
diff --git a/wince/include/sys/socket.h b/wince/include/sys/socket.h
new file mode 100644
index 0000000000..2d6f7b8306
--- /dev/null
+++ b/wince/include/sys/socket.h
@@ -0,0 +1,217 @@
+// sys/socket.h
+
+// djl
+// Provide UNIX compatibility
+
+#ifndef _INC_SYS_SOCKET
+#define _INC_SYS_SOCKET
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WINDOWS_
+#ifdef __GNUC__
+#define WIN32_LEAN_AND_MEAN
+#ifdef __GNUC__
+#define Win32_Winsock
+#endif
+#include <windows.h>
+#else
+#define _WINDOWS_
+
+#ifndef FAR
+#define FAR
+#endif
+
+#define PASCAL __stdcall
+#define WINAPI __stdcall
+
+#undef WORD
+typedef int BOOL;
+typedef unsigned short WORD;
+typedef void* HANDLE;
+typedef void* HWND;
+typedef int (FAR WINAPI *FARPROC)();
+
+typedef unsigned long DWORD;
+typedef void *PVOID;
+
+#define IN
+#define OUT
+
+#ifndef UNDER_CE
+typedef struct _OVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HANDLE hEvent;
+} OVERLAPPED, *LPOVERLAPPED;
+#endif
+
+#endif
+#endif //_WINDOWS_
+// #ifndef __GNUC__
+#include <winsock.h>
+// #endif
+
+#define ENOTSOCK WSAENOTSOCK
+#undef HOST_NOT_FOUND
+
+#ifdef USE_SOCKETS_AS_HANDLES
+
+#ifndef PERL_FD_SETSIZE
+#define PERL_FD_SETSIZE 64
+#endif
+
+#define PERL_BITS_PER_BYTE 8
+#define PERL_NFDBITS (sizeof(Perl_fd_mask)*PERL_BITS_PER_BYTE)
+
+typedef int Perl_fd_mask;
+
+typedef struct Perl_fd_set {
+ Perl_fd_mask bits[(PERL_FD_SETSIZE+PERL_NFDBITS-1)/PERL_NFDBITS];
+} Perl_fd_set;
+
+#define PERL_FD_CLR(n,p) \
+ ((p)->bits[(n)/PERL_NFDBITS] &= ~((unsigned)1 << ((n)%PERL_NFDBITS)))
+
+#define PERL_FD_SET(n,p) \
+ ((p)->bits[(n)/PERL_NFDBITS] |= ((unsigned)1 << ((n)%PERL_NFDBITS)))
+
+#define PERL_FD_ZERO(p) memset((char *)(p),0,sizeof(*(p)))
+
+#define PERL_FD_ISSET(n,p) \
+ ((p)->bits[(n)/PERL_NFDBITS] & ((unsigned)1 << ((n)%PERL_NFDBITS)))
+
+#else /* USE_SOCKETS_AS_HANDLES */
+
+#define Perl_fd_set fd_set
+#define PERL_FD_SET(n,p) FD_SET(n,p)
+#define PERL_FD_CLR(n,p) FD_CLR(n,p)
+#define PERL_FD_ISSET(n,p) FD_ISSET(n,p)
+#define PERL_FD_ZERO(p) FD_ZERO(p)
+
+#endif /* USE_SOCKETS_AS_HANDLES */
+
+SOCKET win32_accept (SOCKET s, struct sockaddr *addr, int *addrlen);
+int win32_bind (SOCKET s, const struct sockaddr *addr, int namelen);
+int win32_closesocket (SOCKET s);
+int win32_connect (SOCKET s, const struct sockaddr *name, int namelen);
+int win32_ioctlsocket (SOCKET s, long cmd, u_long *argp);
+int win32_getpeername (SOCKET s, struct sockaddr *name, int * namelen);
+int win32_getsockname (SOCKET s, struct sockaddr *name, int * namelen);
+int win32_getsockopt (SOCKET s, int level, int optname, char * optval, int *optlen);
+u_long win32_htonl (u_long hostlong);
+u_short win32_htons (u_short hostshort);
+unsigned long win32_inet_addr (const char * cp);
+char * win32_inet_ntoa (struct in_addr in);
+int win32_listen (SOCKET s, int backlog);
+u_long win32_ntohl (u_long netlong);
+u_short win32_ntohs (u_short netshort);
+int win32_recv (SOCKET s, char * buf, int len, int flags);
+int win32_recvfrom (SOCKET s, char * buf, int len, int flags,
+ struct sockaddr *from, int * fromlen);
+int win32_select (int nfds, Perl_fd_set *rfds, Perl_fd_set *wfds, Perl_fd_set *xfds,
+ const struct timeval *timeout);
+int win32_send (SOCKET s, const char * buf, int len, int flags);
+int win32_sendto (SOCKET s, const char * buf, int len, int flags,
+ const struct sockaddr *to, int tolen);
+int win32_setsockopt (SOCKET s, int level, int optname,
+ const char * optval, int optlen);
+SOCKET win32_socket (int af, int type, int protocol);
+int win32_shutdown (SOCKET s, int how);
+
+/* Database function prototypes */
+
+struct hostent * win32_gethostbyaddr(const char * addr, int len, int type);
+struct hostent * win32_gethostbyname(const char * name);
+int win32_gethostname (char * name, int namelen);
+struct servent * win32_getservbyport(int port, const char * proto);
+struct servent * win32_getservbyname(const char * name, const char * proto);
+struct protoent * win32_getprotobynumber(int proto);
+struct protoent * win32_getprotobyname(const char * name);
+struct protoent *win32_getprotoent(void);
+struct servent *win32_getservent(void);
+void win32_sethostent(int stayopen);
+void win32_setnetent(int stayopen);
+struct netent * win32_getnetent(void);
+struct netent * win32_getnetbyname(char *name);
+struct netent * win32_getnetbyaddr(long net, int type);
+void win32_setprotoent(int stayopen);
+void win32_setservent(int stayopen);
+void win32_endhostent(void);
+void win32_endnetent(void);
+void win32_endprotoent(void);
+void win32_endservent(void);
+
+#ifndef WIN32SCK_IS_STDSCK
+//
+// direct to our version
+//
+#define htonl win32_htonl
+#define htons win32_htons
+#define ntohl win32_ntohl
+#define ntohs win32_ntohs
+#define inet_addr win32_inet_addr
+#define inet_ntoa win32_inet_ntoa
+
+#define socket win32_socket
+#define bind win32_bind
+#define listen win32_listen
+#define accept win32_accept
+#define connect win32_connect
+#define send win32_send
+#define sendto win32_sendto
+#define recv win32_recv
+#define recvfrom win32_recvfrom
+#define shutdown win32_shutdown
+#define closesocket win32_closesocket
+#define ioctlsocket win32_ioctlsocket
+#define setsockopt win32_setsockopt
+#define getsockopt win32_getsockopt
+#define getpeername win32_getpeername
+#define getsockname win32_getsockname
+#define gethostname win32_gethostname
+#define gethostbyname win32_gethostbyname
+#define gethostbyaddr win32_gethostbyaddr
+#define getprotobyname win32_getprotobyname
+#define getprotobynumber win32_getprotobynumber
+#define getservbyname win32_getservbyname
+#define getservbyport win32_getservbyport
+#define select win32_select
+#define endhostent win32_endhostent
+#define endnetent win32_endnetent
+#define endprotoent win32_endprotoent
+#define endservent win32_endservent
+#define getnetent win32_getnetent
+#define getnetbyname win32_getnetbyname
+#define getnetbyaddr win32_getnetbyaddr
+#define getprotoent win32_getprotoent
+#define getservent win32_getservent
+#define sethostent win32_sethostent
+#define setnetent win32_setnetent
+#define setprotoent win32_setprotoent
+#define setservent win32_setservent
+
+#ifdef USE_SOCKETS_AS_HANDLES
+#undef fd_set
+#undef FD_SET
+#undef FD_CLR
+#undef FD_ISSET
+#undef FD_ZERO
+#define fd_set Perl_fd_set
+#define FD_SET(n,p) PERL_FD_SET(n,p)
+#define FD_CLR(n,p) PERL_FD_CLR(n,p)
+#define FD_ISSET(n,p) PERL_FD_ISSET(n,p)
+#define FD_ZERO(p) PERL_FD_ZERO(p)
+#endif /* USE_SOCKETS_AS_HANDLES */
+
+#endif /* WIN32SCK_IS_STDSCK */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _INC_SYS_SOCKET
diff --git a/wince/include/sys/stat.h b/wince/include/sys/stat.h
new file mode 100644
index 0000000000..b4dcc9fe40
--- /dev/null
+++ b/wince/include/sys/stat.h
@@ -0,0 +1,55 @@
+#ifndef SYS_STAT_H
+#define SYS_STAT_H 1
+
+#include <sys/types.h>
+
+// stat.h
+#define _S_IFMT 0170000 /* file type mask */
+#define _S_IFDIR 0040000 /* directory */
+#define _S_IFCHR 0020000 /* character special */
+#define _S_IFIFO 0010000 /* pipe */
+#define _S_IFREG 0100000 /* regular */
+#define _S_IREAD 0000400 /* read permission, owner */
+#define _S_IWRITE 0000200 /* write permission, owner */
+#define _S_IEXEC 0000100 /* execute/search permission, owner */
+
+#define _S_IFMT 0170000 /* file type mask */
+#define _S_IFDIR 0040000 /* directory */
+#define _S_IFCHR 0020000 /* character special */
+#define _S_IFIFO 0010000 /* pipe */
+#define _S_IFREG 0100000 /* regular */
+#define _S_IREAD 0000400 /* read permission, owner */
+#define _S_IWRITE 0000200 /* write permission, owner */
+#define _S_IEXEC 0000100 /* execute/search permission, owner */
+
+#define S_IFMT _S_IFMT
+#define S_IFREG _S_IFREG
+#define S_IFCHR _S_IFCHR
+#define S_IFDIR _S_IFDIR
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+
+#ifndef S_ISDIR
+#define S_ISDIR(X) (((X) & S_IFMT) == S_IFDIR)
+#endif
+#ifndef S_ISREG
+#define S_ISREG(X) (((X) & S_IFMT) == S_IFREG)
+#endif
+
+struct stat
+{
+ dev_t st_dev;
+ ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+};
+
+#endif
diff --git a/wince/include/sys/types.h b/wince/include/sys/types.h
new file mode 100644
index 0000000000..9741ca5937
--- /dev/null
+++ b/wince/include/sys/types.h
@@ -0,0 +1,23 @@
+#ifndef SYS_TYPES_H
+#define SYS_TYPES_H 1
+
+#ifndef _TIME_T_DEFINED_
+typedef unsigned long time_t;
+#define _TIME_T_DEFINED_
+#endif
+
+typedef unsigned long dev_t;
+typedef unsigned long ino_t;
+typedef unsigned short gid_t;
+typedef unsigned short uid_t;
+typedef long clock_t;
+typedef long ptrdiff_t;
+typedef long off_t;
+
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+
+typedef unsigned char * caddr_t;
+typedef unsigned int size_t;
+
+#endif
diff --git a/wince/include/sys/utime.h b/wince/include/sys/utime.h
new file mode 100644
index 0000000000..c98ddcf52c
--- /dev/null
+++ b/wince/include/sys/utime.h
@@ -0,0 +1,18 @@
+#ifndef SYS_UTIME_H
+#define SYS_UTIME_H 1
+
+#include "time.h"
+
+struct utimbuf
+{
+ time_t actime;
+ time_t modtime;
+};
+
+struct _utimbuf
+{
+ time_t actime;
+ time_t modtime;
+};
+
+#endif
diff --git a/wince/include/time.h b/wince/include/time.h
new file mode 100644
index 0000000000..78acd32930
--- /dev/null
+++ b/wince/include/time.h
@@ -0,0 +1,58 @@
+#ifndef TIME_H
+#define TIME_H 1
+
+#include <celib_defs.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern long _timezone;
+extern int _daylight;
+extern long _dstbias;
+extern char *_tzname[];
+extern const char __dnames[];
+extern const char __mnames[];
+extern int _days[];
+extern int _lpdays[];
+
+#define _DAY_SEC (24L * 60L * 60L) /* secs in a day */
+#define _YEAR_SEC (365L * _DAY_SEC) /* secs in a year */
+#define _FOUR_YEAR_SEC (1461L * _DAY_SEC) /* secs in a 4 year interval */
+#define _DEC_SEC 315532800L /* secs in 1970-1979 */
+#define _BASE_YEAR 70L /* 1970 is the base year */
+#define _BASE_DOW 4 /* 01-01-70 was a Thursday */
+#define _LEAP_YEAR_ADJUST 17L /* Leap years 1900 - 1970 */
+#define _MAX_YEAR 138L /* 2038 is the max year */
+
+struct tm {
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* days since Sunday - [0,6] */
+ int tm_yday; /* days since January 1 - [0,365] */
+ int tm_isdst; /* daylight savings time flag */
+};
+
+XCE_EXPORT struct tm * xcegmtime(const time_t *timp);
+XCE_EXPORT struct tm *xcelocaltime (const time_t *ptime);
+XCE_EXPORT char *xceasctime (const struct tm *tb);
+XCE_EXPORT int xceutime (const char *fname, struct _utimbuf *times);
+XCE_EXPORT int xcefutime (int fh, struct _utimbuf *times);
+XCE_EXPORT void xceftime (struct _timeb *tp);
+XCE_EXPORT void xcegettimeofday (struct timeval *tv, struct timezone *tz);
+XCE_EXPORT char *xcectime(const time_t *timp);
+XCE_EXPORT void xceftime (struct _timeb *tp);
+XCE_EXPORT time_t xcemktime (struct tm *tb);
+XCE_EXPORT time_t xcetime (time_t *timeptr);
+XCE_EXPORT void _xcetzset(void);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif