pdirt/data/
pdirt/data/HELP/
pdirt/data/HELP/0/
pdirt/data/HELP/F/
pdirt/data/HELP/G/
pdirt/data/HELP/H/
pdirt/data/HELP/J/
pdirt/data/HELP/K/
pdirt/data/HELP/O/
pdirt/data/HELP/Q/
pdirt/data/HELP/R/
pdirt/data/HELP/U/
pdirt/data/HELP/V/
pdirt/data/HELP/Y/
pdirt/data/HELP/Z/
pdirt/data/MESSAGES/
pdirt/data/POWERINFO/
pdirt/data/WIZ_ZONES/
pdirt/drv/
pdirt/drv/bin/
pdirt/drv/compiler/converter/
pdirt/drv/compiler/libs/
pdirt/drv/compiler/scripts/
pdirt/drv/include/AberChat/
pdirt/drv/include/InterMud/
pdirt/drv/include/machine/
pdirt/drv/src/InterMud/
pdirt/drv/src/Players/
pdirt/drv/utils/UAFPort/
pdirt/drv/utils/dnsresolv/
pdirt/drv/utils/gdbm/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <gdbm.h>
#include <time.h>
#include <errno.h>
#include "kernel.h"

int main(void)
{   PERSONA 	p;
    GDBM_FILE	dbf;
    datum	in;
    datum       key;
    datum       nextkey;
    FILE	*dumpf;

    dbf = gdbm_open(DATA_DIR UAF_RAND, sizeof(PERSONA), GDBM_READER, S_IRUSR|S_IWUSR,0);

    if (dbf != NULL)
    {   if ((dumpf = fopen(DATA_DIR "users_dump","w")) == NULL)
           perror("FILE: open()");
        else
        {   gdbm_reorganize(dbf);
            key = gdbm_firstkey(dbf);
            while(key.dptr != NULL)
            {  in = gdbm_fetch(dbf,key); 
               bcopy(in.dptr,&p,sizeof(PERSONA));
               nextkey = gdbm_nextkey(dbf,key);

               if (p.p_name != '\0')
               {   fprintf(dumpf,"%s\n"		/* Idname */
                                 "%s\n"		/* Name */
                                 "%s\n"		/* Title */
                                 "%s\n"		/* Email */
                                 "%s\n"		/* Password */
                                 "%s\n"		/* Prompt */
                                 "%s\n",	/* Last host */
			p.p_idname, p.p_name,p.p_title,p.p_email, p.p_passwd,
			p.p_prompt,p.p_lasthost);
                   fprintf(dumpf,"%ld %d %d %d %d %d %d %d %d\n",
			p.p_home,p.p_score, p.p_strength, p.p_damage, p.p_armor,
			p.p_vlevel, p.p_level, p.p_wimpy, p.p_pager);
                   fprintf(dumpf,"0x%08lx:0x%08lx:0x%08lx\n",
			p.p_sflags.b1, p.p_sflags.b2, p.p_sflags.b3);
                   fprintf(dumpf,"0x%08lx:0x%08lx:0x%08lx\n",
			p.p_pflags.b1, p.p_pflags.b2, p.p_pflags.b3);
                   fprintf(dumpf,"0x%08lx:0x%08lx:0x%08lx\n",
			p.p_mask.b1, p.p_mask.b2, p.p_mask.b3);
                   fprintf(dumpf,"0x%08lx:0x%08lx %ld %ld\n",
			p.p_quests.h, p.p_quests.l, p.p_last_on, p.p_id);
                   fprintf(dumpf,"%d %d %d %d\n",
                        p.p_killed, p.p_died, p.p_questpoints, p.p_losses);
               }

               if (key.dptr != NULL)
                  free(key.dptr);
               if (in.dptr != NULL)
                  free(in.dptr);
               key = nextkey;
            }
            fclose(dumpf);
        }
        gdbm_close(dbf);
    }
    else
      perror("GDBM: open()");
}