static int pmain(lua_State* L) { struct Smain* s = (struct Smain*)lua_touserdata(L, 1); int argc=s->argc; char** argv=s->argv; const Proto* f; int i; if (!lua_checkstack(L,argc)) fatal("too many input files"); for (i=0; i<argc; i++) { const char* filename=IS("-") ? NULL : argv[i]; if (luaL_loadfile(L,filename)!=0) fatal(lua_tostring(L,-1)); } f=combine(L,argc); if (listing) luaU_print(f,listing>1); if (dumping) { ZIPFSFILE* D= (output==NULL) ? zipfs_stdout : zipfs_fopen(output,"wb"); if (D==NULL) cannot("open"); lua_lock(L); luaU_dump(L,f,writer,D,stripping); lua_unlock(L); if (zipfs_ferror(D)) cannot("write"); if (zipfs_fclose(D)) cannot("close"); } return 0; }
//----------------------------------------------------------------// u32 USLuaSerializer::IsLuaFile ( cc8* filename ) { ZIPFSFILE* file = ( ZIPFSFILE* )zipfs_fopen ( filename, "r" ); if ( !file ) return LOAD_ERROR; char magic [ 256 ]; char* str = zipfs_fgets ( magic, 6, file ); UNUSED ( str ); zipfs_fclose ( file ); if ( strcmp ( magic, this->GetFileMagic ()) != 0 ) return INVALID_FILE; return SUCCESS; }