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; }
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; }
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; }
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; }
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); } }
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); }