AM_CPPFLAGS=-I${top_srcdir}/lib -I../lib
-disorder_SOURCES=disorder.c authorize.c authorize.h
+disorder_SOURCES=disorder.c authorize.c authorize.h \
+ ../lib/memgc.c
disorder_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
$(LIBDL) $(LIBGC) $(LIBGCRYPT) $(LIBPCRE)
disorder_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
-disorderfm_SOURCES=disorderfm.c
+disorderfm_SOURCES=disorderfm.c \
+ ../lib/memgc.c
disorderfm_LDADD=$(LIBOBJS) ../lib/libdisorder.a $(LIBGC) $(LIBICONV)
disorderfm_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
filename_bytes_SOURCES=filename-bytes.c
-test_eclient_SOURCES=test-eclient.c
+test_eclient_SOURCES=test-eclient.c \
+ ../lib/memgc.c
test_eclient_LDADD=../lib/libdisorder.a \
$(LIBDL) $(LIBGC) $(LIBGCRYPT) $(LIBPCRE)
test_eclient_DEPENDENCIES=../lib/libdisorder.a
int status = 0;
struct vector args;
- mem_init(1);
+ mem_init();
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVc:dHL", options, 0)) >= 0) {
switch(n) {
int n;
struct pattern *p;
- mem_init(1);
+ mem_init();
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVdf:t:i:e:ET:u:wlscn", options, 0)) >= 0) {
switch(n) {
int main(int argc, char **argv) {
assert(argc > 0);
- mem_init(1);
+ mem_init();
debugging = 0; /* turn on for even more verbosity */
if(config_read()) fatal(0, "config_read failed");
tracks = &argv[1];
AM_CFLAGS=$(GLIB_CFLAGS) $(GTK_CFLAGS)
disobedience_SOURCES=disobedience.h disobedience.c client.c queue.c \
- choose.c misc.c style.h control.c properties.c menu.c
+ choose.c misc.c style.h control.c properties.c menu.c \
+ ../lib/memgc.c
disobedience_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBGC) $(LIBGCRYPT)
disobedience_LDFLAGS=$(GTK_LIBS)
int n;
disorder_eclient *logclient;
- mem_init(1);
+ mem_init();
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
gtk_init(&argc, &argv);
gtk_rc_parse_string(style);
-
#
# This file is part of DisOrder.
# Copyright (C) 2004, 2005, 2006, s007 Richard Kettlewell
defs.lo: definitions.h
test_SOURCES=test.c
-test_LDADD=libdisorder.a $(LIBPCRE) $(LIBGC) $(LIBICONV)
+test_LDADD=libdisorder.a $(LIBPCRE) $(LIBICONV)
test_DEPENDENCIES=libdisorder.a
check: test
/*
* This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2006 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2006, 2007 Richard Kettlewell
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <config.h>
#include "types.h"
+#if GC
#include <gc.h>
+#endif
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include "disorder.h"
-static void *(*do_malloc)(size_t) = GC_malloc;
-static void *(*do_realloc)(void *, size_t) = GC_realloc;
-static void *(*do_malloc_atomic)(size_t) = GC_malloc_atomic;
-static void (*do_free)(void *) = GC_free;
-
static void *malloc_and_zero(size_t n) {
void *ptr = malloc(n);
return ptr;
}
-void mem_init(int gc) {
+#if GC
+static void *(*do_malloc)(size_t) = GC_malloc;
+static void *(*do_realloc)(void *, size_t) = GC_realloc;
+static void *(*do_malloc_atomic)(size_t) = GC_malloc_atomic;
+static void (*do_free)(void *) = GC_free;
+#else
+static void *(*do_malloc)(size_t) = malloc_and_zero;
+static void *(*do_realloc)(void *, size_t) = realloc;
+static void *(*do_malloc_atomic)(size_t) = malloc;
+static void (*do_free)(void *) = free;
+#endif
+
+void mem_init(void) {
+#if GC
const char *e;
- if(!gc || ((e = getenv("DISORDER_GC")) && !strcmp(e, "no"))) {
+ if(((e = getenv("DISORDER_GC")) && !strcmp(e, "no"))) {
do_malloc = malloc_and_zero;
do_malloc_atomic = malloc;
do_realloc = realloc;
GC_init();
assert(GC_all_interior_pointers);
}
+#endif
}
void *xmalloc(size_t n) {
#include <stdarg.h>
-void mem_init(int gc);
-/* initialize memory management. Set GC to 1 if garbage collection is
- * desired. */
+void mem_init(void);
+/* initialize memory management. */
void *xmalloc(size_t);
void *xrealloc(void *, size_t);
--- /dev/null
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2007 Richard Kettlewell
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#define GC 1
+#include "mem.c"
play.c play.h \
server.c server.h \
state.c state.h \
- trackdb.c trackdb.h trackdb-int.h exports.c
+ trackdb.c trackdb.h trackdb-int.h exports.c \
+ ../lib/memgc.c
disorderd_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
$(LIBPCRE) $(LIBDB) $(LIBAO) $(LIBGC) $(LIBGCRYPT) $(LIBICONV)
disorderd_LDFLAGS=-export-dynamic
disorder_deadlock_SOURCES=deadlock.c \
trackdb.c trackdb.h
disorder_deadlock_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
- $(LIBDB) $(LIBPCRE) $(LIBGC) $(LIBICONV)
+ $(LIBDB) $(LIBPCRE) $(LIBICONV)
disorder_deadlock_DEPENDENCIES=../lib/libdisorder.a
disorder_speaker_SOURCES=speaker.c
disorder_speaker_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
- $(LIBASOUND) $(LIBGC) $(LIBPCRE) $(LIBICONV)
+ $(LIBASOUND) $(LIBPCRE) $(LIBICONV)
disorder_speaker_DEPENDENCIES=../lib/libdisorder.a
disorder_rescan_SOURCES=rescan.c \
api.c api-server.c \
- trackdb.c trackdb.h exports.c
+ trackdb.c trackdb.h exports.c \
+ ../lib/memgc.c
disorder_rescan_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
$(LIBDB) $(LIBGC) $(LIBPCRE) $(LIBICONV)
disorder_rescan_LDFLAGS=-export-dynamic
disorder_rescan_DEPENDENCIES=../lib/libdisorder.a
-disorder_dump_SOURCES=dump.c \
- trackdb.c trackdb.h
+disorder_dump_SOURCES=dump.c \
+ trackdb.c trackdb.h \
+ ../lib/memgc.c
disorder_dump_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
- $(LIBPCRE) $(LIBDB) $(LIBGC) $(LIBICONV)
+ $(LIBPCRE) $(LIBDB) $(LIBICONV) $(LIBGC)
disorder_dump_DEPENDENCIES=$(LIBOBJS) ../lib/libdisorder.a
disorder_cgi_SOURCES=dcgi.c dcgi.h \
api.c api-client.c api-client.h \
cgi.c cgi.h cgimain.c exports.c
disorder_cgi_LDADD=../lib/libdisorder.a \
- $(LIBPCRE) $(LIBGC) $(LIBGCRYPT) $(LIBDL)
+ $(LIBPCRE) $(LIBGCRYPT) $(LIBDL)
disorder_cgi_LDFLAGS=-export-dynamic
disorder_cgi_DEPENDENCIES=../lib/libdisorder.a
trackname_SOURCES=trackname.c
-trackname_LDADD=../lib/libdisorder.a $(LIBGC) $(LIBPCRE) $(LIBICONV)
+trackname_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBICONV)
trackname_DEPENDENCIES=../lib/libdisorder.a
install-exec-hook:
dcgi_state s;
cgi_sink output;
- mem_init(0);
if(argc > 0) progname = argv[0];
cgi_parse();
if((conf = getenv("DISORDER_CONFIG"))) configfile = xstrdup(conf);
int n, err, aborted;
set_progname(argv);
- mem_init(0);
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
switch(n) {
int initial_rescan = 1;
set_progname(argv);
- mem_init(1);
+ mem_init();
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
/* garbage-collect PCRE's memory */
pcre_malloc = xmalloc;
char *tmp;
FILE *fp;
- mem_init(1);
+ mem_init();
while((n = getopt_long(argc, argv, "hVc:dDutsrRaP", options, 0)) >= 0) {
switch(n) {
case 'h': help();
struct sigaction sa;
set_progname(argv);
- mem_init(1);
+ mem_init();
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
switch(n) {
#endif
set_progname(argv);
- mem_init(0);
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVc:dD", options, 0)) >= 0) {
switch(n) {
int n;
const char *s;
- mem_init(0);
if(!setlocale(LC_CTYPE, "")) fatal(errno, "error calling setlocale");
while((n = getopt_long(argc, argv, "hVc:d", options, 0)) >= 0) {
switch(n) {