mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-29 19:43:41 +01:00
Use a utility function for common code to show errors in config file,
from Thomas Adam.
This commit is contained in:
parent
c68efec6c0
commit
827b311c81
22
cfg.c
22
cfg.c
@ -173,3 +173,25 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
|
|||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
show_cfg_causes(struct session *s)
|
||||||
|
{
|
||||||
|
struct window_pane *wp;
|
||||||
|
char *cause;
|
||||||
|
u_int i;
|
||||||
|
|
||||||
|
if (s == NULL || ARRAY_EMPTY(&cfg_causes))
|
||||||
|
return;
|
||||||
|
|
||||||
|
wp = s->curw->window->active;
|
||||||
|
|
||||||
|
window_pane_set_mode(wp, &window_copy_mode);
|
||||||
|
window_copy_init_for_output(wp);
|
||||||
|
for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {
|
||||||
|
cause = ARRAY_ITEM(&cfg_causes, i);
|
||||||
|
window_copy_add(wp, "%s", cause);
|
||||||
|
free(cause);
|
||||||
|
}
|
||||||
|
ARRAY_FREE(&cfg_causes);
|
||||||
|
}
|
||||||
|
@ -58,14 +58,13 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
struct args *args = self->args;
|
struct args *args = self->args;
|
||||||
struct session *s, *old_s, *groupwith;
|
struct session *s, *old_s, *groupwith;
|
||||||
struct window *w;
|
struct window *w;
|
||||||
struct window_pane *wp;
|
|
||||||
struct environ env;
|
struct environ env;
|
||||||
struct termios tio, *tiop;
|
struct termios tio, *tiop;
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
const char *newname, *target, *update, *cwd, *errstr;
|
const char *newname, *target, *update, *cwd, *errstr;
|
||||||
char *cmd, *cause;
|
char *cmd, *cause;
|
||||||
int detached, idx;
|
int detached, idx;
|
||||||
u_int sx, sy, i;
|
u_int sx, sy;
|
||||||
|
|
||||||
newname = args_get(args, 's');
|
newname = args_get(args, 's');
|
||||||
if (newname != NULL) {
|
if (newname != NULL) {
|
||||||
@ -257,17 +256,8 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
* If there are still configuration file errors to display, put the new
|
* If there are still configuration file errors to display, put the new
|
||||||
* session's current window into more mode and display them now.
|
* session's current window into more mode and display them now.
|
||||||
*/
|
*/
|
||||||
if (cfg_finished && !ARRAY_EMPTY(&cfg_causes)) {
|
if (cfg_finished)
|
||||||
wp = s->curw->window->active;
|
show_cfg_causes(s);
|
||||||
window_pane_set_mode(wp, &window_copy_mode);
|
|
||||||
window_copy_init_for_output(wp);
|
|
||||||
for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {
|
|
||||||
cause = ARRAY_ITEM(&cfg_causes, i);
|
|
||||||
window_copy_add(wp, "%s", cause);
|
|
||||||
free(cause);
|
|
||||||
}
|
|
||||||
ARRAY_FREE(&cfg_causes);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (detached ? CMD_RETURN_NORMAL : CMD_RETURN_ATTACH);
|
return (detached ? CMD_RETURN_NORMAL : CMD_RETURN_ATTACH);
|
||||||
}
|
}
|
||||||
|
21
server.c
21
server.c
@ -106,11 +106,8 @@ server_create_socket(void)
|
|||||||
int
|
int
|
||||||
server_start(int lockfd, char *lockfile)
|
server_start(int lockfd, char *lockfile)
|
||||||
{
|
{
|
||||||
struct window_pane *wp;
|
int pair[2];
|
||||||
int pair[2];
|
struct timeval tv;
|
||||||
char *cause;
|
|
||||||
struct timeval tv;
|
|
||||||
u_int i;
|
|
||||||
|
|
||||||
/* The first client is special and gets a socketpair; create it. */
|
/* The first client is special and gets a socketpair; create it. */
|
||||||
if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)
|
if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)
|
||||||
@ -178,17 +175,9 @@ server_start(int lockfd, char *lockfile)
|
|||||||
* If there is a session already, put the current window and pane into
|
* If there is a session already, put the current window and pane into
|
||||||
* more mode.
|
* more mode.
|
||||||
*/
|
*/
|
||||||
if (!RB_EMPTY(&sessions) && !ARRAY_EMPTY(&cfg_causes)) {
|
if (!RB_EMPTY(&sessions) && !ARRAY_EMPTY(&cfg_causes))
|
||||||
wp = RB_MIN(sessions, &sessions)->curw->window->active;
|
show_cfg_causes(RB_MIN(sessions, &sessions));
|
||||||
window_pane_set_mode(wp, &window_copy_mode);
|
|
||||||
window_copy_init_for_output(wp);
|
|
||||||
for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {
|
|
||||||
cause = ARRAY_ITEM(&cfg_causes, i);
|
|
||||||
window_copy_add(wp, "%s", cause);
|
|
||||||
free(cause);
|
|
||||||
}
|
|
||||||
ARRAY_FREE(&cfg_causes);
|
|
||||||
}
|
|
||||||
cfg_finished = 1;
|
cfg_finished = 1;
|
||||||
|
|
||||||
server_add_accept(0);
|
server_add_accept(0);
|
||||||
|
1
tmux.h
1
tmux.h
@ -1520,6 +1520,7 @@ extern int cfg_finished;
|
|||||||
extern struct causelist cfg_causes;
|
extern struct causelist cfg_causes;
|
||||||
void printflike2 cfg_add_cause(struct causelist *, const char *, ...);
|
void printflike2 cfg_add_cause(struct causelist *, const char *, ...);
|
||||||
int load_cfg(const char *, struct cmd_ctx *, struct causelist *);
|
int load_cfg(const char *, struct cmd_ctx *, struct causelist *);
|
||||||
|
void show_cfg_causes(struct session *);
|
||||||
|
|
||||||
/* format.c */
|
/* format.c */
|
||||||
int format_cmp(struct format_entry *, struct format_entry *);
|
int format_cmp(struct format_entry *, struct format_entry *);
|
||||||
|
Loading…
Reference in New Issue
Block a user