version 1.2, 2009/10/26 21:10:24 |
version 1.3, 2009/10/26 21:42:04 |
|
|
void * |
void * |
xcalloc(size_t nmemb, size_t size) |
xcalloc(size_t nmemb, size_t size) |
{ |
{ |
void *ptr; |
void *ptr; |
|
|
if (size == 0 || nmemb == 0) |
if (size == 0 || nmemb == 0) |
fatalx("zero size"); |
fatalx("zero size"); |
if (SIZE_MAX / nmemb < size) |
if (SIZE_MAX / nmemb < size) |
fatalx("nmemb * size > SIZE_MAX"); |
fatalx("nmemb * size > SIZE_MAX"); |
if ((ptr = calloc(nmemb, size)) == NULL) |
if ((ptr = calloc(nmemb, size)) == NULL) |
fatal("xcalloc failed"); |
fatal("xcalloc failed"); |
|
|
return (ptr); |
return (ptr); |
} |
} |
|
|
void * |
void * |
|
|
{ |
{ |
void *ptr; |
void *ptr; |
|
|
if (size == 0) |
if (size == 0) |
fatalx("zero size"); |
fatalx("zero size"); |
if ((ptr = malloc(size)) == NULL) |
if ((ptr = malloc(size)) == NULL) |
fatal("xmalloc failed"); |
fatal("xmalloc failed"); |
|
|
return (ptr); |
return (ptr); |
} |
} |
|
|
void * |
void * |
|
|
void *newptr; |
void *newptr; |
|
|
if (newsize == 0) |
if (newsize == 0) |
fatalx("zero size"); |
fatalx("zero size"); |
if (SIZE_MAX / nmemb < size) |
if (SIZE_MAX / nmemb < size) |
fatalx("nmemb * size > SIZE_MAX"); |
fatalx("nmemb * size > SIZE_MAX"); |
if ((newptr = realloc(oldptr, newsize)) == NULL) |
if ((newptr = realloc(oldptr, newsize)) == NULL) |
fatal("xrealloc failed"); |
fatal("xrealloc failed"); |
|
|
return (newptr); |
return (newptr); |
} |
} |
|
|
void |
void |
|
|
int printflike2 |
int printflike2 |
xasprintf(char **ret, const char *fmt, ...) |
xasprintf(char **ret, const char *fmt, ...) |
{ |
{ |
va_list ap; |
va_list ap; |
int i; |
int i; |
|
|
va_start(ap, fmt); |
va_start(ap, fmt); |
i = xvasprintf(ret, fmt, ap); |
i = xvasprintf(ret, fmt, ap); |
va_end(ap); |
va_end(ap); |
|
|
return (i); |
return (i); |
} |
} |
|
|
int i; |
int i; |
|
|
i = vasprintf(ret, fmt, ap); |
i = vasprintf(ret, fmt, ap); |
if (i < 0 || *ret == NULL) |
if (i < 0 || *ret == NULL) |
fatal("xvasprintf failed"); |
fatal("xvasprintf failed"); |
|
|
return (i); |
return (i); |
} |
} |
|
|
int printflike3 |
int printflike3 |
xsnprintf(char *buf, size_t len, const char *fmt, ...) |
xsnprintf(char *buf, size_t len, const char *fmt, ...) |
{ |
{ |
va_list ap; |
va_list ap; |
int i; |
int i; |
|
|
va_start(ap, fmt); |
va_start(ap, fmt); |
i = xvsnprintf(buf, len, fmt, ap); |
i = xvsnprintf(buf, len, fmt, ap); |
va_end(ap); |
va_end(ap); |
|
|
return (i); |
return (i); |
} |
} |
|
|
fatalx("len > INT_MAX"); |
fatalx("len > INT_MAX"); |
|
|
i = vsnprintf(buf, len, fmt, ap); |
i = vsnprintf(buf, len, fmt, ap); |
if (i < 0) |
if (i < 0) |
fatal("vsnprintf failed"); |
fatal("vsnprintf failed"); |
|
|
return (i); |
return (i); |
} |
} |