mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-27 02:23:15 +01:00
When using source-file, run the commands in the context of the source-file
command rather than with no context. This makes things like attach work from a file.
This commit is contained in:
parent
43cd40e87a
commit
c7394ac4e0
15
cfg.c
15
cfg.c
@ -51,7 +51,7 @@ cfg_error(unused struct cmd_ctx *ctx, const char *fmt, ...)
|
||||
}
|
||||
|
||||
int
|
||||
load_cfg(const char *path, char **cause)
|
||||
load_cfg(const char *path, struct cmd_ctx *ctxin, char **cause)
|
||||
{
|
||||
FILE *f;
|
||||
u_int n;
|
||||
@ -87,15 +87,20 @@ load_cfg(const char *path, char **cause)
|
||||
continue;
|
||||
cfg_cause = NULL;
|
||||
|
||||
ctx.msgdata = NULL;
|
||||
ctx.curclient = NULL;
|
||||
if (ctxin == NULL) {
|
||||
ctx.msgdata = NULL;
|
||||
ctx.curclient = NULL;
|
||||
ctx.cmdclient = NULL;
|
||||
} else {
|
||||
ctx.msgdata = ctxin->msgdata;
|
||||
ctx.curclient = ctxin->curclient;
|
||||
ctx.cmdclient = ctxin->cmdclient;
|
||||
}
|
||||
|
||||
ctx.error = cfg_error;
|
||||
ctx.print = cfg_print;
|
||||
ctx.info = cfg_print;
|
||||
|
||||
ctx.cmdclient = NULL;
|
||||
|
||||
cfg_cause = NULL;
|
||||
cmd_list_exec(cmdlist, &ctx);
|
||||
cmd_list_free(cmdlist);
|
||||
|
@ -90,7 +90,7 @@ cmd_source_file_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
struct cmd_source_file_data *data = self->data;
|
||||
char *cause;
|
||||
|
||||
if (load_cfg(data->path, &cause) != 0) {
|
||||
if (load_cfg(data->path, ctx, &cause) != 0) {
|
||||
ctx->error(ctx, "%s", cause);
|
||||
xfree(cause);
|
||||
return (-1);
|
||||
|
4
server.c
4
server.c
@ -188,9 +188,9 @@ server_start(char *path)
|
||||
&cause, "%s: %s", strerror(errno), SYSTEM_CFG);
|
||||
goto error;
|
||||
}
|
||||
} else if (load_cfg(SYSTEM_CFG, &cause) != 0)
|
||||
} else if (load_cfg(SYSTEM_CFG, NULL, &cause) != 0)
|
||||
goto error;
|
||||
if (cfg_file != NULL && load_cfg(cfg_file, &cause) != 0)
|
||||
if (cfg_file != NULL && load_cfg(cfg_file, NULL, &cause) != 0)
|
||||
goto error;
|
||||
|
||||
exit(server_main(srv_fd));
|
||||
|
Loading…
Reference in New Issue
Block a user