wileymud-1.187b/
wileymud-1.187b/attic/
wileymud-1.187b/attic/bin/
wileymud-1.187b/attic/lib/
wileymud-1.187b/attic/lib/adm/
wileymud-1.187b/attic/lib/man/
wileymud-1.187b/attic/lib/new-wld/
wileymud-1.187b/attic/lib/new-wld/default/
wileymud-1.187b/attic/lib/old/
wileymud-1.187b/attic/lib/wld/
wileymud-1.187b/attic/public_html/
wileymud-1.187b/attic/public_html/gfx/
wileymud-1.187b/attic/src/bin/
wileymud-1.187b/attic/src/etc/
wileymud-1.187b/attic/src/libauth-4.0-p5/
wileymud-1.187b/attic/src/sedna/
wileymud-1.187b/backups/
wileymud-1.187b/bin/
wileymud-1.187b/docs/
wileymud-1.187b/etc/
wileymud-1.187b/lib/
wileymud-1.187b/lib/adm/
wileymud-1.187b/lib/boards/
wileymud-1.187b/lib/log/
wileymud-1.187b/lib/man/
wileymud-1.187b/lib/ply/
wileymud-1.187b/lib/ply/a/
wileymud-1.187b/lib/ply/b/
wileymud-1.187b/lib/ply/c/
wileymud-1.187b/lib/ply/d/
wileymud-1.187b/lib/ply/g/
wileymud-1.187b/lib/ply/k/
wileymud-1.187b/lib/ply/m/
wileymud-1.187b/lib/ply/s/
wileymud-1.187b/lib/ply/t/
wileymud-1.187b/public_html/gfx/
wileymud-1.187b/src/bin/
wileymud-1.187b/src/convert/attic/
wileymud-1.187b/src/convert/obj/
wileymud-1.187b/src/convert/perl/
wileymud-1.187b/src/convert/perl/MudConvert/
wileymud-1.187b/src/convert/perl/MudConvert/DUMP/
wileymud-1.187b/src/convert/perl/MudConvert/Report/
wileymud-1.187b/src/convert/perl/MudConvert/WileyMUD/
wileymud-1.187b/src/convert/perl/output/
wileymud-1.187b/src/convert/perl/output/DUMP/
wileymud-1.187b/src/convert/perl/output/Report/
wileymud-1.187b/src/convert/perl/output/WileyMUD/
wileymud-1.187b/src/etc/
wileymud-1.187b/src/etc/init.d/
wileymud-1.187b/src/etc/rc.d/
wileymud-1.187b/src/etc/rc.d/init.d/
wileymud-1.187b/src/lib/
wileymud-1.187b/src/lib/adm/
wileymud-1.187b/src/lib/boards/
wileymud-1.187b/src/lib/log/
wileymud-1.187b/src/lib/man/
wileymud-1.187b/src/lib/ply/
wileymud-1.187b/src/lib/ply/a/
wileymud-1.187b/src/lib/ply/b/
wileymud-1.187b/src/lib/ply/c/
wileymud-1.187b/src/lib/ply/d/
wileymud-1.187b/src/lib/ply/e/
wileymud-1.187b/src/lib/ply/f/
wileymud-1.187b/src/lib/ply/g/
wileymud-1.187b/src/lib/ply/h/
wileymud-1.187b/src/lib/ply/i/
wileymud-1.187b/src/lib/ply/j/
wileymud-1.187b/src/lib/ply/k/
wileymud-1.187b/src/lib/ply/l/
wileymud-1.187b/src/lib/ply/m/
wileymud-1.187b/src/lib/ply/n/
wileymud-1.187b/src/lib/ply/o/
wileymud-1.187b/src/lib/ply/p/
wileymud-1.187b/src/lib/ply/q/
wileymud-1.187b/src/lib/ply/r/
wileymud-1.187b/src/lib/ply/s/
wileymud-1.187b/src/lib/ply/t/
wileymud-1.187b/src/lib/ply/u/
wileymud-1.187b/src/lib/ply/v/
wileymud-1.187b/src/lib/ply/w/
wileymud-1.187b/src/lib/ply/x/
wileymud-1.187b/src/lib/ply/y/
wileymud-1.187b/src/lib/ply/z/
wileymud-1.187b/src/obj/
wileymud-1.187b/src/utils/
wileymud-1.187b/src/utils/mobmaker/
/*
 *  This routine simply generates index files for all the virtual numbers.
 *  The output format is one per line, <vnum> <line> <byte-offset>
 */

#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include "include/bug.h"
#include "include/structs.h"
#include "include/main.h"
#include "include/utils.h"

#define _MAKE_INDEX_C
#include "include/make_index.h"

vnum_index                             *make_index(char *infile, char *outfile)
{
    FILE                                   *ifp,
                                           *ofp = NULL;
    vnum_index                             *VIndex;

    /*
     * vnum *VNum; 
     */
    register int                            i,
                                            j;

    /*
     * register long OldPos; 
     */
    long                                    Line,
                                            Pos;
    char                                   *tmp;

    if (!infile || !*infile)
	return NULL;
    VIndex = (vnum_index *)get_mem(1, sizeof(vnum_index));
    bzero(VIndex, sizeof(vnum_index));
    VIndex->VNum = (vnum *)get_mem(1, sizeof(vnum));
    bzero(VIndex->VNum, sizeof(vnum));
    ifp = open_file(infile, "r");
    if (!Quiet) {
	fprintf(stderr, "Indexing %s...", infile);
	fflush(stderr);
    }
    for (i = Line = Pos = 0; (tmp = get_line(ifp, &Line, &Pos, 1));) {
	if (!Quiet)
	    spin(stderr);
	if (*tmp == '#') {
	    sscanf(tmp + 1, "%d", &(VIndex->VNum[i].Number));
	    VIndex->VNum[i].Line = Line;
	    VIndex->VNum[i].Pos = Pos;
	    if (!verify_pos(ifp, Pos, '#')) {
		log_error("Sanity check failed! Wrong byte position!");
		fclose(ofp);
		fclose(ifp);
		exit(__LINE__);
	    }
	    i++;
	    VIndex->VNum = (vnum *)get_more_mem((char *)VIndex->VNum, i + 1, sizeof(vnum));
	    bzero(&(VIndex->VNum[i]), sizeof(vnum));
	}
    }
    if (!Quiet)
	fprintf(stderr, "done.\n");
    if (!outfile || !*outfile) {
	VIndex->Count = i;
    } else {
	ofp = open_file(outfile, "w");
	fprintf(ofp, "Found %d Virtual numbers in %s.\n", i, infile);
	for (j = 0; j < i; j++)
	    fprintf(ofp, "#%05d  Line % 6ld  Byte % 8ld\n",
		    VIndex->VNum[j].Number, VIndex->VNum[j].Line, VIndex->VNum[j].Pos);
	fclose(ofp);
    }
    fclose(ifp);
    return VIndex;
}