summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2014-10-21 07:11:44 +0100
committerThomas Adam <thomas@xteddy.org>2014-10-21 07:11:44 +0100
commit562af864bd8ab06c416075b5742ce3bbcf6d0610 (patch)
tree2c3900dd6b284aa52441c3fde9dfdf8383d87b54
parentb6aef2490f086f3404f439308bb1746ec5134e9a (diff)
parent0a1a88d63caf3a0e8b4440686e73e1f0f690e03c (diff)
Merge branch 'obsd-master'
Conflicts: Makefile cmd-list-commands.c cmd-suspend-client.c job.c tmux.h xmalloc.c
-rw-r--r--Makefile.am3
-rw-r--r--arguments.c1
-rw-r--r--array.h4
-rw-r--r--client.c13
-rw-r--r--cmd-attach-session.c1
-rw-r--r--cmd-bind-key.c1
-rw-r--r--cmd-break-pane.c3
-rw-r--r--cmd-capture-pane.c3
-rw-r--r--cmd-choose-buffer.c4
-rw-r--r--cmd-choose-client.c7
-rw-r--r--cmd-choose-tree.c12
-rw-r--r--cmd-clear-history.c1
-rw-r--r--cmd-clock-mode.c1
-rw-r--r--cmd-command-prompt.c30
-rw-r--r--cmd-confirm-before.c22
-rw-r--r--cmd-copy-mode.c10
-rw-r--r--cmd-delete-buffer.c1
-rw-r--r--cmd-detach-client.c18
-rw-r--r--cmd-display-message.c6
-rw-r--r--cmd-display-panes.c1
-rw-r--r--cmd-find-window.c6
-rw-r--r--cmd-has-session.c1
-rw-r--r--cmd-if-shell.c1
-rw-r--r--cmd-join-pane.c17
-rw-r--r--cmd-kill-pane.c1
-rw-r--r--cmd-kill-server.c2
-rw-r--r--cmd-kill-session.c1
-rw-r--r--cmd-kill-window.c1
-rw-r--r--cmd-link-window.c1
-rw-r--r--cmd-list-buffers.c4
-rw-r--r--cmd-list-clients.c6
-rw-r--r--cmd-list-commands.c54
-rw-r--r--cmd-list-keys.c33
-rw-r--r--cmd-list-panes.c1
-rw-r--r--cmd-list-sessions.c9
-rw-r--r--cmd-list-windows.c17
-rw-r--r--cmd-load-buffer.c1
-rw-r--r--cmd-lock-server.c3
-rw-r--r--cmd-move-window.c1
-rw-r--r--cmd-new-session.c17
-rw-r--r--cmd-new-window.c3
-rw-r--r--cmd-paste-buffer.c1
-rw-r--r--cmd-pipe-pane.c1
-rw-r--r--cmd-queue.c4
-rw-r--r--cmd-refresh-client.c1
-rw-r--r--cmd-rename-session.c1
-rw-r--r--cmd-rename-window.c1
-rw-r--r--cmd-resize-pane.c48
-rw-r--r--cmd-respawn-pane.c1
-rw-r--r--cmd-respawn-window.c1
-rw-r--r--cmd-rotate-window.c10
-rw-r--r--cmd-run-shell.c1
-rw-r--r--cmd-save-buffer.c4
-rw-r--r--cmd-select-layout.c29
-rw-r--r--cmd-select-pane.c19
-rw-r--r--cmd-select-window.c19
-rw-r--r--cmd-send-keys.c2
-rw-r--r--cmd-set-buffer.c3
-rw-r--r--cmd-set-environment.c1
-rw-r--r--cmd-set-option.c2
-rw-r--r--cmd-show-environment.c1
-rw-r--r--cmd-show-messages.c2
-rw-r--r--cmd-show-options.c2
-rw-r--r--cmd-source-file.c1
-rw-r--r--cmd-split-window.c12
-rw-r--r--cmd-string.c19
-rw-r--r--cmd-suspend-client.c55
-rw-r--r--cmd-swap-pane.c12
-rw-r--r--cmd-swap-window.c1
-rw-r--r--cmd-switch-client.c19
-rw-r--r--cmd-unbind-key.c1
-rw-r--r--cmd-unlink-window.c1
-rw-r--r--cmd-wait-for.c1
-rw-r--r--cmd.c99
-rw-r--r--control.c2
-rw-r--r--format.c9
-rw-r--r--grid.c15
-rw-r--r--input.c4
-rw-r--r--job.c1
-rw-r--r--key-bindings.c180
-rw-r--r--log.c6
-rw-r--r--options.c2
-rw-r--r--osdep-cygwin.c2
-rw-r--r--osdep-linux.c3
-rw-r--r--paste.c2
-rw-r--r--screen-write.c28
-rw-r--r--screen.c10
-rw-r--r--server-client.c1
-rw-r--r--server-fn.c2
-rw-r--r--signal.c2
-rw-r--r--status.c15
-rw-r--r--style.c2
-rw-r--r--tmux.117
-rw-r--r--tmux.c7
-rw-r--r--tmux.h126
-rw-r--r--tty-acs.c2
-rw-r--r--utf8.c8
-rw-r--r--window-choose.c2
-rw-r--r--window-copy.c18
-rw-r--r--xmalloc.c26
100 files changed, 432 insertions, 757 deletions
diff --git a/Makefile.am b/Makefile.am
index 04107abd..81ef1b25 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -82,7 +82,6 @@ dist_tmux_SOURCES = \
cmd-display-message.c \
cmd-display-panes.c \
cmd-find-window.c \
- cmd-has-session.c \
cmd-if-shell.c \
cmd-join-pane.c \
cmd-kill-pane.c \
@@ -92,7 +91,6 @@ dist_tmux_SOURCES = \
cmd-link-window.c \
cmd-list-buffers.c \
cmd-list-clients.c \
- cmd-list-commands.c \
cmd-list-keys.c \
cmd-list-panes.c \
cmd-list-sessions.c \
@@ -128,7 +126,6 @@ dist_tmux_SOURCES = \
cmd-source-file.c \
cmd-split-window.c \
cmd-string.c \
- cmd-suspend-client.c \
cmd-swap-pane.c \
cmd-swap-window.c \
cmd-switch-client.c \
diff --git a/arguments.c b/arguments.c
index fd656b14..98a4a06c 100644
--- a/arguments.c
+++ b/arguments.c
@@ -18,6 +18,7 @@
#include <sys/types.h>
+#include <getopt.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
diff --git a/array.h b/array.h
index 11e963bc..2c70c310 100644
--- a/array.h
+++ b/array.h
@@ -39,10 +39,10 @@
fatalx("size too big"); \
if ((a)->space == 0) { \
(a)->space = ARRAY_INITIALSPACE(a); \
- (a)->list = xrealloc((a)->list, 1, (a)->space); \
+ (a)->list = xrealloc((a)->list, (a)->space); \
} \
while ((a)->space <= ((a)->num + (n)) * ARRAY_ITEMSIZE(a)) { \
- (a)->list = xrealloc((a)->list, 2, (a)->space); \
+ (a)->list = xreallocarray((a)->list, 2, (a)->space); \
(a)->space *= 2; \
} \
} while (0)
diff --git a/client.c b/client.c
index 6ab53e4f..48cce926 100644
--- a/client.c
+++ b/client.c
@@ -26,6 +26,7 @@
#include <errno.h>
#include <event.h>
#include <fcntl.h>
+#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -437,15 +438,11 @@ client_signal(int sig, unused short events, unused void *data)
struct sigaction sigact;
int status;
- if (!client_attached) {
- switch (sig) {
- case SIGCHLD:
- waitpid(WAIT_ANY, &status, WNOHANG);
- break;
- case SIGTERM:
+ if (sig == SIGCHLD)
+ waitpid(WAIT_ANY, &status, WNOHANG);
+ else if (!client_attached) {
+ if (sig == SIGTERM)
event_loopexit(NULL);
- break;
- }
} else {
switch (sig) {
case SIGHUP:
diff --git a/cmd-attach-session.c b/cmd-attach-session.c
index 17c932e6..c2bede2e 100644
--- a/cmd-attach-session.c
+++ b/cmd-attach-session.c
@@ -37,7 +37,6 @@ const struct cmd_entry cmd_attach_session_entry = {
"c:drt:", 0, 0,
"[-dr] [-c working-directory] " CMD_TARGET_SESSION_USAGE,
CMD_CANTNEST|CMD_STARTSERVER,
- NULL,
cmd_attach_session_exec
};
diff --git a/cmd-bind-key.c b/cmd-bind-key.c
index 7e7975f7..8ac2b001 100644
--- a/cmd-bind-key.c
+++ b/cmd-bind-key.c
@@ -36,7 +36,6 @@ const struct cmd_entry cmd_bind_key_entry = {
"cnrt:", 1, -1,
"[-cnr] [-t mode-table] key command [arguments]",
0,
- NULL,
cmd_bind_key_exec
};
diff --git a/cmd-break-pane.c b/cmd-break-pane.c
index fe7891e9..9a4b5cb6 100644
--- a/cmd-break-pane.c
+++ b/cmd-break-pane.c
@@ -26,6 +26,8 @@
* Break pane off into a window.
*/
+#define BREAK_PANE_TEMPLATE "#{session_name}:#{window_index}.#{pane_index}"
+
enum cmd_retval cmd_break_pane_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_break_pane_entry = {
@@ -33,7 +35,6 @@ const struct cmd_entry cmd_break_pane_entry = {
"dPF:t:", 0, 0,
"[-dP] [-F format] " CMD_TARGET_PANE_USAGE,
0,
- NULL,
cmd_break_pane_exec
};
diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
index 0efe1cd0..776737e1 100644
--- a/cmd-capture-pane.c
+++ b/cmd-capture-pane.c
@@ -41,14 +41,13 @@ const struct cmd_entry cmd_capture_pane_entry = {
"[-aCeJpPq] " CMD_BUFFER_USAGE " [-E end-line] [-S start-line]"
CMD_TARGET_PANE_USAGE,
0,
- NULL,
cmd_capture_pane_exec
};
char *
cmd_capture_pane_append(char *buf, size_t *len, char *line, size_t linelen)
{
- buf = xrealloc(buf, 1, *len + linelen + 1);
+ buf = xrealloc(buf, *len + linelen + 1);
memcpy(buf + *len, line, linelen);
*len += linelen;
return (buf);
diff --git a/cmd-choose-buffer.c b/cmd-choose-buffer.c
index 6b146fad..2bc3db64 100644
--- a/cmd-choose-buffer.c
+++ b/cmd-choose-buffer.c
@@ -27,6 +27,9 @@
* Enter choice mode to choose a buffer.
*/
+#define CHOOSE_BUFFER_TEMPLATE \
+ "#{buffer_name}: #{buffer_size} bytes: #{buffer_sample}"
+
enum cmd_retval cmd_choose_buffer_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_choose_buffer_entry = {
@@ -34,7 +37,6 @@ const struct cmd_entry cmd_choose_buffer_entry = {
"F:t:", 0, 1,
CMD_TARGET_WINDOW_USAGE " [-F format] [template]",
0,
- NULL,
cmd_choose_buffer_exec
};
diff --git a/cmd-choose-client.c b/cmd-choose-client.c
index 93671987..827e08d6 100644
--- a/cmd-choose-client.c
+++ b/cmd-choose-client.c
@@ -27,6 +27,12 @@
* Enter choice mode to choose a client.
*/
+#define CHOOSE_CLIENT_TEMPLATE \
+ "#{client_tty}: #{session_name} " \
+ "[#{client_width}x#{client_height} #{client_termname}]" \
+ "#{?client_utf8, (utf8),}#{?client_readonly, (ro),} " \
+ "(last used #{client_activity_string})"
+
enum cmd_retval cmd_choose_client_exec(struct cmd *, struct cmd_q *);
void cmd_choose_client_callback(struct window_choose_data *);
@@ -36,7 +42,6 @@ const struct cmd_entry cmd_choose_client_entry = {
"F:t:", 0, 1,
CMD_TARGET_WINDOW_USAGE " [-F format] [template]",
0,
- NULL,
cmd_choose_client_exec
};
diff --git a/cmd-choose-tree.c b/cmd-choose-tree.c
index be3bd69a..9349d765 100644
--- a/cmd-choose-tree.c
+++ b/cmd-choose-tree.c
@@ -32,6 +32,15 @@
* Enter choice mode to choose a session and/or window.
*/
+#define CHOOSE_TREE_SESSION_TEMPLATE \
+ "#{session_name}: #{session_windows} windows" \
+ "#{?session_grouped, (group ,}" \
+ "#{session_group}#{?session_grouped,),}" \
+ "#{?session_attached, (attached),}"
+#define CHOOSE_TREE_WINDOW_TEMPLATE \
+ "#{window_index}: #{window_name}#{window_flags} " \
+ "\"#{pane_title}\""
+
enum cmd_retval cmd_choose_tree_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_choose_tree_entry = {
@@ -40,7 +49,6 @@ const struct cmd_entry cmd_choose_tree_entry = {
"[-suw] [-b session-template] [-c window template] [-S format] " \
"[-W format] " CMD_TARGET_WINDOW_USAGE,
0,
- NULL,
cmd_choose_tree_exec
};
@@ -49,7 +57,6 @@ const struct cmd_entry cmd_choose_session_entry = {
"F:t:", 0, 1,
CMD_TARGET_WINDOW_USAGE " [-F format] [template]",
0,
- NULL,
cmd_choose_tree_exec
};
@@ -58,7 +65,6 @@ const struct cmd_entry cmd_choose_window_entry = {
"F:t:", 0, 1,
CMD_TARGET_WINDOW_USAGE "[-F format] [template]",
0,
- NULL,
cmd_choose_tree_exec
};
diff --git a/cmd-clear-history.c b/cmd-clear-history.c
index cce3ea18..225a174f 100644
--- a/cmd-clear-history.c
+++ b/cmd-clear-history.c
@@ -31,7 +31,6 @@ const struct cmd_entry cmd_clear_history_entry = {
"t:", 0, 0,
CMD_TARGET_PANE_USAGE,
0,
- NULL,
cmd_clear_history_exec
};
diff --git a/cmd-clock-mode.c b/cmd-clock-mode.c
index 50e4ab8b..35bc14da 100644
--- a/cmd-clock-mode.c
+++ b/cmd-clock-mode.c
@@ -31,7 +31,6 @@ const struct cmd_entry cmd_clock_mode_entry = {
"t:", 0, 0,
CMD_TARGET_PANE_USAGE,
0,
- NULL,
cmd_clock_mode_exec
};
diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c
index 759d578b..1f43169d 100644
--- a/cmd-command-prompt.c
+++ b/cmd-command-prompt.c
@@ -29,7 +29,6 @@
* Prompt for command in client.
*/
-void cmd_command_prompt_key_binding(struct cmd *, int);
enum cmd_retval cmd_command_prompt_exec(struct cmd *, struct cmd_q *);
int cmd_command_prompt_callback(void *, const char *);
@@ -40,7 +39,6 @@ const struct cmd_entry cmd_command_prompt_entry = {
"I:p:t:", 0, 1,
"[-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE " [template]",
0,
- cmd_command_prompt_key_binding,
cmd_command_prompt_exec
};
@@ -54,34 +52,6 @@ struct cmd_command_prompt_cdata {
int idx;
};
-void
-cmd_command_prompt_key_binding(struct cmd *self, int key)
-{
- switch (key) {
- case '$':
- self->args = args_create(1, "rename-session '%%'");
- args_set(self->args, 'I', "#S");
- break;
- case ',':
- self->args = args_create(1, "rename-window '%%'");
- args_set(self->args, 'I', "#W");
- break;
- case '.':
- self->args = args_create(1, "move-window -t '%%'");
- break;
- case 'f':
- self->args = args_create(1, "find-window '%%'");
- break;
- case '\'':
- self->args = args_create(1, "select-window -t ':%%'");
- args_set(self->args, 'p', "index");
- break;
- default:
- self->args = args_create(0);
- break;
- }
-}
-
enum cmd_retval
cmd_command_prompt_exec(struct cmd *self, struct cmd_q *cmdq)
{
diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c
index 9266721f..4b8d0421 100644
--- a/cmd-confirm-before.c
+++ b/cmd-confirm-before.c
@@ -16,6 +16,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <sys/types.h>
+
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
@@ -26,7 +28,6 @@
* Asks for confirmation before executing a command.
*/
-void cmd_confirm_before_key_binding(struct cmd *, int);
enum cmd_retval cmd_confirm_before_exec(struct cmd *, struct cmd_q *);
int cmd_confirm_before_callback(void *, const char *);
@@ -37,7 +38,6 @@ const struct cmd_entry cmd_confirm_before_entry = {
"p:t:", 1, 1,
"[-p prompt] " CMD_TARGET_CLIENT_USAGE " command",
0,
- cmd_confirm_before_key_binding,
cmd_confirm_before_exec
};
@@ -46,24 +46,6 @@ struct cmd_confirm_before_data {
struct client *client;
};
-void
-cmd_confirm_before_key_binding(struct cmd *self, int key)
-{
- switch (key) {
- case '&':
- self->args = args_create(1, "kill-window");
- args_set(se