summaryrefslogtreecommitdiffstats
path: root/util/include/platforms
diff options
context:
space:
mode:
authorGravatar gmcdonald2010-02-13 01:32:03 +0000
committerGravatar gmcdonald2010-02-13 01:32:03 +0000
commit0425aadc78680e53000fd0108b540d6eca048516 (patch)
tree8ec7ab8e015d454c5ec586dfc91e05a2dce1cfc0 /util/include/platforms
downloadaxis2c-0425aadc78680e53000fd0108b540d6eca048516.tar.gz
axis2c-0425aadc78680e53000fd0108b540d6eca048516.tar.bz2
Moving axis svn, part of TLP move INFRA-2441
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@909681 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'util/include/platforms')
-rw-r--r--util/include/platforms/axutil_platform_auto_sense.h63
-rw-r--r--util/include/platforms/unix/axutil_date_time_util_unix.h46
-rw-r--r--util/include/platforms/unix/axutil_thread_unix.h59
-rw-r--r--util/include/platforms/unix/axutil_unix.h279
-rw-r--r--util/include/platforms/unix/axutil_uuid_gen_unix.h94
-rw-r--r--util/include/platforms/windows/axutil_date_time_util_windows.h45
-rw-r--r--util/include/platforms/windows/axutil_dir_windows.h123
-rw-r--r--util/include/platforms/windows/axutil_getopt_windows.h79
-rw-r--r--util/include/platforms/windows/axutil_thread_mutex_windows.h44
-rw-r--r--util/include/platforms/windows/axutil_thread_windows.h140
-rw-r--r--util/include/platforms/windows/axutil_uuid_gen_windows.h46
-rw-r--r--util/include/platforms/windows/axutil_windows.h278
12 files changed, 1296 insertions, 0 deletions
diff --git a/util/include/platforms/axutil_platform_auto_sense.h b/util/include/platforms/axutil_platform_auto_sense.h
new file mode 100644
index 0000000..feec323
--- /dev/null
+++ b/util/include/platforms/axutil_platform_auto_sense.h
@@ -0,0 +1,63 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_PLATFORM_AUTOSENSE_H
+#define AXIS2_PLATFORM_AUTOSENSE_H
+
+/**
+ * @file axutil_platform_auto_sense.h
+ * @brief axis2 platform auto sense
+ */
+
+/*
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+*/
+
+ /** @defgroup axis2_platform_auto_sense
+ * @ingroup axis2_platforms
+ * @{
+ */
+
+#if defined(_WIN32 )
+#include "windows/axutil_windows.h"
+#include "windows/axutil_dir_windows.h"
+#include "windows/axutil_uuid_gen_windows.h"
+#include "windows/axutil_getopt_windows.h"
+#include "windows/axutil_date_time_util_windows.h"
+#include "windows/axutil_thread_windows.h"
+#elif defined ( __OS400__ )
+#include <os400/axis2_os400.h>
+#elif defined ( AIX )
+#include <aix/aix.h>
+#elif defined ( HPUX )
+#include <hp-ux/axis2_ht-ux.h>
+#else
+#include <platforms/unix/axutil_unix.h>
+#endif
+
+ /** @} */
+/*
+#ifdef __cplusplus
+}
+#endif
+*/
+
+#endif /* AXIS2_PLATFORM_AUTOSENSE_H */
diff --git a/util/include/platforms/unix/axutil_date_time_util_unix.h b/util/include/platforms/unix/axutil_date_time_util_unix.h
new file mode 100644
index 0000000..9979395
--- /dev/null
+++ b/util/include/platforms/unix/axutil_date_time_util_unix.h
@@ -0,0 +1,46 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain count copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXUTIL_DATE_TIME_UTIL_UNIX_H
+#define AXUTIL_DATE_TIME_UTIL_UNIX_H
+
+#include <axutil_utils.h>
+#include <axutil_utils_defines.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/timeb.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /**
+ * @defgroup axis2_milliseconds
+ * @ingroup axis2_milliseconds
+ * @{
+ */
+ AXIS2_EXTERN int AXIS2_CALL
+ axis2_platform_get_milliseconds(void
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/util/include/platforms/unix/axutil_thread_unix.h b/util/include/platforms/unix/axutil_thread_unix.h
new file mode 100644
index 0000000..5ee5992
--- /dev/null
+++ b/util/include/platforms/unix/axutil_thread_unix.h
@@ -0,0 +1,59 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXUTIL_THREAD_UNIX_H
+#define AXUTIL_THREAD_UNIX_H
+
+#include <axutil_thread.h>
+#include <pthread.h>
+
+#define SHELL_PATH "/bin/sh"
+
+typedef pthread_t axis2_os_thread_t; /* Native thread */
+
+struct axutil_thread_t
+{
+ pthread_t *td;
+ void *data;
+ axutil_thread_start_t func;
+ axis2_bool_t try_exit;
+};
+
+struct axutil_threadattr_t
+{
+ pthread_attr_t attr;
+};
+
+struct axutil_threadkey_t
+{
+ pthread_key_t key;
+};
+
+struct axutil_thread_once_t
+{
+ pthread_once_t once;
+};
+
+/*************************Thread locking functions*****************************/
+struct axutil_thread_mutex_t
+{
+ axutil_allocator_t *allocator;
+ pthread_mutex_t mutex;
+};
+
+#endif /* AXIS2_THREAD_UNIX_H */
diff --git a/util/include/platforms/unix/axutil_unix.h b/util/include/platforms/unix/axutil_unix.h
new file mode 100644
index 0000000..fa23eae
--- /dev/null
+++ b/util/include/platforms/unix/axutil_unix.h
@@ -0,0 +1,279 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_UNIX_H
+#define AXIS2_UNIX_H
+
+#include <axutil_config.h>
+
+/**
+ * @file axutil_unix.h
+ * @brief axis2 unix platform specific interface
+ */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /** @defgroup axis2_unix Platform Specific
+ * @ingroup axis2_platforms_unix
+ * @{
+ */
+
+ /***************************************************************
+ * Default paths to shared library/DLLs and files
+ ***************************************************************
+ */
+
+#define AXIS2_PLATFORM_DEFAULT_DEPLOY_PATH ""
+
+#define AXIS2_PLATFORM_XMLPARSER_PATH "libaxis2_parser.so"
+#define AXIS2_PLATFORM_TRANSPORTHTTP_PATH "libhttp_transport.so"
+#define AXIS2_PLATFORM_CHANNEL_PATH "libhttp_channel.so"
+#define AXIS2_PLATFORM_SSLCHANNEL_PATH "Unknown"
+
+#define AXIS2_PLATFORM_LOG_PATH "/usr/local/axis2/log/axutil_log"
+#define AXIS2_PLATFORM_CLIENTLOG_PATH "/usr/local/axis2/log/axis2_client_log"
+#define AXIS2_PLATFORM_CONFIG_PATH "/etc/axiscpp.conf"
+#define AXIS2_PLATFORM_SECUREINFO ""
+
+ /**
+ * Resource that contains the configuration
+ */
+#define AXIS2_CONFIGURATION_RESOURCE "/usr/local/axis2/axis2.xml"
+
+ /*****************************************************************
+ * Library loading and procedure resolution
+ ****************************************************************/
+#ifdef USE_LTDL
+#include <ltdl.h>
+#define AXIS2_DLHANDLER lt_dlhandle
+
+#define AXIS2_PLATFORM_LOADLIBINIT lt_dlinit
+#define AXIS2_PLATFORM_LOADLIB(_lib) lt_dlopen(_lib)
+#define AXIS2_PLATFORM_UNLOADLIB lt_dlclose
+#define AXIS2_PLATFORM_GETPROCADDR lt_dlsym
+#define AXIS2_PLATFORM_LOADLIBEXIT lt_dlexit
+#define AXIS2_PLATFORM_LOADLIB_ERROR lt_dlerror()
+#else
+#include <dlfcn.h>
+#define AXIS2_DLHANDLER void*
+
+#define AXIS2_PLATFORM_LOADLIBINIT()
+#define AXIS2_PLATFORM_LOADLIB(_lib) dlopen(_lib, RTLD_LAZY)
+ /*#define AXIS2_PLATFORM_LOADLIB(_lib) dlopen(_lib, RTLD_NOW) */
+
+#define AXIS2_PLATFORM_UNLOADLIB dlclose
+#define AXIS2_PLATFORM_GETPROCADDR dlsym
+#define AXIS2_PLATFORM_LOADLIBEXIT()
+#define AXIS2_PLATFORM_LOADLIB_ERROR dlerror()
+
+#endif
+
+ /***************************************************************
+ * National Language Support
+ ****************************************************************/
+
+ /* STRTOASC is to translate single byte 'native' character representation to ASCII */
+
+ /* ASCTOSTR is to translate single byte ascii representation to 'native' character */
+
+ /* CANNOT be used with constants */
+#define AXIS2_PLATFORM_STRTOASC( x ) ( x )
+#define AXIS2_PLATFORM_ASCTOSTR( x ) ( x )
+
+ /***************************************************************
+ * Miscellaneous
+ ****************************************************************/
+#include <sys/time.h>
+#include <sys/timeb.h>
+
+ /*#include <unistd.h> */
+#include <errno.h>
+#include <sys/param.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include "axutil_uuid_gen_unix.h" /* uuid_gen unix implementation */
+#include <netinet/tcp.h> /* TCP_NODELAY */
+#include <utime.h>
+#include <getopt.h>
+#include "axutil_date_time_util_unix.h"
+
+ /* for file access handling */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /*HAVE_UNISTD_H */
+
+ /* network handling */
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <sys/ioctl.h>
+
+#include <fcntl.h>
+
+ /* dir handling */
+#include <sys/types.h>
+#include <dirent.h>
+
+#define AXIS2_STRRCHR(x, y) (strrchr(x, y))
+
+#define AXIS2_PLATFORM_SLEEP(x) sleep(0);
+
+ /** sleep function abstraction */
+#define AXIS2_SLEEP sleep
+#define AXIS2_USLEEP usleep
+
+ /**
+ * Get the last error code from the system.
+ * Please ensure that this is a thread safe implementation
+ * and that it returns a long
+ * @return long the last error message for this thread
+ */
+
+ /*#define AXIS2_GETLASTERROR errno; */
+
+ /**
+ * From the last error number get a sensible std::string representing it
+ * @param errorNumber the error Number you are trying to get a message for
+ * @return the error message. NOTE: The caller is responsible for deleting the returned string
+ */
+
+ /*#define AXIS2_PLATFORM_GET_ERROR_MESSAGE(errorNumber) new string(strerror(errorNumber)); */
+
+ /**
+ * Platform specific method to obtain current thread ID
+ */
+#include <pthread.h>
+#define AXIS2_PLATFORM_GET_THREAD_ID() pthread_self()
+
+ /**
+ * Platform specific method to obtain current time in milli seconds
+ */
+#define AXIS2_PLATFORM_GET_TIME_IN_MILLIS ftime
+#define AXIS2_PLATFORM_TIMEB timeb
+
+ /**
+ * type to be used for 64bit integers
+ */
+#define AXIS2_LONGLONG long long
+#define AXIS2_LONGLONGVALUE(value) value##LL
+#define AXIS2_UNSIGNED_LONGLONGVALUE(value) value##ULL
+
+ /**
+ * Format string to be used in printf for 64bit integers
+ */
+#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER "%lld"
+#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER_CHARS "lld"
+#define AXIS2_PRINTF_UNSIGNED_LONGLONG_FORMAT_SPECIFIER "%llu"
+#define AXIS2_PRINTF_UNSIGNED_LONGLONG_FORMAT_SPECIFIER_CHARS "llu"
+
+ /**
+ * Platform specific path separator char
+ */
+#ifdef IS_MACOSX
+#define AXIS2_PATH_SEP_CHAR '/'
+#define AXIS2_PATH_SEP_STR "/"
+#define AXIS2_LIB_PREFIX "lib"
+#define AXIS2_LIB_SUFFIX ".dylib"
+#else
+#define AXIS2_PATH_SEP_CHAR '/'
+#define AXIS2_PATH_SEP_STR "/"
+#define AXIS2_LIB_PREFIX "lib"
+#define AXIS2_LIB_SUFFIX ".so"
+#endif
+
+ /**
+ * Platform specific time
+ */
+#define AXIS2_TIME_T time_t
+
+ /**
+ * Platform specific file handling
+ */
+#define AXIS2_FOPEN fopen
+#define AXIS2_FREAD fread
+#define AXIS2_FWRITE fwrite
+#define AXIS2_FCLOSE fclose
+#define AXIS2_FTELL ftell
+#define AXIS2_ACCESS(zpath,imode) access(zpath,imode)
+#define AXIS2_R_OK R_OK /* test for read permission */
+#define AXIS2_W_OK W_OK /* test for write permission */
+#define AXIS2_X_OK X_OK /* test for execute or search permission */
+#define AXIS2_F_OK F_OK /* test whether the directories leading to the file can be
+ searched and the file exists */
+
+ /**
+ * Platform specific environment variable access method
+ */
+#define AXIS2_GETENV(_env_var_name) getenv(_env_var_name)
+
+ /**
+ * unix specific directory handling functions
+ */
+#define AXIS2_SCANDIR scandir
+#define AXIS2_ALPHASORT alphasort
+#define AXIS2_OPENDIR opendir
+#define AXIS2_CLOSEDIR closedir
+#define AXIS2_READDIR readdir
+#define AXIS2_READDIR_R readdir_r
+#define AXIS2_REWINDDIR rewinddir
+#define AXIS2_MKDIR mkdir
+#define AXIS2_GETCWD getcwd
+#define AXIS2_CHDIR chdir
+
+ /**
+ * network specific functions and defs
+ */
+#define axis2_socket_t int
+#define AXIS2_INVALID_SOCKET -1
+#define AXIS2_INADDR_NONE (in_addr_t)-1
+#define axis2_unsigned_short_t uint16_t
+#define AXIS2_CLOSE_SOCKET(sock) close(sock)
+#define AXIS2_CLOSE_SOCKET_ON_EXIT(sock) fcntl(sock,F_SETFD, FD_CLOEXEC);
+#define axis2_socket_len_t socklen_t
+#define AXIS2_SHUT_WR SHUT_WR
+
+ /** getopt function */
+#define AXIS2_GETOPT getopt
+
+ /** minizip functions */
+#define axis2_fill_win32_filefunc(ffunc)
+#define AXIS2_UNZOPEN2(zipfilename,ffunc) unzOpen2(zipfilename,NULL); memset(&ffunc, 0, sizeof(ffunc));
+
+ /**
+ * handling variable number of arguments (for log.c)
+ */
+#define AXIS2_VSNPRINTF vsnprintf
+
+#define AXIS2_SNPRINTF snprintf
+
+#define axis2_gmtime_r gmtime_r
+
+ /** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_UNIX_H */
diff --git a/util/include/platforms/unix/axutil_uuid_gen_unix.h b/util/include/platforms/unix/axutil_uuid_gen_unix.h
new file mode 100644
index 0000000..d3b25ba
--- /dev/null
+++ b/util/include/platforms/unix/axutil_uuid_gen_unix.h
@@ -0,0 +1,94 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain count copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXUTIL_UUID_GEN_UNIX_H
+#define AXUTIL_UUID_GEN_UNIX_H
+
+#include <axutil_utils.h>
+#include <axutil_utils_defines.h>
+
+#define UUIDS_PER_TICK 100
+#define UUID_TIMEOFFSET AXIS2_UNSIGNED_LONGLONGVALUE(0x01B21DD213814000)
+#define AXIS2_LOCAL_MAC_ADDR "000000"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /**
+ * @defgroup axutil_uuid_gen UUID Generator
+ * @ingroup axis2_util
+ * @{
+ */
+
+ struct axutil_uuid
+ {
+ unsigned int time_low;
+ unsigned short int time_mid;
+ unsigned short int time_high_version;
+ short int clock_variant;
+ unsigned char mac_addr[6];
+ };
+
+ /* bits 0-59 time field
+ * bits 60-63 version
+ * bits 64-65 2 bit variant
+ * bits 66-79 clock sequence
+ * bits 80-107 node MAC address
+ */
+ struct axutil_uuid_st
+ {
+ unsigned char mac[6]; /* pre-determined MAC address */
+ struct timeval time_last; /* last retrieved timestamp */
+ unsigned long time_seq; /* last timestamp sequence counter */
+ short int clock; /* clock tick - incremented random number */
+ };
+
+ typedef struct axutil_uuid axutil_uuid_t;
+
+ /**
+ * Returns the mac address of the first ethernet intsrface
+ * @return MAC address as a <code>char[6]</code>
+ */
+ char *AXIS2_CALL
+ axutil_uuid_get_mac_addr(void
+ );
+
+ /**
+ * Generates a uuid in version1 format (node - timestamp based)
+ * @return generated uuid as a axutil_uuid_t
+ */
+ axutil_uuid_t *AXIS2_CALL
+ axutil_uuid_gen_v1(void
+ );
+
+ /**
+ * Generates a uuid
+ * @return generated uuid as a string
+ */
+ axis2_char_t *AXIS2_CALL
+ axutil_platform_uuid_gen(
+ char *s);
+
+ /** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_UUID_GEN_UNIX_H */
diff --git a/util/include/platforms/windows/axutil_date_time_util_windows.h b/util/include/platforms/windows/axutil_date_time_util_windows.h
new file mode 100644
index 0000000..2c5eef9
--- /dev/null
+++ b/util/include/platforms/windows/axutil_date_time_util_windows.h
@@ -0,0 +1,45 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain count copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXUTIL_DATE_TIME_UTIL_WINDOWS_H
+#define AXUTIL_DATE_TIME_UTIL_WINDOWS_H
+
+#include <axutil_utils.h>
+#include <axutil_utils_defines.h>
+#include <stdio.h>
+#include <sys/timeb.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /**
+ * @defgroup axutil_date_time_util
+ * @ingroup axutil_date_time_util
+ * @{
+ */
+ AXIS2_EXTERN int AXIS2_CALL
+ axis2_platform_get_milliseconds(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/util/include/platforms/windows/axutil_dir_windows.h b/util/include/platforms/windows/axutil_dir_windows.h
new file mode 100644
index 0000000..89ba297
--- /dev/null
+++ b/util/include/platforms/windows/axutil_dir_windows.h
@@ -0,0 +1,123 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef READDIR_H
+#define READDIR_H
+#include <search.h>
+#include <string.h>
+#include <io.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <windows.h>
+#include <axutil_utils_defines.h>
+
+
+/* struct dirent - same as Unix dirent.h */
+struct dirent
+{
+ long d_ino; /* inode number (always 1 in WIN32) */
+ off_t d_off; /* offset to this dirent */
+ unsigned short d_reclen; /* length of d_name */
+ char d_name[_MAX_FNAME + 1]; /* filename (null terminated) */
+
+ /*unsigned char d_type; *//*type of file */
+};
+
+
+/* def struct DIR - different from Unix DIR */
+typedef struct
+{
+ long handle; /* _findfirst/_findnext handle */
+ short offset; /* offset into directory */
+ short finished; /* 1 if there are not more files */
+ struct _finddata_t fileinfo; /* from _findfirst/_findnext */
+ char *dirname; /* the dir we are reading */
+ struct dirent dent; /* the dirent to return */
+
+}
+AXIS2_DIR;
+
+
+/* Function prototypes */
+
+
+/**
+ * open a directory on a given name
+ * returns a DIR if successful, or NULL if the path cannot be opened
+ */
+AXIS2_EXTERN AXIS2_DIR * AXIS2_CALL
+ axis2_opendir(const char *);
+
+
+/**
+ * Close the directory stream DIRP.
+ * Return 0 if successful, -1 otherwise.
+ */
+AXIS2_EXTERN int AXIS2_CALL
+ axis2_closedir(
+ AXIS2_DIR *);
+
+
+/**
+ * Read a directory entry from DIRP. Return a pointer to a `struct
+ * dirent' describing the entry, or NULL for EOF or error.
+ */
+AXIS2_EXTERN struct dirent *AXIS2_CALL
+ axis2_readdir(
+ AXIS2_DIR *);
+
+
+/**
+ * Reentrant version of `readdir'
+ */
+AXIS2_EXTERN int AXIS2_CALL
+ axis2_readdir_r(
+ AXIS2_DIR *,
+ struct dirent *,
+ struct dirent **);
+
+
+/**
+ * Rewind DIRP to the beginning of the directory.
+ */
+AXIS2_EXTERN int AXIS2_CALL
+ axis2_rewinddir(
+ AXIS2_DIR *);
+
+
+/**
+ * Scan the directory DIR
+ * Returns the number of entries selected, or -1 on error
+ */
+AXIS2_EXTERN int AXIS2_CALL
+ axis2_scandir(
+ const char *_dirname,
+ struct dirent **__namelist[],
+ int(*selector)(const struct dirent * entry),
+ int(*compare)(const struct dirent ** a,
+ const struct dirent ** b));
+
+
+/**
+ * Compare two `struct dirent's alphabetically
+ */
+extern int alphasort(
+ const struct dirent **__d1,
+ const struct dirent **__d2);
+
+#endif /* READDIR_H */
diff --git a/util/include/platforms/windows/axutil_getopt_windows.h b/util/include/platforms/windows/axutil_getopt_windows.h
new file mode 100644
index 0000000..8234fba
--- /dev/null
+++ b/util/include/platforms/windows/axutil_getopt_windows.h
@@ -0,0 +1,79 @@
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef _AXIS2_GETOPT_WINDOWS_H_
+#define _AXIS2_GETOPT_WINDOWS_H_
+
+#include <axutil_utils_defines.h>
+
+/**
+ * @file axis2_getopt_windows.h
+ * @brief windows cutdown version of getopt function in unix
+ */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /** @defgroup axis2_getopt_windows getopt
+ * @ingroup axis2_windows
+ * @{
+ */
+#ifndef AXIS2_GET_OPT_DEFINE_MODE_NO_IMPORT
+ AXIS2_IMPORT extern int opterr;
+ AXIS2_IMPORT extern int optopt;
+ AXIS2_IMPORT extern char *optarg;
+#else
+ AXIS2_EXPORT int opterr;
+ AXIS2_EXPORT int optopt;
+ AXIS2_EXPORT char *optarg;
+#endif
+
+ /**
+ * return and log error
+ * @param __optopt option
+ * @param __err error code
+ * @param __showerr whether or not send to stderr
+ * @return ':' or '?'
+ */
+ int _axis2_opt_error(
+ int __optopt,
+ int __err,
+ int __showerr);
+
+ /**
+ * cutdown version of getopt in unix
+ * @param __argc no of arguments
+ * @param __argv list of arguments
+ * @param __shortopts options
+ * @return option char if successful, -1 if over, ':' or '?' if error
+ */
+ AXIS2_EXTERN int AXIS2_CALL
+ axis2_getopt(
+ int __argc,
+ char *const *__argv,
+ const char *__shortopts);
+
+ /** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/util/include/platforms/windows/axutil_thread_mutex_windows.h b/util/include/platforms/windows/axutil_thread_mutex_windows.h
new file mode 100644
index 0000000..4fed951
--- /dev/null
+++ b/util/include/platforms/windows/axutil_thread_mutex_windows.h
@@ -0,0 +1,44 @@
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef AXIS2_THREAD_MUTEX_WINDOWS_H
+#define AXIS2_THREAD_MUTEX_WINDOWS_H
+
+#include <process.h>
+#include <windows.h>
+#include <axutil_allocator.h>
+typedef enum thread_mutex_type
+{
+ thread_mutex_critical_section,
+ thread_mutex_unnested_event,
+ thread_mutex_nested_mutex
+} thread_mutex_type;
+
+/* handle applies only to unnested_event on all platforms
+ * and nested_mutex on Win9x only. Otherwise critical_section
+ * is used for NT nexted mutexes providing optimal performance.
+ */
+struct axutil_thread_mutex_t
+{
+ thread_mutex_type type;
+ HANDLE handle;
+ CRITICAL_SECTION section;
+ axutil_allocator_t *allocator;
+};
+
+#endif /* AXIS2_THREAD_MUTEX_WINDOWS_H */
diff --git a/util/include/platforms/windows/axutil_thread_windows.h b/util/include/platforms/windows/axutil_thread_windows.h
new file mode 100644
index 0000000..739b4c2
--- /dev/null
+++ b/util/include/platforms/windows/axutil_thread_windows.h
@@ -0,0 +1,140 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_THREAD_WINDOWS_H
+#define AXIS2_THREAD_WINDOWS_H
+
+#include <windows.h>
+#include <process.h>
+#include <axutil_thread.h>
+
+#define SHELL_PATH "cmd.exe"
+
+typedef HANDLE axis2_os_thread_t; /* Native thread */
+
+/* Chosen for us by apr_initialize */
+
+struct axutil_thread_t
+{
+ HANDLE *td;
+ void *data;
+ axutil_thread_start_t func;
+ axis2_bool_t try_exit;
+};
+
+struct axutil_threadattr_t
+{
+ int detach;
+ size_t stacksize;
+};
+
+struct axutil_threadkey_t
+{
+ DWORD key;
+};
+
+struct axutil_thread_once_t
+{
+ long value;
+};
+
+AXIS2_EXTERN axutil_threadattr_t *AXIS2_CALL
+axutil_threadattr_create(
+ axutil_allocator_t * allocator);
+
+/* Destroy the threadattr object */
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+threadattr_cleanup(
+ void *data);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_threadattr_detach_set(
+ axutil_threadattr_t * attr,
+ axis2_bool_t detached);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_threadattr_detach_get(
+ axutil_threadattr_t * attr,
+ const axutil_env_t * env);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_threadattr_stacksize_set(
+ axutil_threadattr_t * attr,
+ size_t stacksize);
+
+AXIS2_EXTERN axutil_thread_t *AXIS2_CALL
+axutil_thread_create(
+ axutil_allocator_t * allocator,
+ axutil_threadattr_t * attr,
+ axutil_thread_start_t func,
+ void *data);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_exit(
+ axutil_thread_t * thd,
+ axutil_allocator_t * allocator);
+
+AXIS2_EXTERN axis2_os_thread_t AXIS2_CALL
+axis2_os_thread_current(
+ void);
+
+AXIS2_EXTERN int AXIS2_CALL
+axis2_os_thread_equal(
+ axis2_os_thread_t tid1,
+ axis2_os_thread_t tid2);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_join(
+ axutil_thread_t * thd);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_detach(
+ axutil_thread_t * thd);
+
+AXIS2_EXTERN axis2_os_thread_t AXIS2_CALL
+axis2_os_thread_get(
+ axutil_thread_t * thd,
+ const axutil_env_t * env);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_key_create(
+ axutil_threadkey_t * axis2_key);
+
+AXIS2_EXTERN void *AXIS2_CALL
+axutil_thread_getspecific(
+ axutil_threadkey_t * axis2_key);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_setspecific(
+ axutil_threadkey_t * axis2_key,
+ void *value);
+
+AXIS2_EXTERN void AXIS2_CALL
+axutil_thread_key_free(
+ axutil_threadkey_t * axis2_key);
+
+AXIS2_EXTERN axutil_thread_once_t *AXIS2_CALL
+axutil_thread_once_init(
+ axutil_allocator_t * allocator);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_thread_once(
+ axutil_thread_once_t * control,
+ void(*func)(void));
+
+#endif /* AXIS2_THREAD_WINDOWS_H */
diff --git a/util/include/platforms/windows/axutil_uuid_gen_windows.h b/util/include/platforms/windows/axutil_uuid_gen_windows.h
new file mode 100644
index 0000000..f8c0872
--- /dev/null
+++ b/util/include/platforms/windows/axutil_uuid_gen_windows.h
@@ -0,0 +1,46 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_UDDI_GEN_WINDOWS_H
+#define AXIS2_UDDI_GEN_WINDOWS_H
+
+#include <axutil_utils_defines.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+
+#endif /* */
+
+ /* Function prototypes */
+
+
+ /**
+ * Generate universally unique id
+ * @return a char pointer to uuid
+ */
+ AXIS2_EXTERN axis2_char_t * AXIS2_CALL
+ axutil_platform_uuid_gen(
+ char *s);
+
+
+ /** @} */
+#ifdef __cplusplus
+}
+#endif /* */
+
+#endif /* AXIS2_UDDI_GEN_WINDOWS_H */
diff --git a/util/include/platforms/windows/axutil_windows.h b/util/include/platforms/windows/axutil_windows.h
new file mode 100644
index 0000000..a473264
--- /dev/null
+++ b/util/include/platforms/windows/axutil_windows.h
@@ -0,0 +1,278 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIS2_WINDOWS_H
+#define AXIS2_WINDOWS_H
+
+/**
+ * @file axutil_unix.h
+ * @brief axis2 unix platform specific interface
+ */
+#include <axutil_utils_defines.h>
+#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */
+#include <windows.h>
+
+ /*for minizip uncompression library */
+# include <direct.h>
+
+ /*for file access check */
+#include <io.h>
+#include <sys/stat.h>
+
+ /*for network handling */
+#include <winsock2.h>
+#include <fcntl.h>
+#include <Mswsock.h>
+#include <Ws2tcpip.h>
+
+ /* for time */
+#include <time.h>
+#include <sys/timeb.h>
+
+ /* get opt */
+#include "axutil_getopt_windows.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /** @defgroup axis2_unix Platform Specific
+ * @ingroup axis2_platforms_unix
+ * @{
+ */
+
+ /*enum platform_error_codes
+ {
+ PLATFORM_ERROR_UUID_NO_ADDRESS = 0,
+ PLATFORM_ERROR_OUT_OF_MEMORY = 1
+ }; */
+
+
+
+ AXIS2_EXTERN HMODULE AXIS2_CALL
+ callLoadLib(
+ char *lib);
+
+ AXIS2_EXTERN struct tm *AXIS2_CALL
+ axis2_win_gmtime(
+ const time_t * timep,
+ struct tm *result);
+
+
+ /* Get the last Error */
+ AXIS2_EXTERN void AXIS2_CALL
+ axutil_win32_get_last_error(axis2_char_t *buff,
+ unsigned int buf_size);
+
+ /* Get the last Socket Error */
+ AXIS2_EXTERN void AXIS2_CALL
+ axutil_win32_get_last_wsa_error(axis2_char_t *buff,
+ unsigned int buf_size);
+
+#define AXUTIL_WIN32_ERROR_BUFSIZE 256
+
+ /***************************************************************
+ * Default paths to shared library/DLLs and files
+ ***************************************************************
+ */
+
+#define AXIS2_PLATFORM_DEFAULT_DEPLOY_PATH ""
+
+#define AXIS2_PLATFORM_XMLPARSER_PATH "axis2_parser.dll"
+#define AXIS2_PLATFORM_TRANSPORTHTTP_PATH "http_transport.dll"
+#define AXIS2_PLATFORM_CHANNEL_PATH "http_channel.dll"
+#define AXIS2_PLATFORM_SSLCHANNEL_PATH "Unknown"
+
+#define AXIS2_PLATFORM_LOG_PATH "" /*/usr/local/axis2/log/axutil_log */
+#define AXIS2_PLATFORM_CLIENTLOG_PATH "" /* /usr/local/axis2/log/axis2_client_log */
+#define AXIS2_PLATFORM_CONFIG_PATH "" /* /etc/axiscpp.conf */
+#define AXIS2_PLATFORM_SECUREINFO ""
+
+ /**
+ * Resource that contains the configuration
+ */
+#define AXIS2_CONFIGURATION_RESOURCE "" /* should be set */
+
+/*
+ * =============================================================
+ * Library loading and procedure resolution
+ * =============================================================
+ */
+#define DLHandler HINSTANCE
+#define RTLD_LAZY 0 /* not sure this is needed? */
+
+#define AXIS2_PLATFORM_LOADLIBINIT()
+#define AXIS2_PLATFORM_LOADLIB(_lib) /*LoadLibrary(_lib) */ callLoadLib(_lib)
+#define AXIS2_PLATFORM_UNLOADLIB FreeLibrary
+#define AXIS2_PLATFORM_GETPROCADDR GetProcAddress
+#define AXIS2_PLATFORM_LOADLIBEXIT()
+#define AXIS2_PLATFORM_LOADLIB_ERROR axutil_win32_get_last_error()
+
+#define AXIS2_DLHANDLER void*
+
+
+/*
+ * =============================================================
+ * National Language Support
+ * =============================================================
+ */
+
+/*
+ * STRTOASC is to translate single byte 'native' character representation to ASCII
+ * ASCTOSTR is to translate single byte ascii representation to 'native' character
+ * CANNOT be used with constants
+ */
+#define AXIS2_PLATFORM_STRTOASC( x ) ( x )
+#define AXIS2_PLATFORM_ASCTOSTR( x ) ( x )
+
+/*
+ * =============================================================
+ * Miscellaneous
+ * =============================================================
+ */
+
+#define AXIS2_STRRCHR(x, y) (strrchr(x, y))
+
+#define AXIS2_PLATFORM_SLEEP(x) Sleep(0);
+
+#define AXIS2_SLEEP(x) Sleep((x)*1000)
+#define AXIS2_USLEEP(x) Sleep((x)/1000);
+
+ /**
+ * Get the last error code from the system.
+ * Please ensure that this is a thread safe implementation
+ * and that it returns a long
+ * @return long the last error message for this thread
+ */
+#define AXIS2_GETLASTERROR GetLastError();
+
+ /**
+ * From the last error number get a sensible std::string representing it
+ * @param errorNumber the error Number you are trying to get a message for
+ * @return the error message. NOTE: The caller is responsible for deleting the returned string
+ */
+#define AXIS2_PLATFORM_GET_ERROR_MESSAGE(errorNumber) getPlatformErrorMessage(errorNumber);
+
+ /**
+ * Platform specific method to obtain current thread ID
+ */
+#define AXIS2_PLATFORM_GET_THREAD_ID() GetCurrentThreadId()
+ /**
+ * type to be used for 64bit integers
+ */
+#define AXIS2_LONGLONG __int64
+
+ /**
+ * Format string to be used in printf for 64bit integers
+ */
+#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER "%I64d"
+#define AXIS2_PRINTF_LONGLONG_FORMAT_SPECIFIER_CHARS "I64d"
+
+
+ /**
+ * Platform specific path separator char
+ */
+#define AXIS2_PATH_SEP_CHAR '/'
+#define AXIS2_PATH_SEP_STR "/"
+#define AXIS2_LIB_PREFIX ""
+#define AXIS2_LIB_SUFFIX ".dll"
+
+ /**
+ * Platform specific time
+ */
+#define AXIS2_TIME_T time_t
+
+ /**
+ * Platform specific method to obtain current time in milli seconds
+ */
+#define AXIS2_PLATFORM_GET_TIME_IN_MILLIS _ftime
+#define AXIS2_PLATFORM_TIMEB _timeb
+
+ /**
+ * Platform specific file handling
+ */
+#define AXIS2_FOPEN fopen
+#define AXIS2_FREAD fread
+#define AXIS2_FWRITE fwrite
+#define AXIS2_FCLOSE fclose
+#define AXIS2_FTELL ftell
+#define AXIS2_ACCESS(zpath,imode) _access(zpath,imode)
+#define AXIS2_R_OK 04 /* test for read permission */
+#define AXIS2_W_OK 02 /* test for write permission */
+#define AXIS2_X_OK 00 /* test for execute or search permission */
+#define AXIS2_F_OK 00 /* test whether the directories leading to the file can be
+ searched and the file exists * /
+
+ /**
+ * windows specific directory handling functions
+ */
+#define AXIS2_SCANDIR axis2_scandir
+#define AXIS2_ALPHASORT alphasort
+#define AXIS2_OPENDIR axis2_opendir
+#define AXIS2_CLOSEDIR axis2_closedir
+#define AXIS2_READDIR axis2_readdir
+#define AXIS2_READDIR_R axis2_readdir_r
+#define AXIS2_REWINDDIR axis2_rewinddir
+#define AXIS2_MKDIR(path,x) _mkdir(path)
+#define AXIS2_GETCWD _getcwd
+#define AXIS2_CHDIR _chdir
+
+ /**
+ * network specific functions and defs
+ */
+#define axis2_socket_t SOCKET
+
+#define AXIS2_INVALID_SOCKET INVALID_SOCKET
+#define AXIS2_INADDR_NONE INADDR_NONE
+#define axis2_unsigned_short_t u_short
+#define AXIS2_CLOSE_SOCKET(sock) closesocket(sock)
+#define AXIS2_CLOSE_SOCKET_ON_EXIT(sock)
+#define axis2_socket_len_t int
+#define AXIS2_SHUT_WR SD_SEND
+
+ /**
+ * Platform specific environment variable access method
+ */
+#define AXIS2_GETENV(_env_var_name) getenv(_env_var_name)
+
+ /**
+ * minizip functions
+ */
+#define axis2_fill_win32_filefunc(ffunc) fill_win32_filefunc(ffunc)
+#define AXIS2_UNZOPEN2(zipfilename,ffunc) unzOpen2(zipfilename,NULL)
+
+ /**
+ * handling variable number of arguments (for log.c)
+ */
+
+ /** getopt function */
+#define AXIS2_GETOPT axis2_getopt
+
+ /** string functions */
+#define AXIS2_VSNPRINTF _vsnprintf
+
+#define AXIS2_SNPRINTF _snprintf
+
+#define axis2_gmtime_r axis2_win_gmtime
+
+ /** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_WINDOWS_H */