version 1.7, 2009/09/07 21:01:50 |
version 1.8, 2009/09/16 12:35:04 |
|
|
environ_init(&s->environ); |
environ_init(&s->environ); |
if (env != NULL) |
if (env != NULL) |
environ_copy(env, &s->environ); |
environ_copy(env, &s->environ); |
memcpy(&s->tio, tio, sizeof s->tio); |
|
|
|
|
s->tio = NULL; |
|
if (tio != NULL) { |
|
s->tio = xmalloc(sizeof *s->tio); |
|
memcpy(s->tio, tio, sizeof *s->tio); |
|
} |
|
|
s->sx = sx; |
s->sx = sx; |
s->sy = sy; |
s->sy = sy; |
|
|
|
|
while (!ARRAY_EMPTY(&sessions) && ARRAY_LAST(&sessions) == NULL) |
while (!ARRAY_EMPTY(&sessions) && ARRAY_LAST(&sessions) == NULL) |
ARRAY_TRUNC(&sessions, 1); |
ARRAY_TRUNC(&sessions, 1); |
|
|
|
if (s->tio != NULL) |
|
xfree(s->tio); |
|
|
session_alert_cancel(s, NULL); |
session_alert_cancel(s, NULL); |
environ_free(&s->environ); |
environ_free(&s->environ); |
options_free(&s->options); |
options_free(&s->options); |
|
|
|
|
hlimit = options_get_number(&s->options, "history-limit"); |
hlimit = options_get_number(&s->options, "history-limit"); |
w = window_create( |
w = window_create( |
name, cmd, shell, cwd, &env, &s->tio, s->sx, s->sy, hlimit, cause); |
name, cmd, shell, cwd, &env, s->tio, s->sx, s->sy, hlimit, cause); |
if (w == NULL) { |
if (w == NULL) { |
environ_free(&env); |
environ_free(&env); |
return (NULL); |
return (NULL); |