/*
 * MKCI.C
 *
 * $Id: mkci.c,v 1.5 1995/04/08 20:23:48 Rhialto Exp $
 * $Log: mkci.c,v $
 * Revision 1.5  1995/04/08  20:23:48  Rhialto
 * Add/correct version strings.
 *
 * Revision 1.4  1995/04/02  14:58:51  Rhialto
 * Change #ifdef into #if.
 *
 * Revision 1.3  1993/11/08  13:11:15  Rhialto
 * Add RCS tags.
 *
 *
 * Generate c.i file for assembly parts to export stuff from C to ASM level.
 */

#include "xpkdisk.h"
#include <exec/resident.h>
#include <stdio.h>

#define OFFSETOF(tag, member)   ((long)(&((struct tag *)0)->member))
#define OFFSET(label, structure, member) \
	printf("%s\tEQU %d\n", label, OFFSETOF(structure, member))
#define VALUE(label, value) \
	printf("%s\tEQU %d\n", label, value);

static const char rcsId[] = "$Id: mkci.c,v 1.5 1995/04/08 20:23:48 Rhialto Exp $";

long
log2(unsigned long x)
{
    long log;

    if (x) {
	for (log = -1; x; log++)
	    x >>= 1;

	return log;
    } else {
	return -1;
    }
}

main(argc, argv)
int argc;
char **argv;
{
    if (argc > 1)
	freopen(argv[1], "w", stdout);

    printf("; Generated by $Id: mkci.c,v 1.5 1995/04/08 20:23:48 Rhialto Exp $\n; Don't edit by hand!\n");

    VALUE("xd_SIZEOF", sizeof(DEV));
#if HANDLE_IO_QUICK
    VALUE("HANDLE_IO_QUICK", 1);
#else
    VALUE("HANDLE_IO_QUICK", 0);
#endif
    VALUE("UNITB_ACTIVE", UNITB_ACTIVE);
    VALUE("VERSION", VERSION);
    VALUE("REVISION", REVISION);

    /* Some system include values: */
    VALUE("RTC_MATCHWORD", RTC_MATCHWORD);
    VALUE("RTF_AUTOINIT", RTF_AUTOINIT);
    VALUE("NT_DEVICE", NT_DEVICE);
    VALUE("LIBF_CHANGED", LIBF_CHANGED);
    VALUE("LIBF_SUMUSED", LIBF_SUMUSED);

    OFFSET("ln_Type", Node, ln_Type);
    OFFSET("ln_Name", Node, ln_Name);
    OFFSET("dev_Flags", XpkDiskDevice, dev_Flags);
    OFFSET("dev_Version", XpkDiskDevice, dev_Version);
    OFFSET("dev_Revision", XpkDiskDevice, dev_Revision);
    OFFSET("dev_IdString", XpkDiskDevice, dev_IdString);

    return 0;
}

