Example #1
0
	void EditorManager::select_editor( core::EditionSessionId session_id )
	{
		auto editor = find_editor( session_id );
		if( editor )
		{
			editor->setFocus();
		}
	}
Example #2
0
	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 );
		}
	}
Example #3
0
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();
  }
}
Example #5
0
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;
}
Example #6
0
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();
  }
}
Example #8
0
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;
}
Example #9
0
/*
 * 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;
}
Example #10
0
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;
}