23 #define GLOBUS_LIBC_H 1 28 #if defined(WIN32) && !defined(__CYGWIN__) 34 #if !defined(__USE_MINGW_ANSI_STDIO) 35 #define snprintf _snprintf 40 # define GLOBUS_DEPRECATED(func) func __attribute__((deprecated)) 41 #elif defined(_MSC_VER) 42 # define GLOBUS_DEPRECATED(func) __declspec(deprecated) func 44 # define GLOBUS_DEPRECATED(func) func 53 #define globus_macro_libc_lock() \ 54 globus_mutex_lock(&globus_libc_mutex) 55 #define globus_macro_libc_unlock() \ 56 globus_mutex_unlock(&globus_libc_mutex) 59 #define globus_libc_lock() globus_macro_libc_lock() 60 #define globus_libc_unlock() globus_macro_libc_unlock() 62 extern int globus_libc_lock(
void);
63 extern int globus_libc_unlock(
void);
67 # define globus_libc_va_copy(dest,src) \ 69 #elif defined(__va_copy) 70 # define globus_libc_va_copy(dest,src) \ 73 # define globus_libc_va_copy(dest,src) \ 74 memcpy(&dest, &src, sizeof(va_list)) 78 #define globus_stdio_lock globus_libc_lock 79 #define globus_stdio_unlock globus_libc_unlock 80 #define globus_libc_printf printf 81 #define globus_libc_fprintf fprintf 82 #define globus_libc_sprintf sprintf 83 #define globus_libc_vprintf vprintf 84 #define globus_libc_vfprintf vfprintf 85 #define globus_libc_vsprintf vsprintf 87 #if __STDC_VERSION__ >= 199901L 88 #define globus_libc_snprintf snprintf 89 #define globus_libc_vsnprintf vsnprintf 91 extern int globus_libc_snprintf(
char *s,
size_t n,
const char *format, ...);
92 extern int globus_libc_vsnprintf(
char *s,
size_t n,
const char *format,
100 #define globus_libc_open open 101 #define globus_libc_close close 102 #define globus_libc_read read 103 #define globus_libc_write write 104 #define globus_libc_umask umask 105 #define globus_libc_writev writev 106 #define globus_libc_fstat fstat 108 #define globus_libc_opendir opendir 109 #define globus_libc_telldir telldir 110 #define globus_libc_seekdir seekdir 111 #define globus_libc_rewinddir rewinddir 112 #define globus_libc_closedir closedir 113 #define globus_libc_getpwuid_r getpwuid_r 119 globus_libc_umask_win32(
122 # define globus_libc_open _open 123 # define globus_libc_close _close 124 # define globus_libc_read _read 125 # define globus_libc_write _write 126 # define globus_libc_umask globus_libc_umask_win32 127 # define globus_libc_writev(fd,iov,iovcnt) \ 128 write(fd,iov[0].iov_base,iov[0].iov_len) 130 #if defined(TARGET_ARCH_CYGWIN) || defined(TARGET_ARCH_MINGW32) 131 #define globus_libc_opendir opendir 132 #define globus_libc_telldir telldir 133 #define globus_libc_seekdir seekdir 134 #define globus_libc_rewinddir rewinddir 135 #define globus_libc_closedir closedir 140 globus_libc_readdir_r(
142 struct dirent ** result);
147 #define globus_malloc(bytes) globus_libc_malloc(bytes) 148 #define globus_realloc(ptr,bytes) globus_libc_realloc(ptr,bytes) 149 #define globus_calloc(nobjs,bytes) globus_libc_calloc(nobjs,bytes) 150 #define globus_free(ptr) globus_libc_free(ptr) 152 #define globus_libc_malloc malloc 153 #define globus_libc_realloc realloc 154 #define globus_libc_calloc calloc 155 #define globus_libc_free free 156 #define globus_libc_alloca alloca 157 #define globus_libc_lseek lseek 160 int globus_libc_gethostname(
char *name,
int len);
161 int globus_libc_getpid(
void);
162 int globus_libc_fork(
void);
163 int globus_libc_usleep(
long usec);
164 double globus_libc_wallclock(
void);
167 extern int globus_libc_sprint_off_t(
char * s, globus_off_t off);
169 extern int globus_libc_scan_off_t(
char *s, globus_off_t *off,
int *consumed);
172 GLOBUS_DEPRECATED(
struct hostent *globus_libc_gethostbyname_r(
char *name,
173 struct hostent *result,
178 GLOBUS_DEPRECATED(
struct hostent *globus_libc_gethostbyaddr_r(
char *addr,
181 struct hostent *result,
186 #ifdef _POSIX_THREAD_SAFE_FUCTIONS 187 #define globus_libc_ctime_r(clock, buf, buflen) ctime_r(clock, buf) 188 #define globus_libc_localtime_r(timer, result) localtime_r(timer, result) 189 #define globus_libc_gmtime_r(timer, result) gmtime_r(timer, result) 191 char *globus_libc_ctime_r(time_t *clock,
char *buf,
int buflen);
192 struct tm * globus_libc_localtime_r(
const time_t *timep,
struct tm *result);
193 struct tm * globus_libc_gmtime_r(
const time_t *timep,
struct tm *result);
197 #define globus_libc_getpwnam_r getpwnam_r 201 globus_libc_strncasecmp(
206 int globus_libc_setenv(
register const char *name,
207 register const char *value,
209 void globus_libc_unsetenv(
register const char *name);
212 GLOBUS_DEPRECATED(
char *globus_libc_getenv(
register const char *name));
215 char *globus_libc_system_error_string(
int the_error);
218 globus_libc_strdup(
const char * source);
221 globus_libc_strndup(
const char *
string,
globus_size_t length);
228 #define globus_libc_strcmp strcmp 229 #define globus_libc_strlen strlen 237 globus_libc_vprintf_length(
const char * fmt, va_list ap);
240 globus_libc_printf_length(
const char * fmt, ...);
243 int globus_libc_gethomedir(
char *result,
int bufsize);
246 globus_common_create_string(
251 globus_common_create_nstring(
257 globus_common_v_create_string(
262 globus_common_v_create_nstring(
268 #define globus_libc_memmove(d, s, n) memmove((d), (s), (n)) 271 # define globus_libc_setegid(a) setresgid(-1,a,-1) 272 # define globus_libc_seteuid(a) setresuid(-1,a,-1) 274 # define globus_libc_setegid(a) setegid(a) 275 # define globus_libc_seteuid(a) seteuid(a) 280 typedef struct sockaddr_storage globus_sockaddr_t;
281 typedef struct addrinfo globus_addrinfo_t;
284 #define GlobusLibcProtocolFamilyIsIP(family) \ 285 ((family == AF_INET ? 1 : (family == AF_INET6 ? 1 : 0))) 287 #define GlobusLibcProtocolFamilyIsIP(family) \ 288 (family == AF_INET ? 1 : 0) 292 #define PF_INET AF_INET 296 #define PF_UNSPEC AF_UNSPEC 299 #define GlobusLibcSockaddrSetFamily(_addr, fam) ((struct sockaddr *) &(_addr))->sa_family = fam 300 #define GlobusLibcSockaddrGetFamily(_addr) ((struct sockaddr *) &(_addr))->sa_family 303 #define GlobusLibcSockaddrGetPort(addr, port) \ 306 const struct sockaddr * _addr = (struct sockaddr *) &(addr);\ 308 switch(_addr->sa_family) \ 311 (port) = ntohs(((struct sockaddr_in *) _addr)->sin_port); \ 315 (port) = ntohs(((struct sockaddr_in6 *) _addr)->sin6_port); \ 320 "Unknown family in GlobusLibcSockaddrGetPort"); \ 326 #define GlobusLibcSockaddrGetPort(addr, port) \ 329 const struct sockaddr * _addr = (struct sockaddr *) &(addr);\ 331 switch(_addr->sa_family) \ 334 (port) = ntohs(((struct sockaddr_in *) _addr)->sin_port); \ 339 "Unknown family in GlobusLibcSockaddrGetPort"); \ 347 #define GlobusLibcSockaddrSetPort(addr, port) \ 350 struct sockaddr * _addr = (struct sockaddr *) &(addr);\ 352 switch(_addr->sa_family) \ 355 ((struct sockaddr_in *) _addr)->sin_port = htons((port)); \ 359 ((struct sockaddr_in6 *) _addr)->sin6_port = htons((port)); \ 364 "Unknown family in GlobusLibcSockaddrSetPort"); \ 369 #define GlobusLibcSockaddrSetPort(addr, port) \ 372 struct sockaddr * _addr = (struct sockaddr *) &(addr);\ 374 switch(_addr->sa_family) \ 377 ((struct sockaddr_in *) _addr)->sin_port = htons((port)); \ 382 "Unknown family in GlobusLibcSockaddrSetPort"); \ 389 #define GlobusLibcSockaddrSetLen(addr, len) \ 392 struct sockaddr * _addr = (struct sockaddr *) &(addr);\ 394 switch(_addr->sa_family) \ 397 ((struct sockaddr_in *) _addr)->sin_len = (len); \ 401 ((struct sockaddr_in6 *) _addr)->sin6_len = (len); \ 406 "Unknown family in GlobusLibcSockaddrSetLen"); \ 411 #define GlobusLibcSockaddrCopy(dest_addr, source_addr, source_len) \ 412 (memcpy(&(dest_addr), &(source_addr), (source_len))) 414 #define GlobusLibcSockaddrLen(addr) \ 415 (((struct sockaddr *) (addr))->sa_family == AF_INET \ 416 ? sizeof(struct sockaddr_in) : \ 417 (((struct sockaddr *) (addr))->sa_family == AF_INET6 \ 418 ? sizeof(struct sockaddr_in6) : -1)) 420 #define GLOBUS_AI_PASSIVE AI_PASSIVE 421 #define GLOBUS_AI_NUMERICHOST AI_NUMERICHOST 422 #define GLOBUS_AI_CANONNAME AI_CANONNAME 424 #define GLOBUS_NI_MAXHOST NI_MAXHOST 425 #define GLOBUS_NI_NOFQDN NI_NOFQDN 426 #define GLOBUS_NI_NAMEREQD NI_NAMEREQD 427 #define GLOBUS_NI_DGRAM NI_DGRAM 428 #define GLOBUS_NI_NUMERICSERV NI_NUMERICSERV 429 #define GLOBUS_NI_NUMERICHOST NI_NUMERICHOST 431 #define GLOBUS_EAI_ERROR_OFFSET 2048 433 #define GLOBUS_EAI_FAMILY (EAI_FAMILY + GLOBUS_EAI_ERROR_OFFSET) 434 #define GLOBUS_EAI_SOCKTYPE (EAI_SOCKTYPE + GLOBUS_EAI_ERROR_OFFSET) 435 #define GLOBUS_EAI_BADFLAGS (EAI_BADFLAGS + GLOBUS_EAI_ERROR_OFFSET) 436 #define GLOBUS_EAI_NONAME (EAI_NONAME + GLOBUS_EAI_ERROR_OFFSET) 437 #define GLOBUS_EAI_SERVICE (EAI_SERVICE + GLOBUS_EAI_ERROR_OFFSET) 438 #define GLOBUS_EAI_ADDRFAMILY (EAI_ADDRFAMILY + GLOBUS_EAI_ERROR_OFFSET) 439 #define GLOBUS_EAI_NODATA (EAI_NODATA + GLOBUS_EAI_ERROR_OFFSET) 440 #define GLOBUS_EAI_MEMORY (EAI_MEMORY + GLOBUS_EAI_ERROR_OFFSET) 441 #define GLOBUS_EAI_FAIL (EAI_FAIL + GLOBUS_EAI_ERROR_OFFSET) 442 #define GLOBUS_EAI_AGAIN (EAI_AGAIN + GLOBUS_EAI_ERROR_OFFSET) 443 #define GLOBUS_EAI_SYSTEM (EAI_SYSTEM + GLOBUS_EAI_ERROR_OFFSET) 446 globus_libc_getaddrinfo(
448 const char * service,
449 const globus_addrinfo_t * hints,
450 globus_addrinfo_t ** res);
453 globus_libc_freeaddrinfo(
454 globus_addrinfo_t * res);
457 globus_libc_getnameinfo(
458 const globus_sockaddr_t * addr,
466 globus_libc_addr_is_loopback(
467 const globus_sockaddr_t * addr);
470 globus_libc_addr_is_wildcard(
471 const globus_sockaddr_t * addr);
474 #define GLOBUS_LIBC_ADDR_NUMERIC 1 476 #define GLOBUS_LIBC_ADDR_LOCAL 2 478 #define GLOBUS_LIBC_ADDR_IPV6 4 480 #define GLOBUS_LIBC_ADDR_IPV4 8 486 globus_libc_addr_to_contact_string(
487 const globus_sockaddr_t * addr,
489 char ** contact_string);
493 globus_libc_addr_convert_family(
494 const globus_sockaddr_t * src,
495 globus_sockaddr_t * dest,
500 const char * contact_string,
503 unsigned short * port);
511 globus_libc_ints_to_contact_string(
514 unsigned short port);
517 globus_libc_gethostaddr(
518 globus_sockaddr_t * addr);
521 globus_libc_gethostaddr_by_family(
522 globus_sockaddr_t * addr,
globus_result_t globus_libc_contact_string_to_ints(const char *contact_string, int *host, int *count, unsigned short *port)
Definition: globus_libc.c:2964
Globus Threading Abstraction.
int globus_bool_t
Boolean type.
Definition: globus_types.h:93
Mutex.
Definition: globus_thread.h:107
size_t globus_size_t
Standard size of memory objectThe globus_size_t is the size of a memory object. It is identical to si...
Definition: globus_types.h:48
uint32_t globus_result_t
Definition: globus_types.h:99
char * globus_libc_join(const char **array, int count)
Definition: globus_libc.c:3226