[PATCH weston, v3] weston-terminal: Add cwd and command options
Derek Foreman
derekf at osg.samsung.com
Thu Sep 24 16:08:56 PDT 2015
On 23/09/15 06:38 PM, ahmet acar wrote:
> Add 'cwd' (current working directory) and 'command' (run specified
> command immediately after startup) switch to weston-terminal.
> Both switch are optional.
>
> v3:
> -change command execution mechanism as 'bash -c command' (Bill Spitzak)
>
> Running weston-terminal --command="nano main.c" equals below:
Really silly nit-pick, but I think most terminals (gnome-terminal,
xterm, terminology anyway) call this -e
So I guess it would be nice to be consistent.
> (quoting in above required if command contains space)
>
> ##weston.ini## (snipped)
>
> [terminal]
>
> command=nano main.c // it should not quoting
>
> ---
> clients/terminal.c | 23 +++++++++++++++++++++--
> 1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/clients/terminal.c b/clients/terminal.c
> index 7406f50..574ba09 100644
> --- a/clients/terminal.c
> +++ b/clients/terminal.c
> @@ -52,6 +52,8 @@ static char *option_font;
> static int option_font_size;
> static char *option_term;
> static char *option_shell;
> +static char *option_cwd;
> +static char *option_command;
>
> static struct wl_list terminal_list;
>
> @@ -3027,7 +3029,13 @@ terminal_run(struct terminal *terminal, const char *path)
> if (pid == 0) {
> setenv("TERM", option_term, 1);
> setenv("COLORTERM", option_term, 1);
> - if (execl(path, path, NULL)) {
> + if (option_command) {
> + if (execl(path, path, "-c", option_command, NULL))
Should be using tabs instead of spaces in front of that if statement.
> + fprintf(stderr, "command '%s' couldn't executed: %m",
> + option_command);
> + }
And in front of that }
> +
> + else if (execl(path, path, NULL)) {
> printf("exec failed: %m\n");
> exit(EXIT_FAILURE);
> }
> @@ -3055,6 +3063,8 @@ static const struct weston_option terminal_options[] = {
> { WESTON_OPTION_STRING, "font", 0, &option_font },
> { WESTON_OPTION_INTEGER, "font-size", 0, &option_font_size },
> { WESTON_OPTION_STRING, "shell", 0, &option_shell },
> + { WESTON_OPTION_STRING, "cwd", 0, &option_cwd },
> + { WESTON_OPTION_STRING, "command", 0, &option_command },
> };
>
> int main(int argc, char *argv[])
> @@ -3079,6 +3089,7 @@ int main(int argc, char *argv[])
> weston_config_section_get_string(s, "font", &option_font, "mono");
> weston_config_section_get_int(s, "font-size", &option_font_size, 14);
> weston_config_section_get_string(s, "term", &option_term, "xterm");
> + weston_config_section_get_string(s, "command", &option_command, NULL);
> weston_config_destroy(config);
>
> if (parse_options(terminal_options,
> @@ -3087,7 +3098,9 @@ int main(int argc, char *argv[])
> " --fullscreen or -f\n"
> " --font=NAME\n"
> " --font-size=SIZE\n"
> - " --shell=NAME\n", argv[0]);
> + " --shell=NAME\n"
> + " --cwd=PATH\n"
> + " --command=CMDLINE\n", argv[0]);
Funny formatting here too.
> return 1;
> }
>
> @@ -3099,6 +3112,12 @@ int main(int argc, char *argv[])
>
> wl_list_init(&terminal_list);
> terminal = terminal_create(d);
> +
> + if (option_cwd) {
> + if(chdir(option_cwd) == -1)
> + fprintf(stderr, "failed to changing directory as %s: %m\n",
> + option_cwd);
> + }
> +
> if (terminal_run(terminal, option_shell))
> exit(EXIT_FAILURE);
>
>
More information about the wayland-devel
mailing list