DBD-cubrid
view release on metacpan or search on metacpan
cci-src/src/base/porting.h view on Meta::CPAN
#define strlen(s1) ((int) strlen(s1))
#define CAST_STRLEN (int)
#define CAST_BUFLEN (int)
#if _FILE_OFFSET_BITS == 32
#define OFF_T_MAX INT_MAX
#else
#define OFF_T_MAX LLONG_MAX
#endif
#if defined (WINDOWS)
#define IS_INVALID_SOCKET(socket) ((socket) == INVALID_SOCKET)
typedef int socklen_t;
#else
typedef int SOCKET;
#define INVALID_SOCKET (-1)
#define IS_INVALID_SOCKET(socket) ((socket) < 0)
#endif
/*
* wrapper for cuserid()
*/
extern char *getuserid (char *string, int size);
/*
* wrapper for OS dependent operations
*/
extern int os_rename_file (const char *src_path, const char *dest_path);
/* os_send_kill() - send the KILL signal to ourselves */
#if defined (WINDOWS)
#define os_send_kill() os_send_signal(SIGABRT)
#else
#define os_send_kill() os_send_signal(SIGKILL)
#endif
typedef void (*SIGNAL_HANDLER_FUNCTION) (int sig_no);
extern SIGNAL_HANDLER_FUNCTION os_set_signal_handler (const int sig_no, SIGNAL_HANDLER_FUNCTION sig_handler);
extern void os_send_signal (const int sig_no);
#if defined (WINDOWS)
#define atoll(a) _atoi64((a))
#if !defined(_MSC_VER) || _MSC_VER < 1800
/* ref: https://msdn.microsoft.com/en-us/library/a206stx2.aspx */
#define llabs(a) _abs64((a))
#endif /* _MSC_VER && _MSC_VER < 1800 */
#endif
#if defined (AIX) && !defined (NAME_MAX)
#define NAME_MAX pathconf("/",_PC_NAME_MAX)
#endif
#if defined (AIX) && !defined (DONT_HOOK_MALLOC)
void *aix_malloc (size_t size);
#define malloc(a) aix_malloc(a)
#endif
#if defined (AIX) && !defined (SOL_TCP)
#define SOL_TCP IPPROTO_TCP
#endif
#if defined (WINDOWS)
int setenv (const char *name, const char *value, int overwrite);
int cub_vsnprintf (char *buffer, size_t count, const char *format, va_list argptr);
#endif
#if defined (WINDOWS)
/* The following structure is used to generate uniformly distributed
* pseudo-random numbers reentrantly.
*/
struct drand48_data
{
unsigned short _rand48_seed[3];
};
/* These functions are implemented in rand.c. And rand.c will be included
* on Windows build.
*/
extern long lrand48 (void);
extern void srand48 (long seed);
extern double drand48 (void);
extern int srand48_r (long int seedval, struct drand48_data *buffer);
extern int lrand48_r (struct drand48_data *buffer, long int *result);
extern int drand48_r (struct drand48_data *buffer, double *result);
extern int rand_r (unsigned int *seedp);
#if !defined(_MSC_VER) || _MSC_VER < 1800
/* Ref: https://msdn.microsoft.com/en-us/library/dn353646(v=vs.140).aspx */
extern double round (double d);
#endif /* !_MSC_VER || _MSC_VER < 1800 */
typedef struct
{
CRITICAL_SECTION cs;
CRITICAL_SECTION *csp;
UINT32 watermark;
} pthread_mutex_t;
typedef HANDLE pthread_mutexattr_t;
/* Use a large prime as watermark */
#define WATERMARK_MUTEX_INITIALIZED 0x96438AF7
#define PTHREAD_MUTEX_INITIALIZER {{ NULL, 0, 0, NULL, NULL, 0 }, NULL, 0}
typedef union
{
CONDITION_VARIABLE native_cond;
struct
{
bool initialized;
unsigned int waiting;
CRITICAL_SECTION lock_waiting;
enum
{
COND_SIGNAL = 0,
COND_BROADCAST = 1,
MAX_EVENTS = 2
} EVENTS;
HANDLE events[MAX_EVENTS];
HANDLE broadcast_block_event;
};
( run in 0.641 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )