Example #1
0
char	*give_room_name(t_dbllist *lst_rooms, int index)
{
	t_elem	*tmp;

	tmp = lst_rooms->head;
	while (tmp != NULL)
	{
		if (index == ROOM(tmp)->index)
			return (ft_strdup(ROOM(tmp)->name));
		tmp = tmp->next;
	}
	return (NULL);
}
static int
cons_write (NkPort*	port, const u_char* buf, int count)
{
    int				res = 0;
    unsigned long		flags;

    spin_lock_irqsave(&port->lock, flags);
    if (cons_flush_chars(port) == 0) {
        res = os_ctx->cops.write(port->id, buf, count);
    }

    if ( res < count ) {
        int		room = ROOM(port);

        if ( (count - res) < room  ) {
            room = count - res;
        }

        memcpy(port->buf + port->sz, buf + res, room);
        port->sz += room;
        res += room;

    }
    spin_unlock_irqrestore(&port->lock, flags);
    return res;
}
Example #3
0
void	free_lst_rooms(t_anthill *anthill)
{
	t_elem	*tmp;

	tmp = anthill->lst_rooms->head;
	while (tmp != NULL)
	{
		ft_strdel(&(ROOM(tmp)->name));
		free(tmp->content);
		tmp->content = NULL;
		free(tmp);
		tmp = tmp->next;
	}
	anthill->lst_rooms->tail = NULL;
	anthill->lst_rooms->head = NULL;
}
Example #4
0
SYSCALL(void, maConnWriteFromData(MAHandle conn, MAHandle data, int offset, int size)) {
	LOGST("ConnWriteFromData %i %i %i %i", conn, data, offset, size);
	MYASSERT(offset >= 0, ERR_DATA_OOB);
	MYASSERT(size > 0, ERR_DATA_OOB);
	MYASSERT(offset + size > 0, ERR_DATA_OOB);

	MAStreamConn& mac = getStreamConn(conn);
	MYASSERT((mac.state & CONNOP_WRITE) == 0, ERR_CONN_ALREADY_WRITING);

	Stream& stream = *SYSCALL_THIS->resources.extract_RT_BINARY(data);
	{
		int sLength;
		MYASSERT(stream.length(sLength), ERR_DATA_OOB);
		MYASSERT(sLength >= offset + size, ERR_DATA_OOB);
		ROOM(SYSCALL_THIS->resources.add_RT_FLUX(data, (void*)(size_t)sLength));
	}

	mac.state |= CONNOP_WRITE;
	gThreadPool.execute(new ConnWriteFromData(mac, stream, data, offset, size));
}
Example #5
0
void write_zone_to_disk(int vnum)
{

    int zonenum = real_zone(vnum);

    if (zonenum < 0) {
        mudlog("Attempted to write Non-Existent zone!", NULL, LOG_SYSLOG, TRUE);
        return;
    }

    FILE  *fp;
    int i;

    sprintf(buf, "%s/%d.zon", ZON_PREFIX, vnum);
    fp = fopen(buf, "w+");

    // write it out!
    fprintf(fp, "#%d\n", vnum);
    fprintf(fp, "%s~\n", ZONE.name);
    fprintf(fp, "%d %d %d %d %d %d\n", ZONE.top, ZONE.lifespan, ZONE.reset_mode, ZONE.security, ZONE.connected, ZONE.juridiction);
    fprintf(fp, "%d %d %d %d %d\n", ZONE.editor_ids[0], ZONE.editor_ids[1],
            ZONE.editor_ids[2], ZONE.editor_ids[3], ZONE.editor_ids[4]);
    for (i = 0; i < ZONE.num_cmds; ++i) {
        switch (ZONE.cmd[i].command) {
        case 'M':
            fprintf(fp, "%c %d %ld %d %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    MOB(Zcmd.arg1),
                    Zcmd.arg2,
                    ROOM(Zcmd.arg3));
            break;
        case 'V':
            fprintf(fp, "%c %d %ld %d %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    VEH(Zcmd.arg1),
                    Zcmd.arg2,
                    ROOM(Zcmd.arg3));

            break;
        case 'S':
            fprintf(fp, "%c %d %ld %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    MOB(Zcmd.arg1),
                    Zcmd.arg2);
            break;
        case 'U':
            fprintf(fp, "%c %d %ld %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2);
            break;
        case 'I':
            fprintf(fp, "%c %d %ld %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2);
            break;
        case 'O':
            fprintf(fp, "%c %d %ld %d %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2,
                    ROOM(Zcmd.arg3));
            break;
        case 'H':
            fprintf(fp, "%c %d %ld %d %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2,
                    HOST(Zcmd.arg3));
            break;
        case 'P':
            fprintf(fp, "%c %d %ld %d %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2,
                    OBJ(Zcmd.arg3));
            break;
        case 'D':
            fprintf(fp, "%c %d %ld %d %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    ROOM(Zcmd.arg1),
                    Zcmd.arg2,
                    Zcmd.arg3);
            break;
        case 'E':
            fprintf(fp, "L %d %ld %d %d\n",
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2,
                    Zcmd.arg3);
            break;
        case 'N':
            fprintf(fp, "%c %d %ld %d %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2,
                    Zcmd.arg3);
            break;
        case 'G':
        case 'C':
            fprintf(fp, "%c %d %ld %d\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    OBJ(Zcmd.arg1),
                    Zcmd.arg2);
            break;
        case 'R':
            fprintf(fp, "%c %d %ld %ld\n",
                    Zcmd.command,
                    Zcmd.if_flag,
                    ROOM(Zcmd.arg1),
                    OBJ(Zcmd.arg2));
            break;
        }
    }
    fprintf(fp, "$\n");
    fclose(fp);
}
Example #6
0
void zedit_disp_command_menu(struct descriptor_data *d)
{
    CLS(CH);
    send_to_char(CH, "^WCommand: ^c%d^n\r\n", d->edit_number );
    send_to_char(CH, "^G1^Y) ^WType: ^c%s^n\r\n", get_type(COM->command) );
    send_to_char(CH, "^G2^Y) ^WConditional: ^c%s^n\r\n",
                 (!COM->if_flag ? "Always" : "If Last") );
    switch (COM->command)
    {
    case 'M':
        send_to_char(CH, "^G3^Y) ^WLoad mob: ^c%s ^y(^B%d)^n\r\n",
                     GET_NAME(mob_proto+COM->arg1),
                     MOB(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WLoad in room: ^c%s ^y(^B%d^y)^n\r\n",
                     world[COM->arg3].name,
                     ROOM(COM->arg3) );
        break;
    case 'S':
        send_to_char(CH, "^G3^Y) ^WLoad mob: ^c%s ^y(^B%d)^n\r\n",
                     GET_NAME(mob_proto+COM->arg1),
                     MOB(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        break;
    case 'U':
        send_to_char(CH, "^G3^Y) ^WAttach obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        break;
    case 'I':
        send_to_char(CH, "^G3^Y) ^WCarry obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        break;
    case 'O':
        send_to_char(CH, "^G3^Y) ^WLoad obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WLoad in room: ^c%s ^y(^B%d^y)^n\r\n",
                     world[COM->arg3].name, ROOM(COM->arg3) );
        break;
    case 'H':
        send_to_char(CH, "^G3^Y) ^WLoad obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WLoad in host: ^c%s ^y(^B%d^y)^n\r\n",
                     matrix[COM->arg3].name, HOST(COM->arg3) );
        break;
    case 'V':
        send_to_char(CH, "^G3^Y) ^WLoad Veh: ^c%s ^y(^B%d^y)^n\r\n",
                     veh_proto[COM->arg1].short_description,
                     VEH(COM->arg1));
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WLoad in room: ^c%s ^y(^B%d^y)^n\r\n",
                     world[COM->arg3].name, ROOM(COM->arg3) );
        break;
    case 'P':
        send_to_char(CH, "^G3^Y) ^WPut obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WInto obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg3].text.name,
                     OBJ(COM->arg3) );
        break;
    case 'G':
        send_to_char(CH, "^G3^Y) ^WGive obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        break;
    case 'E':
        send_to_char(CH, "^G3^Y) ^WEquip obj: ^c%s (%d)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1));
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2 );
        send_to_char(CH, "^G5^Y) ^WAt ^c%s^W position\r\n",
                     short_where[COM->arg3] );
        break;
    case 'N':
        send_to_char(CH, "^G3^Y) ^WGive obj: ^c%s (%d)^n\r\n",
                     obj_proto[COM->arg1].text.name,
                     OBJ(COM->arg1));
        send_to_char(CH, "^G4^Y) ^WMaximum number in game: ^c%d^n\r\n",
                     COM->arg2);
        send_to_char(CH, "^G5^Y) ^WTotal number to give: ^c%d^n\r\n",
                     COM->arg3);
        break;
    case 'R':
        send_to_char(CH, "^G3^Y) ^WRemove obj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg2].text.name,
                     OBJ(COM->arg2) );
        send_to_char(CH, "^G4^Y) ^WFrom room: ^c%s ^y(^B%d^y)^n\r\n",
                     world[COM->arg1].name,
                     ROOM(COM->arg1) );
        break;
    case 'D':
        send_to_char(CH, "^G3^Y) ^WSet door: ^c%s^n\r\n",
                     dirs[COM->arg2] );
        send_to_char(CH, "^G4^Y) ^WIn room: ^c%s ^y(^B%d^y)^n\r\n",
                     world[COM->arg1].name,
                     ROOM(COM->arg1) );
        send_to_char(CH, "^G5^Y) ^WTo state: ^c%s^n\r\n",
                     (COM->arg3 == 0 ? "open"
                      : (COM->arg3 == 1 ? "closed" :
                         "closed and locked")) );
        break;
    case 'C':
        send_to_char(CH, "^G3^Y) ^WObj: ^c%s ^y(^B%d^y)^n\r\n",
                     obj_proto[COM->arg1].text.name, OBJ(COM->arg1) );
        send_to_char(CH, "^G4^Y) ^WTo: ^c%s^n\r\n", (COM->arg2 == 1 ? "bioware" : "cyberware") );
        break;
    }
    send_to_char("^Gq^Y) ^WQuit\r\n^wEnter your selection: ", CH);
    d->edit_mode = ZEDIT_COMMAND_MENU;
}
Example #7
0
/*
* Loads a resource from the stream, from originalHandle index to destHandle placeholder.
*/
bool Syscall::loadResource(Stream& file, MAHandle originalHandle, MAHandle destHandle)  {

    if(!file.isOpen())
    {
        return false;
    }

    if ((resourceType == NULL) || (resourceSize == NULL) || (resourceOffset == NULL))
    {
        return false;
    }

    int type = resourceType[originalHandle - 1];
    int size = resourceSize[originalHandle - 1];
    int offset = resourceOffset[originalHandle - 1];
    int rI = destHandle;

    if ( resources.is_loaded(rI) )
    {
        return true;
    }

    TEST(file.seek(Seek::Start, offset));

    switch(type) {
    case RT_BINARY:
    {
#ifndef _android
        MemStream* ms = new MemStream(size);
#else
        char* b = loadBinary(rI, size);
        MemStream* ms = new MemStream(b, size);
#endif
        TEST(file.readFully(*ms));
        ROOM(resources.dadd_RT_BINARY(rI, ms));
#ifdef _android
        checkAndStoreAudioResource(rI);
#endif
    }
    break;
    case RT_IMAGE:
    {
        MemStream b(size);
        TEST(file.readFully(b));
#ifndef _android
        // On all platforms except Android, we load and add
        // the image data. "dadd" means "delete and add",
        // and is defined in runtimes\cpp\base\ResourceArray.h
        RT_IMAGE_Type* image = loadImage(b);
        if(!image)
            BIG_PHAT_ERROR(ERR_IMAGE_LOAD_FAILED);
        ROOM(resources.dadd_RT_IMAGE(rI, image));
#else
        // On Android images are stored on the Java side.
        // Here we allocate a dummy array (real image is
        // in a table in Java) so that the resource handling,
        // like deleting resources, will work also on Android.
        // The actual image will be garbage collected on
        // Android when a resource is replaced in the Java table.
        ROOM(resources.dadd_RT_IMAGE(rI, new int[1]));
        int pos;
        file.tell(pos);
        loadImage(
            rI,
            pos - size,
            size,
            Base::gSyscall->getReloadHandle());
#endif
    }
    break;
    case RT_SPRITE:
    {
        DAR_USHORT(indexSource);
        DAR_USHORT(left);
        DAR_USHORT(top);
        DAR_USHORT(width);
        DAR_USHORT(height);
        DAR_SHORT(cx);
        DAR_SHORT(cy);
#ifndef _android
        ROOM(resources.dadd_RT_IMAGE(rI, loadSprite(resources.get_RT_IMAGE(indexSource),
                                     left, top, width, height, cx, cy)));
#endif
    }
    break;
    default:
        LOG("Cannot load resource type %d.", type);
    }
    return true;
}
Example #8
0
/*
* Loads all resources from the stream, except images, binaries and sprites.
*/
bool Syscall::loadResources(Stream& file, const char* aFilename)  {
    bool hasResources = true;
    if(!file.isOpen())
        hasResources = false;
    else {
        int len, pos;
        TEST(file.length(len));
        TEST(file.tell(pos));
        if(len == pos)
            hasResources = false;
    }
    if(!hasResources/* && aFilename != NULL*/) {
        resources.init(0);
        return true;
    }

#define MATCH_BYTE(c) { DAR_UBYTE(b); if(b != c) { FAIL; } }
    MATCH_BYTE('M');
    MATCH_BYTE('A');
    MATCH_BYTE('R');
    MATCH_BYTE('S');

    DAR_UVINT(nResources);
    DAR_UVINT(rSize);
    resources.init(nResources);

    resourcesCount = nResources;
    resourceOffset = new int[nResources];
    resourceSize = new int[nResources];
    resourceType = new int[nResources];
    resourcesFilename = new char[strlen(aFilename) + 1];
    strcpy(resourcesFilename, aFilename);

    // rI is the resource index.
    int rI = 1;

    while(true) {
        DAR_UBYTE(type);
        if(type == 0)
            break;

        //dispose flag

        DAR_UVINT(size);
        LOG_RES("Type %i, size %i\n", type, size);

        int index = rI - 1;

        TEST(file.tell(resourceOffset[index]));
        resourceSize[index] = size;
        resourceType[index] = type;

        switch(type) {
        case RT_UBIN:
        {
            int pos;
            MYASSERT(aFilename, ERR_RES_LOAD_UBIN);
            TEST(file.tell(pos));
#ifndef _android
            ROOM(resources.dadd_RT_BINARY(rI,
                                          new LimitedFileStream(aFilename, pos, size)));
#else
            // Android loads ubins by using JNI.
            loadUBinary(rI, pos, size);
            ROOM(resources.dadd_RT_BINARY(rI,
                                          new LimitedFileStream(
                                              aFilename,
                                              pos,
                                              size,
                                              getJNIEnvironment(),
                                              getJNIThis())));
#endif
            TEST(file.seek(Seek::Current, size));
        }
        break;
        case RT_PLACEHOLDER:
            ROOM(resources.dadd_RT_PLACEHOLDER(rI, NULL));
            break;
        case RT_LABEL:
        {
            MemStream b(size);
            TEST(file.readFully(b));
            ROOM(resources.dadd_RT_LABEL(rI, new Label((const char*)b.ptr(), rI)));
        }
        break;

#ifdef LOGGING_ENABLED
        case 99:  //testtype
#define DUMP_UVI { DAR_UVINT(u); LOG_RES("u %i\n", u); }
#define DUMP_SVI { DAR_SVINT(s); LOG_RES("s %i\n", s); }
            DUMP_UVI;
            DUMP_UVI;
            DUMP_UVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            break;
#endif
        default:
            TEST(file.seek(Seek::Current, size));
        }

        rI++;
    }
    if(rI != nResources + 1) {
        LOG("rI %i, nR %i\n", rI, nResources);
        BIG_PHAT_ERROR(ERR_RES_FILE_INCONSISTENT);
    }
    LOG_RES("ResLoad complete\n");
    return true;
}
Example #9
0
/*
* Loads all resources from the given buffer.
*/
bool Syscall::loadResourcesFromBuffer(Stream& file, const char* aFilename)  {
    bool hasResources = true;
    if(!file.isOpen())
        hasResources = false;
    else {
        int len, pos;
        TEST(file.length(len));
        TEST(file.tell(pos));
        if(len == pos)
            hasResources = false;
    }
    if(!hasResources/* && aFilename != NULL*/) {
        resources.init(0);
        return true;
    }

#define MATCH_BYTE(c) { DAR_UBYTE(b); if(b != c) { FAIL; } }
    MATCH_BYTE('M');
    MATCH_BYTE('A');
    MATCH_BYTE('R');
    MATCH_BYTE('S');

    DAR_UVINT(nResources);
    DAR_UVINT(rSize);
    resources.init(nResources);

    // rI is the resource index.
    int rI = 1;

    while(true) {
        DAR_UBYTE(type);
        if(type == 0)
            break;

        //dispose flag

        DAR_UVINT(size);
        LOG_RES("Type %i, size %i\n", type, size);

        switch(type) {
        case RT_BINARY:
        {
#ifndef _android
            MemStream* ms = new MemStream(size);
#else
            char* b = loadBinary(rI, size);
            MemStream* ms = new MemStream(b, size);
#endif
            TEST(file.readFully(*ms));
            ROOM(resources.dadd_RT_BINARY(rI, ms));
#ifdef _android
            checkAndStoreAudioResource(rI);
#endif
        }
        break;
        case RT_UBIN:
        {
            int pos;
            MYASSERT(aFilename, ERR_RES_LOAD_UBIN);
            TEST(file.tell(pos));
#ifndef _android
            ROOM(resources.dadd_RT_BINARY(rI,
                                          new LimitedFileStream(aFilename, pos, size)));
#else
            // Android loads ubins by using JNI.
            loadUBinary(rI, pos, size);
            ROOM(resources.dadd_RT_BINARY(rI,
                                          new LimitedFileStream(
                                              aFilename,
                                              pos,
                                              size,
                                              getJNIEnvironment(),
                                              getJNIThis())));
#endif
            TEST(file.seek(Seek::Current, size));
        }
        break;
        case RT_PLACEHOLDER:
            ROOM(resources.dadd_RT_PLACEHOLDER(rI, NULL));
            break;
        case RT_IMAGE:
        {
            MemStream b(size);
            TEST(file.readFully(b));
#ifndef _android
            // On all platforms except Android, we load and add
            // the image data. "dadd" means "delete and add",
            // and is defined in runtimes\cpp\base\ResourceArray.h
            RT_IMAGE_Type* image = loadImage(b);
            if(!image)
                BIG_PHAT_ERROR(ERR_IMAGE_LOAD_FAILED);
            ROOM(resources.dadd_RT_IMAGE(rI, image));
#else
            // On Android images are stored on the Java side.
            // Here we allocate a dummy array (real image is
            // in a table in Java) so that the resource handling,
            // like deleting resources, will work also on Android.
            // The actual image will be garbage collected on
            // Android when a resource is replaced in the Java table.
            ROOM(resources.dadd_RT_IMAGE(rI, new int[1]));
            int pos;
            file.tell(pos);
            loadImage(
                rI,
                pos - size,
                size,
                Base::gSyscall->getReloadHandle());
#endif
        }
        break;
        case RT_SPRITE:
        {
            DAR_USHORT(indexSource);
            DAR_USHORT(left);
            DAR_USHORT(top);
            DAR_USHORT(width);
            DAR_USHORT(height);
            DAR_SHORT(cx);
            DAR_SHORT(cy);
#ifndef _android
            ROOM(resources.dadd_RT_IMAGE(rI, loadSprite(resources.get_RT_IMAGE(indexSource),
                                         left, top, width, height, cx, cy)));
#endif
        }
        break;
        case RT_LABEL:
        {
            MemStream b(size);
            TEST(file.readFully(b));
            ROOM(resources.dadd_RT_LABEL(rI, new Label((const char*)b.ptr(), rI)));
        }
        break;

#ifdef LOGGING_ENABLED
        case 99:  //testtype
#define DUMP_UVI { DAR_UVINT(u); LOG_RES("u %i\n", u); }
#define DUMP_SVI { DAR_SVINT(s); LOG_RES("s %i\n", s); }
            DUMP_UVI;
            DUMP_UVI;
            DUMP_UVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            DUMP_SVI;
            break;
#endif
        default:
            TEST(file.seek(Seek::Current, size));
        }
        rI++;
    }
    if(rI != nResources + 1) {
        LOG("rI %i, nR %i\n", rI, nResources);
        BIG_PHAT_ERROR(ERR_RES_FILE_INCONSISTENT);
    }
    LOG_RES("ResLoad complete\n");
    return true;
}
static int
cons_write_room (NkPort* port)
{
    return ROOM(port);
}