int CreatureTemplateManager::addTemplate(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addTemplate"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); uint32 crc = (uint32) ascii.hashCode(); LuaObject obj(L); CreatureTemplate* newTemp = new CreatureTemplate(); newTemp->setTemplateName(ascii); newTemp->readObject(&obj); if (instance()->hashTable.containsKey(crc)) { luaL_where (L, 2); String luaMethodName = lua_tostring(L, -1); lua_pop(L, 1); instance()->error("overwriting mobile " + ascii + " with " + luaMethodName); ERROR_CODE = DUPLICATE_MOBILE; } CreatureTemplateManager::instance()->hashTable.put(crc, newTemp); int count = loadedMobileTemplates.increment(); if (ConfigManager::instance()->isProgressMonitorActivated() && !DEBUG_MODE) printf("\r\tLoading mobile templates: [%d] / [?]\t", count); return 0; }
int CreatureTemplateManager::includeFile(lua_State* L) { if (checkArgumentCount(L, 1) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::includeFile"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String filename = Lua::getStringParameter(L); int oldError = ERROR_CODE; bool ret = Lua::runFile("scripts/mobile/" + filename, L); if (!ret) { ERROR_CODE = GENERAL_ERROR; instance()->error("running file scripts/mobile/" + filename); } else { if (!oldError && ERROR_CODE) { instance()->error("running file scripts/mobile/" + filename); } } return 0; }
int CreatureTemplateManager::addDestroyMissionGroup(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addDestroyMissionGroup"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); uint32 crc = (uint32) ascii.hashCode(); LuaObject obj(L); CreatureTemplateManager::instance()->destroyMissionGroupMap.put(crc, new DestroyMissionSpawnGroup(ascii, obj)); return 0; }
int CreatureTemplateManager::addOutfitGroup(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addOutfitGroup"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); LuaObject obj(L); Reference<MobileOutfitGroup*> templ = new MobileOutfitGroup(); templ->readObject(&obj); instance()->outfits.put(ascii, templ); return 0; }
int CreatureTemplateManager::addConversationTemplate(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addConversationTemplate"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); uint32 crc = (uint32) ascii.hashCode(); LuaObject obj(L); Reference<ConversationTemplate*> newTemp = new ConversationTemplate(crc); CreatureTemplateManager::instance()->conversations.put(crc, newTemp); newTemp->readObject(&obj); return 0; }
int CreatureTemplateManager::addLairTemplate(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addLairTemplate"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); uint32 crc = (uint32) ascii.hashCode(); LuaObject obj(L); Reference<LairTemplate*> templ = new LairTemplate(ascii); templ->readObject(&obj); CreatureTemplateManager::instance()->lairTemplates.put(crc, templ); return 0; }
bool SimpleMoveFileOperation::performOperation() { if (!checkArgumentCount(2)) return false; const QStringList args = arguments(); const QString source = args.at(0); const QString target = args.at(1); if (source.isEmpty() || target.isEmpty()) { setError(UserDefinedError); setErrorString(tr("None of the arguments can be empty: source \"%1\", target \"%2\".") .arg(QDir::toNativeSeparators(source), QDir::toNativeSeparators(target))); return false; } // If destination file exists, then we cannot use QFile::copy() because it does not overwrite an existing // file. So we remove the destination file. QFile file(target); if (file.exists()) { if (!file.remove()) { setError(UserDefinedError); setErrorString(tr("Cannot move file from \"%1\" to \"%2\", because the target path exists and is " "not removable.").arg(QDir::toNativeSeparators(source), QDir::toNativeSeparators(target))); return false; } } file.setFileName(source); if (!file.rename(target)) { setError(UserDefinedError); setErrorString(tr("Cannot move file \"%1\" to \"%2\": %3").arg( QDir::toNativeSeparators(source), QDir::toNativeSeparators(target), file.errorString())); return false; } emit outputTextChanged(tr("Moving file \"%1\" to \"%2\".").arg(QDir::toNativeSeparators(source), QDir::toNativeSeparators(target))); return true; }
void lcpp::LispFunction_UserDefined::processArguments(Ptr<LispEnvironment> pEnv, Ptr<LispObject> pArgs) { if(!checkArgumentCount(pArgs)) { return; } // Update environment with argument values ////////////////////////////////////////////////////////////////////////// EZ_ASSERT(pArgs->is<LispCons>(), "pArgs must be a cons if it is not nil!"); auto pCurrentArgName = m_pArgNameList.cast<LispCons>(); auto pCurrentArg = pArgs.cast<LispCons>(); for(auto i = m_numArgs; i > 0; --i) { pEnv->add(pCurrentArgName->car().cast<LispSymbol>(), pCurrentArg->car()); pCurrentArgName = pCurrentArgName->cdr().cast<LispCons>(); pCurrentArg = pCurrentArg->cdr().cast<LispCons>(); } }
int CreatureTemplateManager::addWeapon(lua_State* L) { if (checkArgumentCount(L, 2) == 1) { instance()->error("incorrect number of arguments passed to CreatureTemplateManager::addWeapon"); ERROR_CODE = INCORRECT_ARGUMENTS; return 0; } String ascii = lua_tostring(L, -2); uint32 crc = (uint32) ascii.hashCode(); LuaObject obj(L); if (obj.isValidTable()) { Vector<String> weps; for (int i = 1; i <= obj.getTableSize(); ++i) weps.add(obj.getStringAt(i)); CreatureTemplateManager::instance()->weaponMap.put(crc, weps); } return 0; }
bool ClientApp::doIt() { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); const int argc = args->count(); checkArgumentCount(argc, 1, 0); if ( !args->isSet( "ninteractive" ) ) { s_interactive = false; s_jobFlags = KIO::HideProgressInfo; } #if !defined(KIOCLIENT_AS_KDEOPEN) if (args->isSet("overwrite")) { s_jobFlags |= KIO::Overwrite; } #endif kDebug() << "Creating ClientApp"; int fake_argc = 0; char** fake_argv = 0; ClientApp app( fake_argc, fake_argv ); KComponentData componentData("kioclient"); // needed by KIO's internal use of KConfig app.setApplicationName(componentData.componentName()); KGlobal::ref(); KGlobal::setAllowQuit(true); // KIO needs dbus (for uiserver communication) extern void qDBusBindToApplication(); qDBusBindToApplication(); if (!QDBusConnection::sessionBus().isConnected()) kFatal(101) << "Session bus not found" ; #ifdef KIOCLIENT_AS_KDEOPEN return app.kde_open(args->url(0), QByteArray(), false); #elif defined(KIOCLIENT_AS_KDECP) checkArgumentCount(argc, 2, 0); return app.doCopy(0); #elif defined(KIOCLIENT_AS_KDEMV) checkArgumentCount(argc, 2, 0); return app.doMove(0); #else // Normal kioclient mode const QByteArray command = args->arg(0).toLocal8Bit(); if ( command == "openProperties" ) { checkArgumentCount(argc, 2, 2); // openProperties <url> KPropertiesDialog * p = new KPropertiesDialog( args->url(1), 0 /*no parent*/ ); QObject::connect( p, SIGNAL( destroyed() ), &app, SLOT( quit() )); QObject::connect( p, SIGNAL( canceled() ), &app, SLOT( slotDialogCanceled() )); p->show(); app.exec(); return m_ok; } else if ( command == "cat" ) { checkArgumentCount(argc, 2, 2); // cat <url> KIO::TransferJob* job = KIO::get(args->url(1), KIO::NoReload, s_jobFlags); if ( !s_interactive ) job->setUiDelegate( 0 ); connect(job, SIGNAL(data(KIO::Job*,QByteArray) ), &app, SLOT(slotPrintData(KIO::Job*,QByteArray))); connect( job, SIGNAL( result( KJob * ) ), &app, SLOT( slotResult( KJob * ) ) ); app.exec(); return m_ok; }
QScriptValue checkArgumentCount(QScriptContext *context, const QString &name, int count) { return checkArgumentCount(context, name, count, count); }
int isCommand( struct directory* cluster, unsigned char* buffer, unsigned int FDS, unsigned int SPC, unsigned int RSC, unsigned int BPS, char* input, char* args ) { /* Make a copy of args; iterate through it with strtok; count arguments */ int argumentCount = 0; char * tempArgs = malloc( 1 + strlen ( args )); strcpy( tempArgs, args ); for( tempArgs = strtok( tempArgs, " " ); tempArgs; tempArgs = strtok( NULL, " " )) { argumentCount++; } // printf( "Number of args: %d\n", argumentCount ); int dir_result = isDir( cluster, args ); int file_result = isFile( cluster, args ); int r,w; /* OPEN */ if( strcmp( input, "open" ) == 0 ){ // check number of args: if( checkArgumentCount( argumentCount, OPEN_ARG_NUM )) return 1; char * mode = calloc( sizeof( char ), 2 ); char * ptr = calloc( sizeof( char ), 64 ); ptr = strtok( args, " " ); mode = strtok( NULL, " " ); open( args, mode ); return 1; } /* CLOSE */ else if(strcmp(input,"close") == 0){ // check number of args: if( checkArgumentCount( argumentCount, CLOSE_ARG_NUM )) return 1; close(args); return 1; } /* CREATE */ else if(strcmp(input,"create") == 0){ // check number of args: if( checkArgumentCount( argumentCount, CREATE_ARG_NUM )) return 1; if(fileExists(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS) == 1){ printf("error: File already exists\n"); return 1; } r = checkIfClusterIsFull(buffer,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r == 1){ //cluster is full, allocate new space //get space for new link in cluster chain r = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); //extend the cluster chain using the new link extendClusterChain(buffer,r,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); //get space for the new file being created r = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); //create new file r = create(buffer,args,r,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r > 0){ FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: File already exists\n"); }else if(r < 0){ printf("error: out of useable space!\n"); } }else{ //cluster has room, put new file in that space r = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); r = create(buffer,args,r,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r > 0){ FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: File already exists\n"); }else if(r < 0){ printf("error: out of useable space!\n"); } } return 1; } /* RMDIR */ else if(strcmp(input,"rmdir") == 0){ // check number of args: if( checkArgumentCount( argumentCount, RMDIR_ARG_NUM )) return 1; r = rmdir(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r == 1){ FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: does not exist\n"); }else if(r == -1){ printf("error: not a directory\n"); }else{ printf("error: directory not empty\n"); } return 1; } /* RM */ else if(strcmp(input,"rm") == 0){ // check number of args: if( checkArgumentCount( argumentCount, RM_ARG_NUM )) return 1; r = rm(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r == 1){ close_without_check(args); FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: does not exist\n"); }else{ printf("error: not a file\n"); } return 1; } /* SIZE */ else if(strcmp(input,"size") == 0){ // check number of args: if( checkArgumentCount( argumentCount, SIZE_ARG_NUM )) return 1; size(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); return 1; } /* CD */ else if(strcmp(input,"cd") == 0){ // check number of args: if( checkArgumentCount( argumentCount, CD_ARG_NUM )) return 1; if(dir_result == -1){ //current dir //dont change currentClusterNumber }else if(dir_result == -2){ currentClusterNumber(SET, cd_back(buffer, currentClusterNumber(GET,0), FDS,SPC,RSC,BPS) ); return 3; }else{ r = cd(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r > 0){ currentClusterNumber(SET,r); return 2; }else{ printf("%s: Invalid directory\n",args); } } return 1; } /* LS */ else if(strcmp(input,"ls") == 0){ // check number of args: if( checkArgumentCount( argumentCount, LS_ARG_NUM )) return 1; if(dir_result > 0){ ls(buffer,args,dir_result,FDS,SPC, RSC, BPS); } else if(dir_result < 0){ ls(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); } else printf("%s: Invalid directory\n",args); return 1; } /* MKDIR */ else if(strcmp(input,"mkdir") == 0){ int datacnum, dotcnum; // check number of args: if( checkArgumentCount( argumentCount, MKDIR_ARG_NUM )) return 1; if(fileExists(buffer,args,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS) == 1){ printf("error: directory already exists\n"); return 1; } r = checkIfClusterIsFull(buffer,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r == 1){ //cluster is full, allocate new space //get space for new link in cluster chain dotcnum = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); //extend the cluster chain using the new link extendClusterChain(buffer,dotcnum,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); //get space for the new dir being created datacnum = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); //create new directory r = mkdir(buffer,args,r,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r > 0){ makeDotDirectories(buffer,(datacnum-2)*SPC+FDS,dotcnum,currentClusterNumber(GET,0)); FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: directory already exists\n"); }else if(r < 0){ printf("error: out of useable space!\n"); } }else{ //cluster has room, put new file in that space datacnum = findEmptyCluster(buffer,FDS,SPC,RSC,BPS); r = mkdir(buffer,args,datacnum,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); if(r > 0){ makeDotDirectories(buffer,(datacnum-2)*SPC+FDS,datacnum,currentClusterNumber(GET,0)); FILE *fileptr; fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,67108864,fileptr); fclose(fileptr); }else if(r == 0){ printf("error: directory already exists\n"); }else if(r < 0){ printf("error: out of useable space!\n"); } } return 1; } /* READ */ else if(strcmp(input,"read") == 0){ // check number of args: if( checkArgumentCount( argumentCount, READ_ARG_NUM )) return 1; char* file = calloc(sizeof(char),64); long int start, num_bytes; char *pEnd; char *temp1 = calloc(sizeof(char),8); char *temp2 = calloc(sizeof(char),8); file = strtok(args," "); r = fileModeIsReadable(file); if(r == 1){ temp1 = strtok(NULL," "); start = strtol(temp1,&pEnd,10); temp2 = strtok(NULL," "); num_bytes = strtol(temp2,&pEnd,10); if(start >= SIZE_OF_SECTOR){ printf( "Error: attempt to read beyond EoF\n" ); }else{ read( buffer, file, start, num_bytes, currentClusterNumber( GET, 0 ), FDS, SPC, RSC, BPS ); } }else{ printf( "Error: file is not open for writing!\n" ); } return 1; } /* WRITE */ else if( strcmp( input, "write" ) == 0 ){ // check number of args: if( checkArgumentCount( argumentCount, WRITE_ARG_NUM )) return 1; char* file = calloc(sizeof(char),64); long int start, num_bytes; char *pEnd; char *temp1 = calloc(sizeof(char),8); char *temp2 = calloc(sizeof(char),8); char *temp3 = calloc(sizeof(char),8); file = strtok(args," "); w = fileModeIsWriteable(file); if(w == 1){ temp1 = strtok(NULL," "); start = strtol(temp1,&pEnd,10); temp2 = strtok(NULL," "); num_bytes = strtol(temp2,&pEnd,10); temp3 = strtok(NULL,"\n"); if(strlen(temp3) != num_bytes){ printf("Error: Bytes requested does not match string size!\n"); return 1; } if(start >= SIZE_OF_SECTOR){ printf("Error: attempt to read beyond EoF\n"); }else{ FILE *fileptr; long filelen; write(buffer,file,start,num_bytes,temp3,currentClusterNumber(GET,0),FDS,SPC,RSC,BPS); //find the file length fileptr = fopen("fat32.img", "rb"); fseek(fileptr, 0, SEEK_END); filelen = ftell(fileptr); fclose(fileptr); //write to file fileptr = fopen("fat32.img", "wb"); fwrite(buffer,1,filelen,fileptr); fclose(fileptr); } }else{ printf("Error: file is not open for writing!\n"); } return 1; } /* EXIT */ else if( strcmp( input,"exit" ) == 0 ){ printf( "Goodbye!\n" ); exit( 1 ); }else return 0; }