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 )