void SludgeProjectManager::on_comp_gamebutton_clicked() { char cmd[1000]; char *file = getFullPath(gameFile); #ifdef __WIN32 int cmdSuccess; int lastSlash = 0; char engineDir[1000]; sprintf(engineDir, "%s", workingDir); for (int k = 0; engineDir[k] != 0; k++) { if (engineDir[k] == '\\') { lastSlash = k; } } sprintf(engineDir + lastSlash + 1, "Engine"); sprintf(cmd, "\"%s\\SLUDGE Engine.exe\"", engineDir); cmdSuccess = sh_cmd(engineDir, cmd, file); if (!cmdSuccess) { errorBox("Couldn't find SLUDGE Engine", "The SLUDGE Engine was expected at ..\\Engine\\SLUDGE Engine.exe relative to the Project Manager executable. Make sure it's there to make the Run Game button work."); } #else sprintf(cmd, "%s", "sludge-engine"); sh_cmd(workingDir, cmd, file); #endif deleteString(file); }
void exec(t_cmd *cmd) { pid_t pid; int stat; stat = 0; if (ft_strchr(cmd->tab[0], '/')) cmd->bin = 1; if (!sh_cmd(cmd)) return ; else if (cmd->bin == 1 || check_bin(cmd)) { gestion_signal(1); if ((pid = fork()) < 0) sh_error(1, cmd, -1); else if (pid == 0) if ((stat = execve(cmd->cmd, cmd->tab, cmd->env)) == -1) sh_error(2, cmd, stat); wait(&stat); if (WIFEXITED(stat)) cmd->ret = WEXITSTATUS(stat); else if (WIFSIGNALED(stat)) signal_message_exec(WTERMSIG(stat)); gestion_signal(0); } else sh_error(0, cmd, 0); }
void SludgeProjectManager::on_program_activate(whichProgram program) { const char *exe; char executable[200]; #ifdef __WIN32 exe = ".exe"; #else exe = ""; #endif switch (program) { case FLOORMAKER: sprintf(executable, "sludge-floormaker%s", exe); break; case SPRITEBANKEDITOR: sprintf(executable, "sludge-spritebankeditor%s", exe); break; case ZBUFFERMAKER: sprintf(executable, "sludge-zbuffermaker%s", exe); break; case TRANSLATIONEDITOR: sprintf(executable, "sludge-translationeditor%s", exe); break; default: break; } sh_cmd(workingDir, executable, NULL); }
void BinSlay::Gui::ShowFunctionView::doShowCFG() { #ifdef __linux__ if (!getenv("DISPLAY")) return; std::string sh_cmd("dot -Txlib " + _function->getBinary()->getFileName() + "_0x" + addrLineEdit->text().toStdString() + ".dot" + " &"); system(sh_cmd.c_str()); #endif }
void SludgeProjectManager::on_treeview_row_activated(GtkTreeView *theTreeView, GtkTreePath *thePath, GtkTreeViewColumn *theColumn, whichTreeview whichOne) { GtkTreeModel *treeModel; const char *cmd; char *tx, *tx1; if (currentFilename[0] == 0) return; getSourceDirFromName(currentFilename); gotoSourceDirectory(); treeModel = gtk_tree_view_get_model(theTreeView); int filenameColumn = 0; switch (whichOne) { case ERROR_TREEVIEW: filenameColumn = ERRORS_COLUMN_FILENAME; case FILE_TREEVIEW: cmd = editor; break; default: break; } GtkTreeIter iter; gtk_tree_model_get_iter(treeModel, &iter, thePath); if (whichOne == ERROR_TREEVIEW) { gboolean hasFilename; gtk_tree_model_get(treeModel, &iter, ERRORS_COLUMN_HAS_FILENAME, &hasFilename, -1); if (!hasFilename) { gtk_tree_model_get(treeModel, &iter, ERRORS_COLUMN_OVERVIEW, &tx, -1); errorBox("Error overview", tx); g_free(tx); return; } } gtk_tree_model_get(treeModel, &iter, filenameColumn, &tx1, -1); tx = g_filename_from_utf8(tx1, -1, NULL, NULL, NULL); g_free(tx1); char * extension; gint *indices; struct errorLinkToFile * index; int i, row; switch (whichOne) { case FILE_TREEVIEW: extension = tx + strlen(tx) - 4; if ((strlen(tx) > 4) && (!strcmp(extension, ".tra") || !strcmp(extension, ".TRA"))) { #ifdef __WIN32 cmd = "sludge-translationeditor.exe"; #else cmd = "sludge-translationeditor"; #endif } break; case RESOURCE_TREEVIEW: extension = tx + strlen(tx) - 4; if (strlen(tx) > 4) { if (!strcmp(extension, ".flo") || !strcmp(extension, ".FLO")) { #ifdef __WIN32 cmd = "sludge-floormaker.exe"; #else cmd = "sludge-floormaker"; #endif } else if (!strcmp(extension, ".duc") || !strcmp(extension, ".DUC")) { #ifdef __WIN32 cmd = "sludge-spritebankeditor.exe"; #else cmd = "sludge-spritebankeditor"; #endif } else if (!strcmp(extension, ".zbu") || !strcmp(extension, ".ZBU")) { #ifdef __WIN32 cmd = "sludge-zbuffermaker.exe"; #else cmd = "sludge-zbuffermaker"; #endif } else if (!strcmp(extension, ".png") || !strcmp(extension, ".PNG") || !strcmp(extension, ".tga") || !strcmp(extension, ".TGA")) { cmd = imageViewer; } else if (!strcmp(extension, ".wav") || !strcmp(extension, ".WAV") || !strcmp(extension, ".ogg") || !strcmp(extension, ".OGG") || !strcmp(extension, "flac") || !strcmp(extension, "FLAC")) { cmd = audioPlayer; } else if (!strcmp(extension, ".mod") || !strcmp(extension, ".MOD") || !strcmp(extension, ".s3m") || !strcmp(extension, ".S3M")) { cmd = modPlayer; } else { extension = tx + strlen(tx) - 3; if (strlen(tx) > 3 && (!strcmp(extension, ".it") || !strcmp(extension, ".IT") || !strcmp(extension, ".xm") || !strcmp(extension, ".XM"))) { cmd = modPlayer; } } } break; default: break; } if (cmd[0] != 0 && tx) { sh_cmd(workingDir, cmd, getFullPath(tx)); } /* else { char buf[1000]; GError *error = NULL; sprintf(buf, "file://%s", getFullPath(tx)); gtk_show_uri (NULL, buf, GDK_CURRENT_TIME, &error); if (error != NULL) { errorBox("Opening file failed!", error->message); g_error_free(error); } } */ g_free(tx); }