Blame UUID.h

Packit Service 7500fa
#if !defined __UUID_H__
Packit Service 7500fa
#    define  __UUID_H__
Packit Service 7500fa
Packit Service 7500fa
#include <string.h>
Packit Service 7500fa
#include <stdio.h>
Packit Service 7500fa
#include <stdlib.h>
Packit Service 7500fa
#ifndef _MSC_VER
Packit Service 7500fa
/* No unistd.h in MS VC */
Packit Service 7500fa
#include <unistd.h>
Packit Service 7500fa
#endif
Packit Service 7500fa
#include <time.h>
Packit Service 7500fa
Packit Service 7500fa
#if !defined INT2PTR
Packit Service 7500fa
#if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
Packit Service 7500fa
#  define PTRV			UV
Packit Service 7500fa
#  define INT2PTR(any,d)	(any)(d)
Packit Service 7500fa
#else
Packit Service 7500fa
#  if PTRSIZE == LONGSIZE 
Packit Service 7500fa
#    define PTRV		unsigned long
Packit Service 7500fa
#  else
Packit Service 7500fa
#    define PTRV		unsigned
Packit Service 7500fa
#  endif
Packit Service 7500fa
#  define INT2PTR(any,d)	(any)(PTRV)(d)
Packit Service 7500fa
#endif
Packit Service 7500fa
#define NUM2PTR(any,d)	(any)(PTRV)(d)
Packit Service 7500fa
#define PTR2IV(p)	INT2PTR(IV,p)
Packit Service 7500fa
#define PTR2UV(p)	INT2PTR(UV,p)
Packit Service 7500fa
#define PTR2NV(p)	NUM2PTR(NV,p)
Packit Service 7500fa
#if PTRSIZE == LONGSIZE 
Packit Service 7500fa
#  define PTR2ul(p)	(unsigned long)(p)
Packit Service 7500fa
#else
Packit Service 7500fa
#  define PTR2ul(p)	INT2PTR(unsigned long,p)	
Packit Service 7500fa
#endif
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#if defined __cygwin__ || defined __mingw32__ || defined _MSC_VER
Packit Service 7500fa
#include <windows.h>
Packit Service 7500fa
#endif
Packit Service 7500fa
#if defined __darwin__
Packit Service 7500fa
#include <sys/file.h>
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#ifdef _MSC_VER
Packit Service 7500fa
#include <process.h>
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#if !defined _STDIR
Packit Service 7500fa
#    define  _STDIR			"/var/tmp"
Packit Service 7500fa
#endif
Packit Service 7500fa
#if !defined _DEFAULT_UMASK
Packit Service 7500fa
#    define  _DEFAULT_UMASK		0007
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#define UUID_STATE			".UUID_STATE"
Packit Service 7500fa
#define UUID_NODEID			".UUID_NODEID"
Packit Service 7500fa
#if defined __mingw32__ || (defined _WIN32 && !defined(__cygwin__)) || defined _MSC_VER
Packit Service 7500fa
#define UUID_STATE_NV_STORE		_STDIR"\\"UUID_STATE
Packit Service 7500fa
#define UUID_NODEID_NV_STORE		_STDIR"\\"UUID_NODEID
Packit Service 7500fa
#else
Packit Service 7500fa
#define UUID_STATE_NV_STORE		_STDIR"/"UUID_STATE
Packit Service 7500fa
#define UUID_NODEID_NV_STORE		_STDIR"/"UUID_NODEID
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#define UUIDS_PER_TICK 1024
Packit Service 7500fa
#ifdef _MSC_VER
Packit Service 7500fa
#define I64(C) C##i64
Packit Service 7500fa
#else
Packit Service 7500fa
#define I64(C) C##LL
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#define F_BIN 0
Packit Service 7500fa
#define F_STR 1
Packit Service 7500fa
#define F_HEX 2
Packit Service 7500fa
#define F_B64 3
Packit Service 7500fa
Packit Service 7500fa
#define CHECK(f1, f2) if (f1 != f2) RETVAL = f1 < f2 ? -1 : 1;
Packit Service 7500fa
Packit Service 7500fa
typedef unsigned int       unsigned32;
Packit Service 7500fa
typedef unsigned short     unsigned16;
Packit Service 7500fa
typedef unsigned char      unsigned8;
Packit Service 7500fa
typedef unsigned char      byte;
Packit Service 7500fa
#ifndef _MSC_VER
Packit Service 7500fa
typedef unsigned long long unsigned64_t;
Packit Service 7500fa
# else
Packit Service 7500fa
typedef __int64 int64_t;
Packit Service 7500fa
typedef unsigned __int64 uint64_t;
Packit Service 7500fa
typedef __int32 int32_t;
Packit Service 7500fa
typedef unsigned __int32 uint32_t;
Packit Service 7500fa
typedef __int16 int16_t;
Packit Service 7500fa
typedef unsigned __int16 uint16_t;
Packit Service 7500fa
typedef __int8 int8_t;
Packit Service 7500fa
typedef unsigned __int8 uint8_t;
Packit Service 7500fa
Packit Service 7500fa
typedef unsigned __int64 unsigned64_t;
Packit Service 7500fa
// http://msdn2.microsoft.com/en-us/library/296az74e.aspx - Integer Limits
Packit Service 7500fa
Packit Service 7500fa
typedef int pid_t;
Packit Service 7500fa
#endif /* _MSC_VER */
Packit Service 7500fa
typedef unsigned64_t       perl_uuid_time_t;
Packit Service 7500fa
Packit Service 7500fa
/* Android's lic provides neither lockf nor any of the related constants */
Packit Service 7500fa
#if   (defined __solaris__ || defined __linux__) && !defined(__android__)
Packit Service 7500fa
#     define LOCK(f)		lockf(fileno(f),F_LOCK,0);
Packit Service 7500fa
#     define UNLOCK(f)		lockf(fileno(f),F_ULOCK,0);
Packit Service 7500fa
#elif defined __darwin__
Packit Service 7500fa
#     define LOCK(f)		flock(fileno(f),LOCK_EX);
Packit Service 7500fa
#     define UNLOCK(f)		flock(fileno(f),LOCK_UN);
Packit Service 7500fa
#else
Packit Service 7500fa
#     define LOCK(f)
Packit Service 7500fa
#     define UNLOCK(f)
Packit Service 7500fa
#endif
Packit Service 7500fa
Packit Service 7500fa
#undef perl_uuid_t
Packit Service 7500fa
Packit Service 7500fa
typedef struct _uuid_node_t {
Packit Service 7500fa
   char nodeID[6];
Packit Service 7500fa
} uuid_node_t;
Packit Service 7500fa
Packit Service 7500fa
typedef struct _perl_uuid_t {
Packit Service 7500fa
   unsigned32          time_low;
Packit Service 7500fa
   unsigned16          time_mid;
Packit Service 7500fa
   unsigned16          time_hi_and_version;
Packit Service 7500fa
   unsigned8           clock_seq_hi_and_reserved;
Packit Service 7500fa
   unsigned8           clock_seq_low;
Packit Service 7500fa
   byte                node[6];
Packit Service 7500fa
} perl_uuid_t;
Packit Service 7500fa
Packit Service 7500fa
typedef struct _uuid_state_t { 
Packit Service 7500fa
   perl_uuid_time_t ts;
Packit Service 7500fa
   uuid_node_t node;
Packit Service 7500fa
   unsigned16  cs;  
Packit Service 7500fa
} uuid_state_t;
Packit Service 7500fa
Packit Service 7500fa
typedef struct _uuid_context_t {
Packit Service 7500fa
   uuid_state_t state;
Packit Service 7500fa
   uuid_node_t  nodeid;
Packit Service 7500fa
   perl_uuid_time_t  next_save;
Packit Service 7500fa
} uuid_context_t;
Packit Service 7500fa
Packit Service 7500fa
static void format_uuid_v1(
Packit Service 7500fa
   perl_uuid_t      *uuid, 
Packit Service 7500fa
   unsigned16   clockseq,
Packit Service 7500fa
   perl_uuid_time_t  timestamp, 
Packit Service 7500fa
   uuid_node_t  node
Packit Service 7500fa
);
Packit Service 7500fa
static void format_uuid_v3(
Packit Service 7500fa
   perl_uuid_t      *uuid, 
Packit Service 7500fa
   unsigned     char hash[16]
Packit Service 7500fa
);
Packit Service 7500fa
static void       get_current_time(perl_uuid_time_t * timestamp);
Packit Service 7500fa
static unsigned16 true_random(void);
Packit Service 7500fa
static void       get_system_time(perl_uuid_time_t *perl_uuid_time);
Packit Service 7500fa
static void       get_random_info(unsigned char seed[16]);
Packit Service 7500fa
static SV*        make_ret(const perl_uuid_t u, int type);
Packit Service 7500fa
static SV*        MD5Init(void);
Packit Service 7500fa
static void       MD5Update(SV* ctx, SV* data);
Packit Service 7500fa
static void       MD5Final(unsigned char hash[16], SV* ctx);
Packit Service 7500fa
Packit Service 7500fa
static const char base64[] =
Packit Service 7500fa
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
Packit Service 7500fa
Packit Service 7500fa
static unsigned char index64[256] = {
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,62, 255,255,255,63,
Packit Service 7500fa
   52,53,54,55, 56,57,58,59, 60,61,255,255, 255,254,255,255,
Packit Service 7500fa
   255, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
Packit Service 7500fa
   15,16,17,18, 19,20,21,22, 23,24,25,255, 255,255,255,255,
Packit Service 7500fa
   255,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
Packit Service 7500fa
   41,42,43,44, 45,46,47,48, 49,50,51,255, 255,255,255,255,
Packit Service 7500fa
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
   255,255,255,255, 255,255,255,255, 255,255,255,255, 255,255,255,255,
Packit Service 7500fa
};
Packit Service 7500fa
#endif