From 571935c823120231c02487d5492a68100909078d Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 27 Jun 2008 17:10:01 +0000 Subject: [PATCH] Handle bad session/client properly. --- CHANGES | 6 +++++- TODO | 6 +++--- cmd.c | 32 +++++++++++++++++--------------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/CHANGES b/CHANGES index 7d2cef9e..9a1e7c8d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +27 June 2008 + +* Handle nonexistent session or client to -t properly. + 25 June 2008 * select-prompt command to allow a window to be selected at a prompt. Only @@ -573,4 +577,4 @@ (including mutt, emacs). No status bar yet and no key remapping or other customisation. -$Id: CHANGES,v 1.144 2008-06-25 20:43:13 nicm Exp $ +$Id: CHANGES,v 1.145 2008-06-27 17:10:01 nicm Exp $ diff --git a/TODO b/TODO index 8b492cf8..db95e6c2 100644 --- a/TODO +++ b/TODO @@ -53,8 +53,7 @@ - document buffer stuff - document next/prev word - fix prompt scrolling when line exceeds space **** -- commands: - save-buffer -b number filename +- commands: save-buffer -b number filename load-buffer -b number filename copy-buffer -s src-session -t dst-session -a src-index -b dst-index (from other session) @@ -74,4 +73,5 @@ - next prev word etc in command prompt - split keys in command prompt/scroll mode/copy mode into vi and emacs and have a "edit-mode" option select which keymap - +- zombie windows: don't disappear when the command dies. new command + respawn-window [command] to restart; ommitting commands uses previous diff --git a/cmd.c b/cmd.c index 9ae9848a..0fa4808c 100644 --- a/cmd.c +++ b/cmd.c @@ -1,4 +1,4 @@ -/* $Id: cmd.c,v 1.58 2008-06-25 20:43:14 nicm Exp $ */ +/* $Id: cmd.c,v 1.59 2008-06-27 17:10:01 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -338,13 +338,15 @@ cmd_find_client(struct cmd_ctx *ctx, const char *arg) { struct client *c; - if ((c = arg_parse_client(arg)) == NULL) + if (arg == NULL) c = ctx->curclient; - if (c == NULL) { - if (arg != NULL) - ctx->error(ctx, "client not found: %s", arg); - else - ctx->error(ctx, "no client found"); + else { + if ((c = arg_parse_client(arg)) == NULL) { + if (arg != NULL) + ctx->error(ctx, "client not found: %s", arg); + else + ctx->error(ctx, "no client found"); + } } return (c); } @@ -354,15 +356,15 @@ cmd_find_session(struct cmd_ctx *ctx, const char *arg) { struct session *s; - if ((s = arg_parse_session(arg)) == NULL) - s = ctx->cursession; - if (s == NULL) + if (arg == NULL) s = cmd_current_session(ctx); - if (s == NULL) { - if (arg != NULL) - ctx->error(ctx, "session not found: %s", arg); - else - ctx->error(ctx, "no session found"); + else { + if ((s = arg_parse_session(arg)) == NULL) { + if (arg != NULL) + ctx->error(ctx, "session not found: %s", arg); + else + ctx->error(ctx, "no session found"); + } } return (s); }