/*
 * This is a dummy file, that will force the standard malloc
 * to be used.
 */
#include <malloc.h>

void
sysmalloc_init()
{
    mallopt(M_MXFAST, 100);
    mallopt(M_NLBLKS, 1000);
    mallopt(M_GRAIN, 8);
}


#define dump_stat(str) strcat(mbuf, str)
#define dump_stat1(str,p) sprintf(smbuf,str,p); strcat(mbuf, smbuf)
#define dump_stat2(str,stat,stat2) sprintf(smbuf,str,stat,stat2); strcat(mbuf,smbuf)

char *
dump_malloc_data()
{
    static char mbuf[1024];
    char smbuf[100];
    struct mallinfo mem;

    mem = mallinfo();

#if defined(__osf__) || defined(_SEQUENT_)
    sprintf(mbuf,"Type                   Count      Space (bytes)\n");
    dump_stat2("sbrk requests:     %8d        %10d (a)\n",
	       mem.ordblks, mem.arena);
    dump_stat2("large blocks:      %8d        %10d (b)\n",
	       0, mem.uordblks);
    dump_stat2("large free blocks: %8d        %10d (c)\n\n",
	       0, mem.fordblks);
    dump_stat2("small blocks:      %8d        %10d (e)\n",
	       mem.smblks, mem.usmblks);
    dump_stat2("small free blocks: %8d        %10d (f)\n",
	       0, mem.fsmblks);
#else

    sprintf(mbuf,"Type                   Count      Space (bytes)\n");
    dump_stat2("sbrk requests:     %8d        %10d (a)\n",
               mem.ordblks, mem.arena);
    dump_stat2("large blocks:      %8d        %10d (b)\n",
               mem.allocated, mem.uordblks);
    dump_stat2("large free blocks: %8d        %10d (c)\n\n",
               mem.ordblks - mem.allocated, mem.fordblks);
    dump_stat2("small blocks:      %8d        %10d (e)\n",
               0, mem.usmblks);
    dump_stat2("small free blocks: %8d        %10d (f)\n",
               0, mem.fsmblks);
#endif
    return mbuf;
}