Beispiel #1
0
static int new_out_stream(lua_State* L)
{
	lua_Integer capacity = lua_tointeger(L, 1);
	if(capacity == 0)
		capacity = DEFAULT_STREAM_CAPACITY;
	
	outmemory_stream_t* stream = create_userdata(L, sizeof(outmemory_stream_t), OUT_MEMORY_STREAM);
	*stream = outmemory_stream_open(malloc, free, capacity);
	return 1;
}
Beispiel #2
0
static int new_in_stream(lua_State* L)
{
	size_t length;
	const char* str = lua_tolstring(L, 1, &length);
	if(str == NULL)	luaL_error(L, "string expected");
	
	
	char* data = create_userdata(L, sizeof(inmemory_stream_t) + length, IN_MEMORY_STREAM);

	inmemory_stream_t* stream = (inmemory_stream_t*)data;
	uint8_t* buffer = data + sizeof(inmemory_stream_t);
	memcpy(buffer, str, length);
	*stream = inmemory_stream_open(buffer, length);
	
	return 1;
}
Beispiel #3
0
static int new_writer(lua_State* L)
{
	void* handle;
	writer_api api; 	
	
	int type = lua_type(L, 1);
	switch(type)
	{
		case LUA_TUSERDATA:	
			handle = luaL_testudata(L, 1, OUT_MEMORY_STREAM);
			if(handle)
			{
				api.write = (stream_write_t)&outmemory_stream_write;
				api.flush = (stream_flush_t)&outmemory_stream_flush;
				api.close = (stream_close_t)&outmemory_stream_close;
				break;
			}
			
			handle = luaL_testudata(L, 1, LUA_FILEHANDLE);
			if(handle)
			{
				luaL_Stream* stream = handle;
				handle	  = stream->f;
				api.write = (stream_write_t)&fwrite;
				api.flush = (stream_flush_t)&fflush;
				api.close = (stream_close_t)&fclose;				
				break;
			}

			luaL_error(L, "Inputstream expected");	
		case LUA_TTABLE: 
			luaL_error(L, "Cannot yet use lua table writers");
		break;
		default:
			luaL_error(L, "Inputstream expected");
			break;
	}
		
	//First get the stream data.
	char* udata	= create_userdata(L, sizeof(writer_t) + 4096, WRITER_META_TABLE);
	writer_t* writer = (writer_t*)udata;
	uint8_t* buffer = udata + sizeof(writer_t);
	*writer = writer_create(handle, buffer, 4096, api);
		
	return 1;
}
Beispiel #4
0
static int new_reader(lua_State* L)
{
	void* handle;
	reader_api api; 	
	
	int type = lua_type(L, 1);
	switch(type)
	{
		case LUA_TUSERDATA:	
			handle = luaL_testudata(L, 1, IN_MEMORY_STREAM);
			if(handle)
			{
				api.read  = (stream_write_t)&inmemory_stream_read;
				api.close = (stream_close_t)&inmemory_stream_close;
				break;
			}
			
			handle = luaL_testudata(L, 1, LUA_FILEHANDLE);
			if(handle)
			{
				luaL_Stream* stream = handle;
				handle	  = stream->f;
				api.read  = (stream_read_t)&fread;
				api.close = (stream_close_t)&fclose;
				break;
			}

			luaL_error(L, "Inputstream expected");	
		case LUA_TTABLE: 
			luaL_error(L, "Cannot yet use lua table writers");
		break;
		default:
			luaL_error(L, "Inputstream expected");
			break;
	}
		
	char*	 udata		= create_userdata(L, sizeof(reader_t) + 4096, READER_META_TABLE);
	reader_t* reader 	= (reader_t*)udata;
	uint8_t*  buffer	= (uint8_t*)(udata + sizeof(reader_t));
	*reader = reader_create(handle, api, buffer, 4096);
		
	return 1;
}
Beispiel #5
0
static void convert_userec(struct olduserec *olduser, struct userec *user)
{
    memcpy(user->userid, olduser->userid, IDLEN + 2);
    printf("Tranfering %s ....\n", user->userid);

    user->flags = olduser->flags[0];
    user->flags |= CURSOR_FLAG;
/*
    if (user->userlevel & 0x0400000000)
	user->flags |= PCORP_FLAG;
    user->flags &= ~CLOAK_FLAG;
    user->flags &= ~GIVEUP_FLAG;
*/
    
    user->title = 0;
    user->firstlogin = olduser->firstlogin;
    memcpy(user->lasthost, olduser->lasthost, 16);
    user->numlogins = olduser->numlogins;
    user->numposts = olduser->numposts;
#ifdef CONV_PASS
    memcpy(user->passwd, olduser->passwd, 35);
    bzero(user->unused_padding, 2);
#endif
    memcpy(user->username, olduser->username, NAMELEN);
    bzero(user->club_read_rights, sizeof(user->club_read_rights));
    bzero(user->club_write_rights, sizeof(user->club_write_rights));
    bzero(user->md5passwd, sizeof(user->md5passwd));
    user->userlevel = olduser->userlevel;

    user->userlevel &= ~PERM_BMAMANGER;
    user->userlevel &= ~PERM_DENYRELAX;
    user->userlevel &= ~PERM_NOZAP;
    user->userlevel &= ~PERM_CHATOP;
    user->userlevel &= ~PERM_ADMIN;
    user->userlevel &= ~PERM_HORNOR;
    user->userlevel &= ~PERM_JURY;
    user->userlevel &= ~PERM_CHECKCD;
    user->userlevel &= ~PERM_SUICIDE;
    user->userlevel &= ~PERM_COLLECTIVE;
    user->userlevel &= ~PERM_DISS;
	if(olduser->userlevel & 040000)
    	user->userlevel |= PERM_ADMIN;
	if(!strcmp(user->userid,"stiger")){
    	user->userlevel |= PERM_SYSOP;
    	user->userlevel |= PERM_ADMIN;
	}
	if(olduser->userlevel & 02000000000)
    	user->userlevel &= ~PERM_DENYMAIL;
	else
    	user->userlevel |= PERM_DENYMAIL;

	if(olduser->userlevel & 0400000000)
		user->flags |= PCORP_FLAG;
	else
		user->flags &= ~PCORP_FLAG;

    user->lastlogin = olduser->lastlogin;
    user->stay = olduser->stay;
    user->signature = olduser->signature;
    user->userdefine[0] = olduser->userdefine;
 
	if(olduser->userdefine & 0x00000004)
		user->userdefine[0] |= DEF_FRIENDMSG;
	else
		user->userdefine[0] &= ~DEF_FRIENDMSG;
	if(olduser->userdefine & 0x00000002)
		user->userdefine[0] |= DEF_ALLMSG;
	else
		user->userdefine[0] &= ~DEF_ALLMSG;
	if(olduser->userdefine & 0x00000008)
		user->userdefine[0] |= DEF_SOUNDMSG;
	else
		user->userdefine[0] &= ~DEF_SOUNDMSG;
	if(olduser->userdefine & 0x00000010)
		user->userdefine[0] |= DEF_COLOR;
	else
		user->userdefine[0] &= ~DEF_COLOR;
	if(olduser->userdefine & 0x00000020)
		user->userdefine[0] |= DEF_ACBOARD;
	else
		user->userdefine[0] &= ~DEF_ACBOARD;
	if(olduser->userdefine & 0x00000040)
		user->userdefine[0] |= DEF_ENDLINE;
	else
		user->userdefine[0] &= ~DEF_ENDLINE;
	if(olduser->userdefine & 0x00000080)
		user->userdefine[0] |= DEF_EDITMSG;
	else
		user->userdefine[0] &= ~DEF_EDITMSG;
	if(olduser->userdefine & 0x00000200)
		user->userdefine[0] |= DEF_NORMALSCR;
	else
		user->userdefine[0] &= ~DEF_NORMALSCR;
	if(olduser->userdefine & 0x00000400)
		user->userdefine[0] |= DEF_NEWPOST;
	else
		user->userdefine[0] &= ~DEF_NEWPOST;
	if(olduser->userdefine & 0x00000001)
		user->userdefine[0] |= DEF_FRIENDCALL;
	else
		user->userdefine[0] &= ~DEF_FRIENDCALL;
	if(olduser->userdefine1 & 0x00000004)
		user->userdefine[0] |= DEF_IGNOREMSG;
	else
		user->userdefine[0] &= ~DEF_IGNOREMSG;
	if(olduser->userdefine1 & 0x00000001)
		user->userdefine[0] |= DEF_MAILMSG;
	else
		user->userdefine[0] &= ~DEF_MAILMSG;
	if(olduser->userdefine & 0x00200000)
		user->signature = -1;
	if(olduser->userdefine & 0x02000000)
		user->userdefine[0] |= DEF_CHCHAR;
	else
		user->userdefine[0] &= ~DEF_CHCHAR;
	if(olduser->userdefine & 0x10000000)
		user->userdefine[1] &= ~DEF_HIDEIP;
	else
		user->userdefine[1] |= DEF_HIDEIP;
	if(olduser->userdefine & 0x01000000)
		user->userdefine[0] |= DEF_UNREADMARK;
	else
		user->userdefine[0] &= ~DEF_UNREADMARK;
	if(olduser->userdefine & 0x00400000)
    	user->userdefine[0] |= DEF_SHOWDETAILUSERDATA;
	else
    	user->userdefine[0] &= ~DEF_SHOWDETAILUSERDATA;
	if(olduser->userdefine & 0x40000000)
		user->userdefine[1] &= ~DEF_AUTOREMAIL;
	else
		user->userdefine[1] |= DEF_AUTOREMAIL;

    user->userdefine[0] |= DEF_LOGININFORM;
    user->userdefine[0] |= DEF_CIRCLE;
    user->userdefine[0] |= DEF_SHOWSCREEN;
    user->userdefine[0] |= DEF_TITLECOLOR;
	user->userdefine[0] &= ~DEF_LOGOUT;
	user->userdefine[0] &= ~DEF_INNOTE;
	user->userdefine[0] &= ~DEF_OUTNOTE;
	user->userdefine[0] &= ~DEF_HIGHCOLOR;
	user->userdefine[0] &= ~DEF_NOTMSGFRIEND;
    user->userdefine[0] &= ~DEF_SHOWREALUSERDATA;
    
    user->notedate = olduser->notedate;
    user->noteline = olduser->noteline;
    user->notemode = -1;
    user->exittime = olduser->lastlogout;
    user->usedspace = 0;
#ifdef HAVE_USERMONEY
    user->money = olduser->money;
    user->score = olduser->nummedals;
#endif
    if (strcasecmp(user->userid, "new") == 0)
        return;
    create_userdata(olduser);
	conv_friend(user->userid);
	{
		char dkey[256];
    	sethomefile(dkey, user->userid, "definekey");
//		f_cp("service/definekey.free", dkey, 0);
	}
}
Beispiel #6
0
static void convert_userec(struct olduserec *olduser, struct userec *user)
{
    memcpy(user->userid, olduser->userid, IDLEN + 2);
    printf("Tranfering %s ....\n", user->userid);
    user->flags = olduser->flags[0];


    if (user->userlevel & 0x0400000000)
        user->flags |= PCORP_FLAG;
    user->flags &= ~CLOAK_FLAG;
    user->flags &= ~GIVEUP_FLAG;


    user->title = 0;
    user->firstlogin = olduser->firstlogin;
    memcpy(user->lasthost, olduser->lasthost, 16);
    user->numlogins = olduser->numlogins;
    user->numposts = olduser->numposts;
#ifdef CONV_PASS
    memcpy(user->passwd, olduser->passwd, OLDPASSLEN);
    bzero(user->unused_padding, 2);
#endif
    memcpy(user->username, olduser->username, NAMELEN);
    bzero(user->club_read_rights, sizeof(user->club_read_rights));
    bzero(user->club_write_rights, sizeof(user->club_write_rights));
    bzero(user->md5passwd, sizeof(user->md5passwd));
    user->userlevel = olduser->userlevel;

    user->userlevel &= ~PERM_ADMIN;
    user->userlevel &= ~PERM_HORNOR;
    user->userlevel &= ~PERM_JURY;
    user->userlevel &= ~PERM_CHECKCD;
    user->userlevel &= ~PERM_SUICIDE;
    user->userlevel &= ~PERM_COLLECTIVE;
    user->userlevel &= ~PERM_DISS;
    user->userlevel &= ~PERM_DENYMAIL;

    user->lastlogin = olduser->lastlogin;
    user->stay = olduser->stay;
    user->signature = olduser->signature;
    user->userdefine[0] = olduser->userdefine;

    user->userdefine[0] |= DEF_LOGININFORM;
    user->userdefine[0] |= DEF_SHOWSCREEN;
    user->userdefine[0] |= DEF_TITLECOLOR;
    user->userdefine[0] |= DEF_UNREADMARK;
    user->userdefine[0] &= ~DEF_NOTMSGFRIEND;
    user->userdefine[0] |= DEF_USEGB;
    user->userdefine[0] |= DEF_CHCHAR;
    user->userdefine[0] |= DEF_IGNOREMSG;
    user->userdefine[0] &= ~DEF_SHOWDETAILUSERDATA;
    user->userdefine[0] &= ~DEF_SHOWREALUSERDATA;

    user->notedate = olduser->notedate;
    user->noteline = olduser->noteline;
    user->exittime = olduser->lastlogout;
    user->usedspace = 0;
    if (strcasecmp(user->userid, "new") == 0)
        return;
    create_userdata(olduser);
}