1
0
mirror of https://gitlab.xiph.org/xiph/ezstream.git synced 2024-11-03 04:17:18 -05:00

Work towards cleaner portability goo, and remove some ununsed code while there.

git-svn-id: https://svn.xiph.org/trunk/ezstream@15794 0101bb08-14d6-0310-b084-bc0e0c8e3800
This commit is contained in:
moritz 2009-03-18 09:10:28 +00:00
parent 1f91dd0941
commit c0b09af703
13 changed files with 124 additions and 222 deletions

View File

@ -227,6 +227,7 @@ dnl #######################
AC_CHECK_FUNCS([ \ AC_CHECK_FUNCS([ \
arc4random \ arc4random \
basename \
gettimeofday \ gettimeofday \
getopt \ getopt \
nl_langinfo \ nl_langinfo \

View File

@ -19,8 +19,8 @@ AM_CPPFLAGS = @EZ_CPPFLAGS@
AM_LDFLAGS = @EZ_LDFLAGS@ AM_LDFLAGS = @EZ_LDFLAGS@
EXTRA_DIST = \ EXTRA_DIST = \
compat.h \
configfile.h \ configfile.h \
ezstream.h \
metadata.h \ metadata.h \
playlist.h \ playlist.h \
strfctns.h \ strfctns.h \

View File

@ -1,4 +1,47 @@
/* $Id$ */ /* $Id$ */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "ezstream.h"
#if defined(HAVE_LIBGEN_H) && !defined(__linux__)
# include <libgen.h>
#endif /* HAVE_LIBGEN_H && !__linux__ */
#ifndef PATH_MAX
# define PATH_MAX 256
#endif /* !PATH_MAX */
#ifndef PATH_SEPARATORS
# define PATH_SEPARATORS "/"
#endif /* !PATH_SEPARATORS */
char * local_basename(const char *);
static const char *path_separators = PATH_SEPARATORS;
static inline int
is_separator(int);
static inline int
is_separator(int c)
{
const char *cp;
for (cp = path_separators; '\0' != *cp; cp++) {
if (*cp == c)
return (1);
}
return (0);
}
/*
* Modified basename() implementation from OpenBSD, based on:
* $OpenBSD: src/lib/libc/gen/basename.c,v 1.14 2005/08/08 08:05:33 espie Exp $
*/
/* /*
* Copyright (c) 1997, 2004 Todd C. Miller <Todd.Miller@courtesan.com> * Copyright (c) 1997, 2004 Todd C. Miller <Todd.Miller@courtesan.com>
* *
@ -14,27 +57,12 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#include <errno.h>
#include <limits.h>
#include <string.h>
#include "compat.h"
/*
* Modified basename() implementation from OpenBSD, based on:
* $OpenBSD: src/lib/libc/gen/basename.c,v 1.14 2005/08/08 08:05:33 espie Exp $
*/
char * char *
local_basename(const char *path) local_basename(const char *path)
{ {
#ifdef HAVE_BASENAME
return (basename(path));
#else /* HAVE_BASENAME */
static char bname[PATH_MAX]; static char bname[PATH_MAX];
size_t len; size_t len;
const char *startp, *endp; const char *startp, *endp;
@ -45,13 +73,16 @@ local_basename(const char *path)
return (bname); return (bname);
} }
/* Strip any trailing slashes */ /* Strip any trailing path separators */
endp = path + strlen(path) - 1; endp = path + strlen(path) - 1;
while (endp > path && *endp == PATH_SEPARATOR) while (endp > path && is_separator(*endp))
endp--; endp--;
/* All slashes become "\" */ /*
if (endp == path && *endp == PATH_SEPARATOR) { * All path separators become a single one; pick the first in the
* list as the default.
*/
if (endp == path && is_separator(*endp)) {
bname[0] = PATH_SEPARATOR; bname[0] = PATH_SEPARATOR;
bname[1] = '\0'; bname[1] = '\0';
return (bname); return (bname);
@ -59,7 +90,7 @@ local_basename(const char *path)
/* Find the start of the base */ /* Find the start of the base */
startp = endp; startp = endp;
while (startp > path && *(startp - 1) != PATH_SEPARATOR) while (startp > path && !is_separator(*(startp - 1)))
startp--; startp--;
len = endp - startp + 1; len = endp - startp + 1;
@ -71,4 +102,5 @@ local_basename(const char *path)
bname[len] = '\0'; bname[len] = '\0';
return (bname); return (bname);
#endif /* HAVE_BASENAME */
} }

View File

@ -22,12 +22,8 @@
# include "config.h" # include "config.h"
#endif #endif
#include <ctype.h> #include "ezstream.h"
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include "compat.h"
#include "configfile.h" #include "configfile.h"
#include "strfctns.h" #include "strfctns.h"
#include "util.h" #include "util.h"

View File

@ -22,37 +22,14 @@
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_TYPES_H #include "ezstream.h"
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#ifdef HAVE_LIBGEN_H
# include <libgen.h>
#endif
#include <limits.h>
#ifdef HAVE_PATHS_H
# include <paths.h>
#endif
#ifdef HAVE_SIGNAL_H #ifdef HAVE_SIGNAL_H
# include <signal.h> # include <signal.h>
#endif #endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <shout/shout.h> #include <shout/shout.h>
#include "compat.h"
#include "configfile.h" #include "configfile.h"
#include "metadata.h" #include "metadata.h"
#include "playlist.h" #include "playlist.h"
@ -833,7 +810,7 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName,
if (pezConfig->fileNameIsProgram) { if (pezConfig->fileNameIsProgram) {
char *tmp = xstrdup(pezConfig->fileName); char *tmp = xstrdup(pezConfig->fileName);
printf(" [%s]", printf(" [%s]",
basename(tmp)); local_basename(tmp));
xfree(tmp); xfree(tmp);
} else } else
printf(" [%4lu/%-4lu]", printf(" [%4lu/%-4lu]",

View File

@ -22,28 +22,44 @@
# include "config.h" # include "config.h"
#endif #endif
#ifndef PATH_SEPARATOR #ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif /* HAVE_SYS_TYPES_H */
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else /* HAVE_SYS_TIME_H */
# include <time.h>
#endif /* HAVE_SYS_TIME_H */
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif /* HAVE_SYS_STAT_H */
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#ifdef HAVE_PATHS_H
# include <paths.h>
#endif /* HAVE_PATHS_H */
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifndef _PATH_DEVNULL
# ifdef WIN32 # ifdef WIN32
# define PATH_SEPARATOR '\\' # define _PATH_DEVNULL "nul"
# else # else /* WIN32 */
# define PATH_SEPARATOR '/' # define _PATH_DEVNULL "/dev/null"
# endif /* WIN32 */ # endif /* WIN32 */
#endif /* !PATH_SEPARATOR */ #endif /* !_PATH_DEVNULL */
#ifndef PATH_MAX
# define PATH_MAX 256
#endif /* !PATH_MAX */
/* Sometimes defined through <limits.h>. */
#ifndef SIZE_T_MAX
# define SIZE_T_MAX ((size_t)-1)
#endif /* !SIZE_T_MAX */
#ifdef WIN32 #ifdef WIN32
# include <windows.h> # include <windows.h>
# define _PATH_DEVNULL "nul"
# define pclose _pclose # define pclose _pclose
# define popen _popen # define popen _popen
# define snprintf _snprintf # define snprintf _snprintf
@ -60,20 +76,9 @@
# define S_IXGRP 0 # define S_IXGRP 0
# define S_IXOTH 0 # define S_IXOTH 0
# define basename local_basename
# define sleep(a) Sleep((a) * 1000) # define sleep(a) Sleep((a) * 1000)
#endif /* WIN32 */ #endif /* WIN32 */
/* Usually defined in <sys/stat.h>. */
#ifndef S_IEXEC
# define S_IEXEC S_IXUSR
#endif /* !S_IEXEC */
/* For Solaris, possibly others (usually defined in <paths.h>.) */
#ifndef _PATH_DEVNULL
# define _PATH_DEVNULL "/dev/null"
#endif /* !_PATH_DEVNULL */
#ifndef HAVE_STRUCT_TIMEVAL #ifndef HAVE_STRUCT_TIMEVAL
struct timeval { struct timeval {
long tv_sec; long tv_sec;
@ -81,6 +86,10 @@ struct timeval {
}; };
#endif #endif
/*
* For compat.c and getopt.c:
*/
extern int opterr; extern int opterr;
extern int optind; extern int optind;
extern int optopt; extern int optopt;
@ -89,7 +98,7 @@ extern char *optarg;
extern int extern int
local_getopt(int, char * const *, const char *); local_getopt(int, char * const *, const char *);
extern char *
char * local_basename(const char *); local_basename(const char *);
#endif /* __COMPAT_H__ */ #endif /* __COMPAT_H__ */

View File

@ -54,15 +54,7 @@
# include "config.h" # include "config.h"
#endif /* HAVE_CONFIG_H */ #endif /* HAVE_CONFIG_H */
#include <errno.h> #include "ezstream.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
#include "compat.h"
int local_getopt(int, char * const *, const char *); int local_getopt(int, char * const *, const char *);

View File

@ -19,20 +19,7 @@
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_TYPES_H #include "ezstream.h"
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#include <ctype.h>
#include <errno.h>
#ifdef HAVE_LIBGEN_H
# include <libgen.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_TAGLIB #ifdef HAVE_TAGLIB
# include <taglib/tag_c.h> # include <taglib/tag_c.h>
@ -42,12 +29,16 @@
#endif /* HAVE_VORBISFILE */ #endif /* HAVE_VORBISFILE */
#include <shout/shout.h> #include <shout/shout.h>
#include "compat.h"
#include "metadata.h" #include "metadata.h"
#include "strfctns.h" #include "strfctns.h"
#include "util.h" #include "util.h"
#include "xalloc.h" #include "xalloc.h"
/* Usually defined in <sys/stat.h>. */
#ifndef S_IEXEC
# define S_IEXEC S_IXUSR
#endif /* !S_IEXEC */
extern char *__progname; extern char *__progname;
extern int vFlag; extern int vFlag;
@ -314,7 +305,7 @@ metadata_get_name(const char *file)
abort(); abort();
} }
if ((p1 = basename(filename)) == NULL) { if ((p1 = local_basename(filename)) == NULL) {
printf("%s: Internal error: basename() failed with '%s'\n", printf("%s: Internal error: basename() failed with '%s'\n",
__progname, filename); __progname, filename);
exit(1); exit(1);

View File

@ -19,23 +19,16 @@
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_TYPES_H #include "ezstream.h"
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "compat.h"
#include "playlist.h" #include "playlist.h"
#include "xalloc.h" #include "xalloc.h"
/* Usually defined in <sys/stat.h>. */
#ifndef S_IEXEC
# define S_IEXEC S_IXUSR
#endif /* !S_IEXEC */
extern char *__progname; extern char *__progname;
struct playlist { struct playlist {

View File

@ -27,32 +27,20 @@
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_TYPES_H #include "ezstream.h"
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#else
# include <time.h>
#endif
#include <ctype.h>
#include <errno.h>
#ifdef HAVE_LANGINFO_H #ifdef HAVE_LANGINFO_H
# include <langinfo.h> # include <langinfo.h>
#endif #endif
#ifdef HAVE_LOCALE_H #ifdef HAVE_LOCALE_H
# include <locale.h> # include <locale.h>
#endif #endif
#include <stdio.h>
#include <string.h>
#ifdef HAVE_ICONV #ifdef HAVE_ICONV
# include <iconv.h> # include <iconv.h>
#endif #endif
#include <shout/shout.h> #include <shout/shout.h>
#include "compat.h"
#include "util.h" #include "util.h"
#include "configfile.h" #include "configfile.h"
#include "xalloc.h" #include "xalloc.h"

View File

@ -19,15 +19,7 @@
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_TYPES_H #include "ezstream.h"
# include <sys/types.h>
#endif
#include <errno.h>
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "xalloc.h" #include "xalloc.h"
@ -43,27 +35,6 @@
# undef XALLOC_SILENT # undef XALLOC_SILENT
#endif /* XALLOC_DEBUG && XALLOC_SILENT */ #endif /* XALLOC_DEBUG && XALLOC_SILENT */
#ifdef THREAD_SAFE
# include <pthread.h>
static pthread_mutex_t xalloc_mutex;
static pthread_mutex_t strerror_mutex;
# define XALLOC_LOCK(mtx) do { \
int error; \
if ((error = pthread_mutex_lock(&mtx)) != 0) \
_xalloc_error(error, "XALLOC: Internal error in %s:%u: pthread_mutex_lock()", \
__FILE__, __LINE__); \
} while (0)
# define XALLOC_UNLOCK(mtx) do { \
int error; \
if ((error = pthread_mutex_unlock(&mtx)) != 0) \
_xalloc_error(error, "XALLOC: Internal error in %s:%u: pthread_mutex_unlock()", \
__FILE__, __LINE__); \
} while (0)
#else
# define XALLOC_LOCK(mtx) ((void)0)
# define XALLOC_UNLOCK(mtx) ((void)0)
#endif /* THREAD_SAFE */
#ifdef XALLOC_DEBUG #ifdef XALLOC_DEBUG
# include <sys/tree.h> # include <sys/tree.h>
@ -170,13 +141,8 @@ _xalloc_error(int errnum, const char *fmt, ...)
va_start(ap, fmt); va_start(ap, fmt);
#ifndef XALLOC_SILENT #ifndef XALLOC_SILENT
vfprintf(debug_output, fmt, ap); vfprintf(debug_output, fmt, ap);
if (errnum > 0) { if (errnum > 0)
if (xalloc_initialized)
XALLOC_LOCK(strerror_mutex);
fprintf(debug_output, ": %s\n", strerror(errnum)); fprintf(debug_output, ": %s\n", strerror(errnum));
if (xalloc_initialized)
XALLOC_UNLOCK(strerror_mutex);
}
fflush(debug_output); fflush(debug_output);
#endif /* !XALLOC_SILENT */ #endif /* !XALLOC_SILENT */
va_end(ap); va_end(ap);
@ -292,10 +258,6 @@ _xalloc_vasprintf(char **str_p, const char *fmt, va_list ap, size_t *strsiz)
void void
xalloc_initialize_debug(unsigned int level, FILE *output) xalloc_initialize_debug(unsigned int level, FILE *output)
{ {
#ifdef THREAD_SAFE
int err;
#endif /* THREAD_SAFE */
if (xalloc_initialized) if (xalloc_initialized)
_xalloc_fatal("XALLOC: xalloc_initialize(): Xalloc library already initialized\n"); _xalloc_fatal("XALLOC: xalloc_initialize(): Xalloc library already initialized\n");
@ -315,13 +277,6 @@ xalloc_initialize_debug(unsigned int level, FILE *output)
xalloc_peak = 0; xalloc_peak = 0;
xalloc_freed = 0; xalloc_freed = 0;
#ifdef THREAD_SAFE
if ((err = pthread_mutex_init(&strerror_mutex, NULL)) != 0)
_xalloc_error(err, "XALLOC: xalloc_initialize(): Initializing xalloc_mutex");
if ((err = pthread_mutex_init(&xalloc_mutex, NULL)) != 0)
_xalloc_error(err, "XALLOC: xalloc_initialize(): Initializing strerror_mutex");
#endif /* THREAD_SAFE */
xalloc_initialized = 1; xalloc_initialized = 1;
} }
@ -339,12 +294,10 @@ xalloc_set_functions(void *(*malloc_func)(size_t),
realloc_func == NULL) realloc_func == NULL)
_xalloc_fatal("XALLOC: xalloc_set_functions(): Bad argument(s)\n"); _xalloc_fatal("XALLOC: xalloc_set_functions(): Bad argument(s)\n");
XALLOC_LOCK(xalloc_mutex);
real_malloc = malloc_func; real_malloc = malloc_func;
real_calloc = calloc_func; real_calloc = calloc_func;
real_realloc = realloc_func; real_realloc = realloc_func;
real_free = free_func; real_free = free_func;
XALLOC_UNLOCK(xalloc_mutex);
} }
void void
@ -358,8 +311,6 @@ xalloc_shutdown(void)
struct memory *mem, *mem_next; struct memory *mem, *mem_next;
size_t leaked_bytes = 0; size_t leaked_bytes = 0;
XALLOC_LOCK(xalloc_mutex);
for (mem = RB_MIN(memory_tree, &memory_tree_head); for (mem = RB_MIN(memory_tree, &memory_tree_head);
mem != NULL; mem != NULL;
mem = mem_next) { mem = mem_next) {
@ -395,20 +346,9 @@ xalloc_shutdown(void)
(unsigned long)xalloc_peak, (unsigned long)xalloc_peak,
(unsigned long)xalloc_freed, (unsigned long)xalloc_freed,
(unsigned long)xalloc_total); (unsigned long)xalloc_total);
XALLOC_UNLOCK(xalloc_mutex);
} }
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
#ifdef THREAD_SAFE
if (pthread_mutex_destroy(&xalloc_mutex) != 0)
_xalloc_fatal("XALLOC: Internal error: xalloc_shutdown(): xalloc_mutex %p cannot be destroyed\n",
xalloc_mutex);
if (pthread_mutex_destroy(&strerror_mutex) != 0)
_xalloc_fatal("XALLOC: Internal error: xalloc_shutdown(): strerror_mutex %p cannot be destroyed\n",
strerror_mutex);
#endif /* THREAD_SAFE */
xalloc_initialized = 0; xalloc_initialized = 0;
} }
@ -442,7 +382,6 @@ xmalloc_c(size_t size, const char *file, unsigned int line)
else else
mem->allocated_by = unknown_file; mem->allocated_by = unknown_file;
mem->allocated_in_line = line; mem->allocated_in_line = line;
XALLOC_LOCK(xalloc_mutex);
mem->id = ++xalloc_next_id; mem->id = ++xalloc_next_id;
if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) { if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) {
/* Freed pointer is being reused: */ /* Freed pointer is being reused: */
@ -457,7 +396,6 @@ xmalloc_c(size_t size, const char *file, unsigned int line)
xalloc_total += size; xalloc_total += size;
if (xalloc_allocated > xalloc_peak) if (xalloc_allocated > xalloc_peak)
xalloc_peak = xalloc_allocated; xalloc_peak = xalloc_allocated;
XALLOC_UNLOCK(xalloc_mutex);
} }
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
@ -499,7 +437,6 @@ xcalloc_c(size_t nmemb, size_t size, int may_fail,
else else
mem->allocated_by = unknown_file; mem->allocated_by = unknown_file;
mem->allocated_in_line = line; mem->allocated_in_line = line;
XALLOC_LOCK(xalloc_mutex);
mem->id = ++xalloc_next_id; mem->id = ++xalloc_next_id;
if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) { if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) {
/* Freed pointer is being reused: */ /* Freed pointer is being reused: */
@ -514,7 +451,6 @@ xcalloc_c(size_t nmemb, size_t size, int may_fail,
xalloc_total += nmemb * size; xalloc_total += nmemb * size;
if (xalloc_allocated > xalloc_peak) if (xalloc_allocated > xalloc_peak)
xalloc_peak = xalloc_allocated; xalloc_peak = xalloc_allocated;
XALLOC_UNLOCK(xalloc_mutex);
} }
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
@ -549,9 +485,7 @@ xrealloc_c(void *ptr, size_t nmemb, size_t size,
if ((mem = real_calloc(1, sizeof(struct memory))) == NULL) if ((mem = real_calloc(1, sizeof(struct memory))) == NULL)
_xalloc_error(errno, "XALLOC: Internal error"); _xalloc_error(errno, "XALLOC: Internal error");
mem->ptr = ret; mem->ptr = ret;
XALLOC_LOCK(xalloc_mutex);
mem->id = ++xalloc_next_id; mem->id = ++xalloc_next_id;
XALLOC_UNLOCK(xalloc_mutex);
if (file) if (file)
mem->allocated_by = file; mem->allocated_by = file;
else else
@ -563,7 +497,6 @@ xrealloc_c(void *ptr, size_t nmemb, size_t size,
#ifdef XALLOC_DEBUG #ifdef XALLOC_DEBUG
struct memory find_mem; struct memory find_mem;
XALLOC_LOCK(xalloc_mutex);
if (debug_level > 0) { if (debug_level > 0) {
find_mem.ptr = ptr; find_mem.ptr = ptr;
if ((mem = RB_FIND(memory_tree, &memory_tree_head, &find_mem)) == NULL) if ((mem = RB_FIND(memory_tree, &memory_tree_head, &find_mem)) == NULL)
@ -572,7 +505,6 @@ xrealloc_c(void *ptr, size_t nmemb, size_t size,
line, ptr); line, ptr);
RB_REMOVE(memory_tree, &memory_tree_head, mem); RB_REMOVE(memory_tree, &memory_tree_head, mem);
} }
XALLOC_UNLOCK(xalloc_mutex);
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
ret = real_realloc(ptr, nsiz); ret = real_realloc(ptr, nsiz);
#ifdef XALLOC_DEBUG #ifdef XALLOC_DEBUG
@ -597,7 +529,6 @@ xrealloc_c(void *ptr, size_t nmemb, size_t size,
struct memory *mem_exists; struct memory *mem_exists;
ssize_t diff = (ssize_t)(nsiz - mem->size); ssize_t diff = (ssize_t)(nsiz - mem->size);
XALLOC_LOCK(xalloc_mutex);
xalloc_allocated += diff; xalloc_allocated += diff;
if (diff < 0) if (diff < 0)
xalloc_freed += -diff; xalloc_freed += -diff;
@ -615,7 +546,6 @@ xrealloc_c(void *ptr, size_t nmemb, size_t size,
_memory_free(&mem_exists); _memory_free(&mem_exists);
RB_INSERT(memory_tree, &memory_tree_head, mem); RB_INSERT(memory_tree, &memory_tree_head, mem);
} }
XALLOC_UNLOCK(xalloc_mutex);
} }
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
@ -659,7 +589,6 @@ xfree_c(void **ptr_p, const char *file, unsigned int line)
if (debug_level > 0) { if (debug_level > 0) {
struct memory *mem = NULL, find_mem; struct memory *mem = NULL, find_mem;
XALLOC_LOCK(xalloc_mutex);
find_mem.ptr = *ptr_p; find_mem.ptr = *ptr_p;
if ((mem = RB_FIND(memory_tree, &memory_tree_head, &find_mem)) == NULL) if ((mem = RB_FIND(memory_tree, &memory_tree_head, &find_mem)) == NULL)
_xalloc_fatal("XALLOC: xfree(): %s:%u: Junk pointer %p not accounted for\n", _xalloc_fatal("XALLOC: xfree(): %s:%u: Junk pointer %p not accounted for\n",
@ -696,7 +625,6 @@ xfree_c(void **ptr_p, const char *file, unsigned int line)
RB_REMOVE(memory_tree, &memory_tree_head, mem); RB_REMOVE(memory_tree, &memory_tree_head, mem);
_memory_free(&mem); _memory_free(&mem);
} }
XALLOC_UNLOCK(xalloc_mutex);
} }
#endif /* XALLOC_DEBUG */ #endif /* XALLOC_DEBUG */
@ -744,7 +672,6 @@ xasprintf_c(const char *file, unsigned int line,
else else
mem->allocated_by = unknown_file; mem->allocated_by = unknown_file;
mem->allocated_in_line = line; mem->allocated_in_line = line;
XALLOC_LOCK(xalloc_mutex);
mem->id = ++xalloc_next_id; mem->id = ++xalloc_next_id;
if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) { if ((mem_exists = RB_INSERT(memory_tree, &memory_tree_head, mem)) != NULL) {
/* Freed pointer is being reused: */ /* Freed pointer is being reused: */
@ -759,7 +686,6 @@ xasprintf_c(const char *file, unsigned int line,
xalloc_total += strsiz; xalloc_total += strsiz;
if (xalloc_allocated > xalloc_peak) if (xalloc_allocated > xalloc_peak)
xalloc_peak = xalloc_allocated; xalloc_peak = xalloc_allocated;
XALLOC_UNLOCK(xalloc_mutex);
} }
# endif /* XALLOC_DEBUG */ # endif /* XALLOC_DEBUG */

View File

@ -37,8 +37,7 @@
* over time!) * over time!)
* *
* Define XALLOC_SILENT to suppress all messages, which makes libxalloc * Define XALLOC_SILENT to suppress all messages, which makes libxalloc
* abort() and exit() silently. This has no effect when THREAD_DEBUG is * abort() and exit() silently.
* defined.
* *
* Define XALLOC_WITH_XASPRINTF to expose the xasprintf() interface. Doing * Define XALLOC_WITH_XASPRINTF to expose the xasprintf() interface. Doing
* so will require libxalloc to be compiled with a compiler that supports C99 * so will require libxalloc to be compiled with a compiler that supports C99
@ -55,10 +54,6 @@
/* The default output stream for messages: */ /* The default output stream for messages: */
#define XALLOC_DEFAULT_OUTPUT stderr #define XALLOC_DEFAULT_OUTPUT stderr
#if (defined(_REENTRANT) || defined(_POSIX_THREADS)) && !defined(THREAD_SAFE)
# define THREAD_SAFE 1
#endif
/* /*
* Library initialization and shutdown. * Library initialization and shutdown.

View File

@ -12,8 +12,11 @@
#define popen _popen #define popen _popen
#define pclose _pclose #define pclose _pclose
#define snprintf _snprintf #define snprintf _snprintf
#define strncasecmp strnicmp
#define stat _stat #define stat _stat
#define strncasecmp strnicmp
#ifndef __GNUC__
# define strtoll _strtoi64
#endif /* !__GNUC__ */
#define sleep(a) Sleep((a) * 1000) #define sleep(a) Sleep((a) * 1000)
@ -25,11 +28,10 @@
#define S_IWOTH 0 #define S_IWOTH 0
#define S_IXGRP 0 #define S_IXGRP 0
#define S_IXOTH 0 #define S_IXOTH 0
#define PATH_SEPARATOR '\\' #define PATH_SEPARATORS "\\/"
#define _PATH_DEVNULL "nul"
#ifndef ssize_t #ifndef ssize_t
# define ssize_t long # define ssize_t long
#endif /* !ssize_t */ #endif /* !ssize_t */
#endif /* __WIN32_COMPAT_H__ */ #endif /* __WIN32_COMPAT_H__ */