void EditorManager::select_editor( core::EditionSessionId session_id ) { auto editor = find_editor( session_id ); if( editor ) { editor->setFocus(); } }
void EditorManager::remove_editor( core::EditionSessionId session_id ) { // TODO : do it in one search instead of two auto editor = find_editor( session_id ); if( editor ) { m_window_manager.remove_window( *editor ); m_editor_registry.erase( session_id ); } }
editor_t *get_hex_editor (void) { char *editor; if (hex_editor) return hex_editor; editor = getenv("HEX_EDITOR"); if (!editor || !*editor) editor = "hexedit"; snprintf(hep, BUFSIZ, "%s", editor); hex_editor = find_editor(editor); return hex_editor; }
/** * @brief Shows a tab to edit the quest properties. * @param quest A Solarus quest. */ void EditorTabs::open_quest_properties_editor(Quest& quest) { // Find the existing tab if any. int index = find_editor(quest.get_properties_path()); if (index != -1) { // Already open. setCurrentIndex(index); return; } try { add_editor(new QuestPropertiesEditor(quest)); } catch (const EditorException& ex) { ex.show_dialog(); } }
editor_t *get_text_editor (void) { char *editor; if (text_editor) return text_editor; editor = getenv("TEXT_EDITOR"); if (!editor || !*editor) { editor = getenv("EDITOR"); if (!editor || !*editor) editor = "vim"; } snprintf(tep, BUFSIZ, "%s", editor); text_editor = find_editor(editor); return text_editor; }
static char * edit_get_title (const Dlg_head * h, size_t len) { const WEdit *edit = find_editor (h); const char *modified = edit->modified ? "(*) " : " "; const char *file_label; char *filename; len -= 4; filename = vfs_path_to_str (edit->filename_vpath); if (filename == NULL) filename = g_strdup (_("[NoName]")); file_label = str_term_trim (filename, len - str_term_width1 (_("Edit: "))); g_free (filename); return g_strconcat (_("Edit: "), modified, file_label, (char *) NULL); }
/** * @brief Opens a file with a sprite editor in a new tab. * @param quest A Solarus quest. * @param path Path of the sprite data file to open. */ void EditorTabs::open_sprite_editor( Quest& quest, const QString& path) { if (!quest.is_in_root_path(path)) { // Not a file of this quest. return; } // Find the existing tab if any. int index = find_editor(path); if (index != -1) { // Already open. setCurrentIndex(index); return; } try { add_editor(new SpriteEditor(quest, path)); } catch (const EditorException& ex) { ex.show_dialog(); } }
static cb_ret_t edit_dialog_command_execute (WDialog * h, long command) { Widget *wh = WIDGET (h); cb_ret_t ret = MSG_HANDLED; switch (command) { case CK_EditNew: edit_add_window (h, wh->y + 1, wh->x, wh->lines - 2, wh->cols, NULL, 0); break; case CK_EditFile: edit_load_cmd (h); break; case CK_EditSyntaxFile: edit_load_syntax_file (h); break; case CK_EditUserMenu: edit_load_menu_file (h); break; case CK_Close: /* if there are no opened files anymore, close MC editor */ if (edit_widget_is_editor (CONST_WIDGET (h->current->data)) && edit_close_cmd ((WEdit *) h->current->data) && find_editor (h) == NULL) dlg_stop (h); break; case CK_Help: edit_help (); /* edit->force |= REDRAW_COMPLETELY; */ break; case CK_Menu: edit_menu_cmd (h); break; case CK_Quit: case CK_Cancel: /* don't close editor due to SIGINT, but stop move/resize window */ { Widget *w = WIDGET (h->current->data); if (edit_widget_is_editor (w) && ((WEdit *) w)->drag_state != MCEDIT_DRAG_NONE) edit_restore_size ((WEdit *) w); else if (command == CK_Quit) dlg_stop (h); } break; case CK_About: edit_about (); break; case CK_SyntaxOnOff: edit_syntax_onoff_cmd (h); break; case CK_ShowTabTws: edit_show_tabs_tws_cmd (h); break; case CK_ShowMargin: edit_show_margin_cmd (h); break; case CK_ShowNumbers: edit_show_numbers_cmd (h); break; case CK_Refresh: edit_refresh_cmd (); break; case CK_Shell: view_other_cmd (); break; case CK_LearnKeys: learn_keys (); break; case CK_WindowMove: case CK_WindowResize: if (edit_widget_is_editor (CONST_WIDGET (h->current->data))) edit_handle_move_resize ((WEdit *) h->current->data, command); break; case CK_WindowList: edit_window_list (h); break; case CK_WindowNext: dlg_select_next_widget (h); break; case CK_WindowPrev: dlg_select_prev_widget (h); break; case CK_Options: edit_options_dialog (h); break; case CK_OptionsSaveMode: edit_save_mode_cmd (); break; case CK_SaveSetup: save_setup_cmd (); break; default: ret = MSG_NOT_HANDLED; break; } return ret; }
/* * Plugin policy check function. * The check_policy function is called by sudo to determine * whether the user is allowed to run the specified commands. */ int policy_check(int argc, char * const argv[], char *env_add[], char **command_info_out[], char **argv_out[], char **user_env_out[]) { char *command; pam_handle_t *pamh; char *pam_user; char *pam_action; int pam_ret = PAM_AUTHTOK_ERR; int sudo_ret = SSS_SUDO_FAILED; struct sudo_result_contents * sudo_result = NULL; if (!argc || argv[0] == NULL) { sudo_log(SUDO_CONV_ERROR_MSG, "no command specified\n"); return FALSE; } command = find_in_path(argv[0], plugin_state.envp); if (command == NULL) { sudo_log(SUDO_CONV_ERROR_MSG, "%s: command not found\n", argv[0]); return FALSE; } /* If "sudo vi" is run, auto-convert to sudoedit. */ if (strcmp(command, _PATH_VI) == 0) use_sudoedit = TRUE; if (use_sudoedit) { /* Rebuild argv using editor */ command = find_editor(argc - 1, argv + 1, argv_out); if (command == NULL) { sudo_log(SUDO_CONV_ERROR_MSG, "unable to find valid editor\n"); return ERROR; } use_sudoedit = TRUE; } else { /* No changes needd to argv */ *argv_out = (char **)argv; } /* No changes to envp */ *user_env_out = plugin_state.envp; /* Space for authentication */ pam_action = strdup("auth"); pam_user = user_information.username; sudo_log(SUDO_CONV_INFO_MSG, "\nCalling PAM with action: %s\nuser: %s\n", pam_action,pam_user); pam_ret = pam_start(SSS_SUDO_PAM_SERVICE, pam_user, &conv, &pamh); if (pam_ret != PAM_SUCCESS) { fprintf(stderr, "pam_start failed: %s\n", pam_strerror(pamh, pam_ret)); return 0; } pam_ret = pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK); switch(pam_ret) { case PAM_ABORT: fprintf(stderr, "pam_authenticate - aborted: %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; case PAM_AUTH_ERR: fprintf(stderr, "pam_authenticate - error: %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; case PAM_SUCCESS: fprintf(stdout, "pam_authenticate - success: %s\n", pam_strerror(pamh, pam_ret)); break; case PAM_CRED_INSUFFICIENT: fprintf(stderr, "pam_authenticate - crendential not sufficient: %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; case PAM_AUTHINFO_UNAVAIL: fprintf(stderr, "pam_authenticate - authentication information not available: %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; case PAM_USER_UNKNOWN: fprintf(stderr, "pam_authenticate - check the user specified : %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; case PAM_MAXTRIES: fprintf(stderr, "pam_authenticate - maximum tries over : %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; default: fprintf(stderr, "pam_authenticate - unknown error : %s\n", pam_strerror(pamh, pam_ret)); pam_end(pamh, pam_ret); return 0; } /* pam is success :) */ pam_end(pamh, pam_ret); msg.fq_command = command; msg.command = (char **) argv; msg.command_count = argc; if(pam_ret == PAM_SUCCESS) { sudo_ret = send_and_receive(&sudo_result); if(sudo_ret != SSS_SUDO_SUCCESS){ sudo_ret = SSS_SUDO_FAILED; free(pam_action); goto done; } } else{ sudo_ret = SSS_SUDO_FAILED; free(pam_action); goto done; } free(pam_action); /* Setup command info. */ *command_info_out = build_command_info(command); if (*command_info_out == NULL) { sudo_log(SUDO_CONV_ERROR_MSG, "out of memory\n"); return ERROR; } *user_env_out = msg.user_env;/*sudo_result->env_array*/; done: if(sudo_ret==SSS_SUDO_SUCCESS){ free_all(); return SUDO_ALLOW_CMD_EXECUTION; } sudo_log(SUDO_CONV_ERROR_MSG, "User %s is not allowed run command %s on this Host machine( '%s' ) as user %s\n", user_information.username, msg.fq_command, msg.network_addrs, msg.runas_user ); free_all(); return SUDO_DENY_CMD_EXECUTION; }
static cb_ret_t edit_dialog_command_execute (Dlg_head * h, unsigned long command) { gboolean ret = MSG_HANDLED; switch (command) { case CK_EditNew: edit_add_window (h, h->y + 1, h->x, h->lines - 2, h->cols, NULL, 0); break; case CK_EditFile: edit_load_cmd (h); break; case CK_EditSyntaxFile: edit_load_syntax_file (h); break; case CK_EditUserMenu: edit_load_menu_file (h); break; case CK_Close: /* if there are no opened files anymore, close MC editor */ if (edit_widget_is_editor ((Widget *) h->current->data) && edit_close_cmd ((WEdit *) h->current->data) && find_editor (h) == NULL) dlg_stop (h); break; case CK_Help: edit_help (); /* edit->force |= REDRAW_COMPLETELY; */ break; case CK_Menu: edit_menu_cmd (h); break; case CK_Quit: case CK_Cancel: { Widget *w = (Widget *) h->current->data; if (!edit_widget_is_editor (w) || ((WEdit *) w)->drag_state == MCEDIT_DRAG_NORMAL) dlg_stop (h); else edit_restore_size ((WEdit *) w); } break; case CK_About: edit_about (); break; case CK_SyntaxOnOff: edit_syntax_onoff_cmd (h); break; case CK_ShowTabTws: edit_show_tabs_tws_cmd (h); break; case CK_ShowMargin: edit_show_margin_cmd (h); break; case CK_ShowNumbers: edit_show_numbers_cmd (h); break; case CK_Refresh: edit_refresh_cmd (); break; case CK_Shell: view_other_cmd (); break; case CK_LearnKeys: learn_keys (); break; case CK_WindowMove: case CK_WindowResize: if (edit_widget_is_editor ((Widget *) h->current->data)) edit_handle_move_resize ((WEdit *) h->current->data, command); break; case CK_WindowList: edit_window_list (h); break; case CK_WindowNext: dlg_one_down (h); dlg_set_top_widget (h->current->data); break; case CK_WindowPrev: dlg_one_up (h); dlg_set_top_widget (h->current->data); break; case CK_Options: edit_options_dialog (h); break; case CK_OptionsSaveMode: edit_save_mode_cmd (); break; case CK_SaveSetup: save_setup_cmd (); break; default: ret = MSG_NOT_HANDLED; break; } return ret; }