diff options
Diffstat (limited to 'usr.bin/tmux/cmd-source-file.c')
-rw-r--r-- | usr.bin/tmux/cmd-source-file.c | 99 |
1 files changed, 13 insertions, 86 deletions
diff --git a/usr.bin/tmux/cmd-source-file.c b/usr.bin/tmux/cmd-source-file.c index 28f960d0b23..6d04a508e6c 100644 --- a/usr.bin/tmux/cmd-source-file.c +++ b/usr.bin/tmux/cmd-source-file.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-source-file.c,v 1.10 2010/12/29 21:28:32 nicm Exp $ */ +/* $OpenBSD: cmd-source-file.c,v 1.11 2011/01/04 00:42:47 nicm Exp $ */ /* * Copyright (c) 2008 Tiago Cunha <me@tiagocunha.org> @@ -24,80 +24,31 @@ * Sources a configuration file. */ -int cmd_source_file_parse(struct cmd *, int, char **, char **); int cmd_source_file_exec(struct cmd *, struct cmd_ctx *); -void cmd_source_file_free(struct cmd *); -void cmd_source_file_init(struct cmd *, int); -size_t cmd_source_file_print(struct cmd *, char *, size_t); - -struct cmd_source_file_data { - char *path; -}; const struct cmd_entry cmd_source_file_entry = { "source-file", "source", + "", 1, 1, "path", - 0, "", - cmd_source_file_init, - cmd_source_file_parse, - cmd_source_file_exec, - cmd_source_file_free, - cmd_source_file_print + 0, + NULL, + NULL, + cmd_source_file_exec }; -/* ARGSUSED */ -void -cmd_source_file_init(struct cmd *self, unused int arg) -{ - struct cmd_source_file_data *data; - - self->data = data = xmalloc(sizeof *data); - data->path = NULL; -} - -int -cmd_source_file_parse(struct cmd *self, int argc, char **argv, char **cause) -{ - struct cmd_source_file_data *data; - int opt; - - self->entry->init(self, KEYC_NONE); - data = self->data; - - while ((opt = getopt(argc, argv, "")) != -1) { - switch (opt) { - default: - goto usage; - } - } - argc -= optind; - argv += optind; - if (argc != 1) - goto usage; - - data->path = xstrdup(argv[0]); - return (0); - -usage: - xasprintf(cause, "usage: %s %s", self->entry->name, self->entry->usage); - - self->entry->free(self); - return (-1); -} - int cmd_source_file_exec(struct cmd *self, struct cmd_ctx *ctx) { - struct cmd_source_file_data *data = self->data; - struct causelist causes; - char *cause; - struct window_pane *wp; - int retval; - u_int i; + struct args *args = self->args; + struct causelist causes; + char *cause; + struct window_pane *wp; + int retval; + u_int i; ARRAY_INIT(&causes); - retval = load_cfg(data->path, ctx, &causes); + retval = load_cfg(args->argv[0], ctx, &causes); if (ARRAY_EMPTY(&causes)) return (retval); @@ -121,27 +72,3 @@ cmd_source_file_exec(struct cmd *self, struct cmd_ctx *ctx) return (retval); } - -void -cmd_source_file_free(struct cmd *self) -{ - struct cmd_source_file_data *data = self->data; - - if (data->path != NULL) - xfree(data->path); - xfree(data); -} - -size_t -cmd_source_file_print(struct cmd *self, char *buf, size_t len) -{ - struct cmd_source_file_data *data = self->data; - size_t off = 0; - - off += xsnprintf(buf, len, "%s", self->entry->name); - if (data == NULL) - return (off); - if (off < len && data->path != NULL) - off += cmd_prarg(buf + off, len - off, " ", data->path); - return (off); -} |