=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server.c,v retrieving revision 1.81 retrieving revision 1.82 diff -c -r1.81 -r1.82 *** src/usr.bin/tmux/server.c 2010/01/30 19:05:18 1.81 --- src/usr.bin/tmux/server.c 2010/02/06 17:15:33 1.82 *************** *** 1,4 **** ! /* $OpenBSD: server.c,v 1.81 2010/01/30 19:05:18 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server.c,v 1.82 2010/02/06 17:15:33 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 113,122 **** int server_start(char *path) { ! struct client *c; ! int pair[2]; ! char *cause, rpathbuf[MAXPATHLEN]; ! struct timeval tv; /* The first client is special and gets a socketpair; create it. */ if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0) --- 113,123 ---- int server_start(char *path) { ! struct window_pane *wp; ! int pair[2], retval; ! char rpathbuf[MAXPATHLEN]; ! struct timeval tv; ! u_int i; /* The first client is special and gets a socketpair; create it. */ if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0) *************** *** 166,181 **** server_fd = server_create_socket(); server_client_create(pair[1]); ! if (access(SYSTEM_CFG, R_OK) == 0) { ! if (load_cfg(SYSTEM_CFG, NULL, &cause) != 0) ! goto error; ! } else if (errno != ENOENT) { ! xasprintf(&cause, "%s: %s", strerror(errno), SYSTEM_CFG); ! goto error; } ! if (cfg_file != NULL && load_cfg(cfg_file, NULL, &cause) != 0) ! goto error; event_set(&server_ev_accept, server_fd, EV_READ|EV_PERSIST, server_accept_callback, NULL); event_add(&server_ev_accept, NULL); --- 167,198 ---- server_fd = server_create_socket(); server_client_create(pair[1]); ! retval = 0; ! if (access(SYSTEM_CFG, R_OK) == 0) ! load_cfg(SYSTEM_CFG, NULL, &cfg_ncauses, &cfg_causes); ! else if (errno != ENOENT) { ! cfg_add_cause(&cfg_ncauses, &cfg_causes, ! "%s: %s", strerror(errno), SYSTEM_CFG); } ! if (cfg_file != NULL) ! load_cfg(cfg_file, NULL, &cfg_ncauses, &cfg_causes); + /* + * If there is a session already, put the current window and pane into + * more mode. + */ + if (!ARRAY_EMPTY(&sessions) && cfg_ncauses != 0) { + wp = ARRAY_FIRST(&sessions)->curw->window->active; + window_pane_set_mode(wp, &window_more_mode); + for (i = 0; i < cfg_ncauses; i++) { + window_more_add(wp, "%s", cfg_causes[i]); + xfree(cfg_causes[i]); + } + xfree(cfg_causes); + cfg_ncauses = 0; + } + cfg_finished = 1; + event_set(&server_ev_accept, server_fd, EV_READ|EV_PERSIST, server_accept_callback, NULL); event_add(&server_ev_accept, NULL); *************** *** 188,207 **** server_signal_set(); server_loop(); exit(0); - - error: - /* Write the error and shutdown the server. */ - c = ARRAY_FIRST(&clients); - - server_write_error(c, cause); - server_write_client(c, MSG_EXIT, NULL, 0); - xfree(cause); - - server_shutdown = 1; - - server_signal_set(); - server_loop(); - exit(1); } /* Main server loop. */ --- 205,210 ----