=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tmux.h,v retrieving revision 1.594 retrieving revision 1.595 diff -u -r1.594 -r1.595 --- src/usr.bin/tmux/tmux.h 2015/12/07 09:47:41 1.594 +++ src/usr.bin/tmux/tmux.h 2015/12/08 01:10:31 1.595 @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.594 2015/12/07 09:47:41 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.595 2015/12/08 01:10:31 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -691,6 +691,14 @@ struct grid_line *linedata; }; +/* Hook data structures. */ +struct hook { + const char *name; + struct cmd_q *cmdq; + struct cmd_list *cmdlist; + RB_ENTRY(hook) entry; +}; + /* Option data structures. */ struct options_entry { char *name; @@ -1011,6 +1019,7 @@ struct winlink_stack lastw; struct winlinks windows; + struct hooks *hooks; struct options *options; #define SESSION_UNATTACHED 0x1 /* not attached to any clients */ @@ -1427,10 +1436,11 @@ #define CMD_BUFFER_USAGE "[-b buffer-name]" /* tmux.c */ -extern struct options *global_options; -extern struct options *global_s_options; -extern struct options *global_w_options; -extern struct environ *global_environ; +extern struct hooks *global_hooks; +extern struct options *global_options; +extern struct options *global_s_options; +extern struct options *global_w_options; +extern struct environ *global_environ; extern struct timeval start_time; extern const char *socket_path; const char *getshell(void); @@ -1495,6 +1505,18 @@ void format_defaults_paste_buffer(struct format_tree *, struct paste_buffer *); +/* hooks.c */ +struct hook; +struct hooks *hooks_create(struct hooks *); +void hooks_free(struct hooks *); +struct hook *hooks_first(struct hooks *); +struct hook *hooks_next(struct hook *); +void hooks_add(struct hooks *, const char *, struct cmd_list *); +void hooks_copy(struct hooks *, struct hooks *); +void hooks_remove(struct hooks *, struct hook *); +struct hook *hooks_find(struct hooks *, const char *); +void hooks_run(struct hooks *, const char *, struct client *); + /* mode-key.c */ extern const struct mode_key_table mode_key_tables[]; extern struct mode_key_tree mode_key_tree_vi_edit; @@ -1782,6 +1804,7 @@ int server_client_open(struct client *, char **); void server_client_unref(struct client *); void server_client_lost(struct client *); +void server_client_detach(struct client *, enum msgtype); void server_client_loop(void); void server_client_push_stdout(struct client *); void server_client_push_stderr(struct client *);