mirror of
https://github.com/tmux/tmux.git
synced 2024-12-12 17:38:48 +00:00
Trim.
This commit is contained in:
parent
df2b3bcf44
commit
62457bce0b
34
CHANGES
34
CHANGES
@ -90,7 +90,7 @@
|
||||
A window may be restarted with the respawn-window command:
|
||||
|
||||
respawn-window [-k] [command]
|
||||
|
||||
|
||||
If -k is given, any existing process running in the window is killed;
|
||||
if command is omitted, the same command as when the window was first
|
||||
created is used.
|
||||
@ -149,7 +149,7 @@
|
||||
* buffer-limit option to set maximum size of buffer stack. Default is 9.
|
||||
* Initial buffer improvements. Each session has a stack of buffers and each
|
||||
buffer command takes a -b option to manipulate items on the stack. If -b
|
||||
is omitted, the top entry is used. The following commands are currently
|
||||
is omitted, the top entry is used. The following commands are currently
|
||||
available:
|
||||
|
||||
set-buffer [-b index] [-t target-session] string
|
||||
@ -174,10 +174,10 @@
|
||||
18 June 2008
|
||||
|
||||
* New option, set-titles. On by default, this attempts to set the window title
|
||||
using the \e]2;...\007 xterm code.
|
||||
|
||||
using the \e]2;...\007 xterm code.
|
||||
|
||||
Note that elinks requires the STY environment variable (used by screen) to be
|
||||
set before it will set the window title. So, if you want window titles set by
|
||||
set before it will set the window title. So, if you want window titles set by
|
||||
elinks, set STY before running it (any value will do). I can't do this for all
|
||||
windows since setting it to an invalid value breaks screen.
|
||||
* Show arrows at either end of status line when scrolled if more windows
|
||||
@ -236,8 +236,8 @@
|
||||
|
||||
* Completely reorganise command parsing. Much more common code in cmd-generic.c
|
||||
and a new way of specifying windows, clients or sessions. Now, most commands
|
||||
take a -t argument, which specifies a client, a session, or a window target.
|
||||
Clients and sessions are given alone (sessions are fnmatch(3)d and
|
||||
take a -t argument, which specifies a client, a session, or a window target.
|
||||
Clients and sessions are given alone (sessions are fnmatch(3)d and
|
||||
clients currently not), windows are give by (client|session):index. For
|
||||
example, if a user is in session "1" window 0 on /dev/ttypi, these should all
|
||||
be equivalent:
|
||||
@ -261,7 +261,7 @@
|
||||
|
||||
is annoying. But then using non-flagged arguments would mean renaming the
|
||||
current window would need to be something like:
|
||||
|
||||
|
||||
tmux renamew : newname
|
||||
|
||||
It might be better not to try and be so consistent; comments to the usual
|
||||
@ -300,7 +300,7 @@
|
||||
accepts -c as well.
|
||||
* -s to specify session name now supports fnmatch(3) wildcards; if multiple
|
||||
sessions are found, or if no -s is specified, the most newly created is used.
|
||||
* If no command is specified, assume new-session. As a byproduct, clean up
|
||||
* If no command is specified, assume new-session. As a byproduct, clean up
|
||||
command default values into seperate init functions.
|
||||
* kill-server command.
|
||||
|
||||
@ -459,7 +459,7 @@
|
||||
$ tmux bind q switch 0
|
||||
$ tmux bind w switch 1
|
||||
|
||||
Then you can switch between sessions 0 and 1 with a key :-).
|
||||
Then you can switch between sessions 0 and 1 with a key :-).
|
||||
* (nicm) Accept "-c client-tty" on command line to allow client manipulation
|
||||
commands, and change detach-/refresh-session to detach-/refresh-client (this
|
||||
loses the -a behaviour, but at some point -session versions may return, and
|
||||
@ -468,7 +468,7 @@
|
||||
|
||||
12 November 2007
|
||||
|
||||
* (nicm) If the terminal supports default colours (AX present), force black
|
||||
* (nicm) If the terminal supports default colours (AX present), force black
|
||||
background and white foreground to default. This is useful on transparent
|
||||
*terms for programs which don't do it themselves (like most(1)).
|
||||
* (nicm) Fill in the rest of the man page.
|
||||
@ -600,7 +600,7 @@
|
||||
|
||||
* (nicm) Deleting/inserting lines should follow scrolling region. Fix.
|
||||
* (nicm) Allow creation of detached sessions: "tmux new-session -d".
|
||||
* (nicm) Permit error messages to be passed back for transient clients like
|
||||
* (nicm) Permit error messages to be passed back for transient clients like
|
||||
rename. Also make rename -i work.
|
||||
* (nicm) Pass through bell in any window to current.
|
||||
|
||||
@ -612,11 +612,11 @@
|
||||
- Split key parsing off into a separate file.
|
||||
This is step one towards hopefully allowing a status line. It requires
|
||||
that we output data as if the terminal had one line less than it really does -
|
||||
a serious problem when it comes to things like scrolling. This change
|
||||
a serious problem when it comes to things like scrolling. This change
|
||||
consolidates all the range checking and limiting together which should make
|
||||
it easier.
|
||||
* (mxey) Added window remaming, like "tmux rename [-s session] [-i index] name"
|
||||
|
||||
|
||||
27 September 2007
|
||||
|
||||
* Split "tmux list" into "tmux list-sessions" (ls) and "list-windows" (lsw).
|
||||
@ -636,7 +636,7 @@
|
||||
tmux -s/socket -nabc new
|
||||
|
||||
Becomes:
|
||||
|
||||
|
||||
tmux -S/socket new -sabc
|
||||
|
||||
* Major tidy and split of client/server code.
|
||||
@ -666,7 +666,7 @@
|
||||
|
||||
09 July 2007
|
||||
|
||||
* Initial import to CVS. Basic functions are working, albeit with a couple of
|
||||
* Initial import to CVS. Basic functions are working, albeit with a couple of
|
||||
showstopper memory bugs and many missing features. Detaching, reattaching,
|
||||
creating new sessions, listing sessions work acceptably for using with shells.
|
||||
Simple curses programs (top, systat, tetris) and more complicated ones (mutt,
|
||||
@ -674,4 +674,4 @@
|
||||
(including mutt, emacs). No status bar yet and no key remapping or other
|
||||
customisation.
|
||||
|
||||
$Id: CHANGES,v 1.161 2008-09-25 20:08:51 nicm Exp $
|
||||
$Id: CHANGES,v 1.162 2008-09-26 06:45:25 nicm Exp $
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.41 2008-09-25 23:28:12 nicm Exp $
|
||||
# $Id: GNUmakefile,v 1.42 2008-09-26 06:45:25 nicm Exp $
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
@ -66,7 +66,7 @@ CFLAGS+= -DNO_STRLCPY -DNO_STRTONUM -DNO_TREE_H -DNO_SETPROCTITLE \
|
||||
-DBROKEN_VSNPRINTF -D_SGI_SOURCE -std=c99
|
||||
LDFLAGS+= -L/usr/local/lib
|
||||
LIBS+= -lgen
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(shell uname),SunOS)
|
||||
INCDIRS+= -Icompat -I/usr/local/include/ncurses
|
||||
@ -76,7 +76,7 @@ CFLAGS+= -DNO_STRTONUM -DNO_TREE_H -DNO_PATHS_H -DNO_SETPROCTITLE \
|
||||
-DNO_DAEMON -DNO_FORKPTY -DNO_PROGNAME -DNO_ASPRINTF -DNO_FGETLN
|
||||
LDFLAGS+= -L/usr/local/lib
|
||||
LIBS+= -lsocket -lnsl
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(shell uname),Darwin)
|
||||
INCDIRS+= -Icompat
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-command-prompt.c,v 1.5 2008-07-25 17:20:40 nicm Exp $ */
|
||||
/* $Id: cmd-command-prompt.c,v 1.6 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -82,7 +82,7 @@ cmd_command_prompt_callback(void *data, char *s)
|
||||
}
|
||||
if (cmd == NULL)
|
||||
return;
|
||||
|
||||
|
||||
ctx.msgdata = NULL;
|
||||
ctx.cursession = c->session;
|
||||
ctx.curclient = c;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-delete-buffer.c,v 1.1 2008-06-20 17:31:48 nicm Exp $ */
|
||||
/* $Id: cmd-delete-buffer.c,v 1.2 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -57,7 +57,7 @@ cmd_delete_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
if (paste_free_index(&s->buffers, data->buffer) != 0)
|
||||
ctx->error(ctx, "no buffer %d", data->buffer);
|
||||
}
|
||||
|
||||
|
||||
if (ctx->cmdclient != NULL)
|
||||
server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-list-buffers.c,v 1.3 2008-06-20 19:03:45 nicm Exp $ */
|
||||
/* $Id: cmd-list-buffers.c,v 1.4 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -61,7 +61,7 @@ cmd_list_buffers_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
size = 0;
|
||||
tmp = NULL;
|
||||
}
|
||||
|
||||
|
||||
idx = 0;
|
||||
while ((pb = paste_walk_stack(&s->buffers, &idx)) != NULL) {
|
||||
if (tmp != NULL) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-list-commands.c,v 1.1 2008-06-23 22:24:16 nicm Exp $ */
|
||||
/* $Id: cmd-list-commands.c,v 1.2 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -43,9 +43,9 @@ void
|
||||
cmd_list_commands_exec(unused struct cmd *self, struct cmd_ctx *ctx)
|
||||
{
|
||||
const struct cmd_entry **entryp;
|
||||
|
||||
|
||||
for (entryp = cmd_table; *entryp != NULL; entryp++)
|
||||
ctx->print(ctx, "%s %s", (*entryp)->name, (*entryp)->usage);
|
||||
ctx->print(ctx, "%s %s", (*entryp)->name, (*entryp)->usage);
|
||||
|
||||
if (ctx->cmdclient != NULL)
|
||||
server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-list-windows.c,v 1.24 2008-09-25 20:08:52 nicm Exp $ */
|
||||
/* $Id: cmd-list-windows.c,v 1.25 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -65,7 +65,7 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
size += gd->size[i] * sizeof **gd->data;
|
||||
size += gd->hsize * (sizeof *gd->data);
|
||||
size += gd->hsize * (sizeof *gd->size);
|
||||
|
||||
|
||||
if (w->fd != -1)
|
||||
name = ttyname(w->fd);
|
||||
else
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-send-prefix.c,v 1.18 2008-06-23 07:41:21 nicm Exp $ */
|
||||
/* $Id: cmd-send-prefix.c,v 1.19 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -49,7 +49,7 @@ cmd_send_prefix_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
|
||||
if ((wl = cmd_find_window(ctx, data->target, &s)) == NULL)
|
||||
return;
|
||||
|
||||
|
||||
key = options_get_number(&s->options, "prefix");
|
||||
window_key(wl->window, ctx->curclient, key);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-set-buffer.c,v 1.2 2008-06-20 18:45:35 nicm Exp $ */
|
||||
/* $Id: cmd-set-buffer.c,v 1.3 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -59,7 +59,7 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
if (paste_replace(&s->buffers, data->buffer, data->arg) != 0)
|
||||
ctx->error(ctx, "no buffer %d", data->buffer);
|
||||
}
|
||||
|
||||
|
||||
if (ctx->cmdclient != NULL)
|
||||
server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-set-option.c,v 1.42 2008-09-25 23:28:12 nicm Exp $ */
|
||||
/* $Id: cmd-set-option.c,v 1.43 2008-09-26 06:45:25 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -59,7 +59,7 @@ const char *set_option_bell_action_list[] = {
|
||||
"none", "any", "current", NULL
|
||||
};
|
||||
const char *set_option_mode_keys_list[] = {
|
||||
"emacs", "vi", NULL
|
||||
"emacs", "vi", NULL
|
||||
};
|
||||
const struct set_option_entry set_option_table[NSETOPTION] = {
|
||||
{ "bell-action", SET_OPTION_CHOICE, 0, 0, set_option_bell_action_list },
|
||||
@ -79,7 +79,7 @@ const struct set_option_entry set_option_table[NSETOPTION] = {
|
||||
{ "status-right", SET_OPTION_STRING, 0, 0, NULL },
|
||||
};
|
||||
|
||||
void set_option_string(struct cmd_ctx *,
|
||||
void set_option_string(struct cmd_ctx *,
|
||||
struct options *, const struct set_option_entry *, char *);
|
||||
void set_option_number(struct cmd_ctx *,
|
||||
struct options *, const struct set_option_entry *, char *);
|
||||
@ -240,7 +240,7 @@ set_option_number(struct cmd_ctx *ctx, struct options *oo,
|
||||
}
|
||||
options_set_number(oo, entry->name, number);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
set_option_key(struct cmd_ctx *ctx, struct options *oo,
|
||||
const struct set_option_entry *entry, char *value)
|
||||
@ -257,9 +257,9 @@ set_option_key(struct cmd_ctx *ctx, struct options *oo,
|
||||
return;
|
||||
}
|
||||
options_set_number(oo, entry->name, key);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
set_option_colour(struct cmd_ctx *ctx, struct options *oo,
|
||||
const struct set_option_entry *entry, char *value)
|
||||
@ -270,21 +270,21 @@ set_option_colour(struct cmd_ctx *ctx, struct options *oo,
|
||||
ctx->error(ctx, "empty value");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ((colour = colour_fromstring(value)) > 8) {
|
||||
ctx->error(ctx, "bad colour: %s", value);
|
||||
return;
|
||||
}
|
||||
|
||||
options_set_number(oo, entry->name, colour);
|
||||
|
||||
options_set_number(oo, entry->name, colour);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
set_option_flag(struct cmd_ctx *ctx, struct options *oo,
|
||||
const struct set_option_entry *entry, char *value)
|
||||
{
|
||||
int flag;
|
||||
|
||||
|
||||
if (value == NULL || *value == '\0')
|
||||
flag = !options_get_number(oo, entry->name);
|
||||
else {
|
||||
@ -304,7 +304,7 @@ set_option_flag(struct cmd_ctx *ctx, struct options *oo,
|
||||
|
||||
options_set_number(oo, entry->name, flag);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
set_option_choice(struct cmd_ctx *ctx, struct options *oo,
|
||||
const struct set_option_entry *entry, char *value)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-show-buffer.c,v 1.1 2008-06-20 08:36:20 nicm Exp $ */
|
||||
/* $Id: cmd-show-buffer.c,v 1.2 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -68,7 +68,7 @@ cmd_show_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
|
||||
buf = xmalloc(size + 1);
|
||||
len = 0;
|
||||
|
||||
|
||||
ptr = pb->data;
|
||||
do {
|
||||
buf[len++] = *ptr++;
|
||||
@ -83,7 +83,7 @@ cmd_show_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
buf[len] = '\0';
|
||||
ctx->print(ctx, buf);
|
||||
}
|
||||
|
||||
|
||||
if (ctx->cmdclient != NULL)
|
||||
server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);
|
||||
}
|
||||
|
18
cmd-string.c
18
cmd-string.c
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd-string.c,v 1.6 2008-08-01 20:25:13 nicm Exp $ */
|
||||
/* $Id: cmd-string.c,v 1.7 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -48,10 +48,10 @@ cmd_string_ungetc(unused const char *s, size_t *p)
|
||||
(*p)--;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Parse command string. Returns -1 on error. If returning -1, cause is error
|
||||
* string, or NULL for empty command.
|
||||
*/
|
||||
*/
|
||||
int
|
||||
cmd_string_parse(const char *s, struct cmd **cmd, char **cause)
|
||||
{
|
||||
@ -81,7 +81,7 @@ cmd_string_parse(const char *s, struct cmd **cmd, char **cause)
|
||||
|
||||
*cmd = NULL;
|
||||
rval = -1;
|
||||
|
||||
|
||||
p = 0;
|
||||
for (;;) {
|
||||
ch = cmd_string_getc(s, &p);
|
||||
@ -130,7 +130,7 @@ cmd_string_parse(const char *s, struct cmd **cmd, char **cause)
|
||||
break;
|
||||
if (argc == 0)
|
||||
goto out;
|
||||
|
||||
|
||||
*cmd = cmd_parse(argc, argv, cause);
|
||||
rval = 0;
|
||||
goto out;
|
||||
@ -143,10 +143,10 @@ cmd_string_parse(const char *s, struct cmd **cmd, char **cause)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
error:
|
||||
xasprintf(cause, "bad command: %s", s);
|
||||
|
||||
|
||||
out:
|
||||
if (buf != NULL)
|
||||
xfree(buf);
|
||||
@ -252,7 +252,7 @@ cmd_string_variable(const char *s, size_t *p)
|
||||
|
||||
buf = xrealloc(buf, 1, len + 1);
|
||||
buf[len++] = ch;
|
||||
|
||||
|
||||
for(;;) {
|
||||
ch = cmd_string_getc(s, p);
|
||||
if (ch == EOF || !cmd_string_other(ch))
|
||||
@ -284,5 +284,5 @@ cmd_string_variable(const char *s, size_t *p)
|
||||
error:
|
||||
if (buf != NULL)
|
||||
xfree(buf);
|
||||
return (NULL);
|
||||
return (NULL);
|
||||
}
|
||||
|
6
cmd.c
6
cmd.c
@ -1,4 +1,4 @@
|
||||
/* $Id: cmd.c,v 1.64 2008-09-25 23:28:15 nicm Exp $ */
|
||||
/* $Id: cmd.c,v 1.65 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -93,13 +93,13 @@ cmd_complete(const char *s)
|
||||
continue;
|
||||
ARRAY_ADD(&list, (*entryp)->name);
|
||||
}
|
||||
|
||||
|
||||
/* If none, bail now with the original string. */
|
||||
if (ARRAY_LENGTH(&list) == 0) {
|
||||
ARRAY_FREE(&list);
|
||||
return (xstrdup(s));
|
||||
}
|
||||
|
||||
|
||||
/* If an exact match, return it, with a trailing space. */
|
||||
if (ARRAY_LENGTH(&list) == 1) {
|
||||
xasprintf(&s2, "%s ", ARRAY_FIRST(&list));
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: asprintf.c,v 1.3 2008-06-23 21:54:48 nicm Exp $ */
|
||||
/* $Id: asprintf.c,v 1.4 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -58,32 +58,32 @@ error:
|
||||
return (-1);
|
||||
}
|
||||
#else
|
||||
int
|
||||
vasprintf(char **ret, const char *fmt, va_list ap)
|
||||
{
|
||||
va_list aq;
|
||||
size_t len;
|
||||
char *buf;
|
||||
int n;
|
||||
|
||||
len = 64;
|
||||
buf = xmalloc(len);
|
||||
|
||||
for (;;) {
|
||||
va_copy(aq, ap);
|
||||
n = vsnprintf(buf, len, fmt, aq);
|
||||
va_end(aq);
|
||||
|
||||
if (n != -1) {
|
||||
*ret = buf;
|
||||
return (n);
|
||||
}
|
||||
|
||||
if (len > SIZE_MAX / 2) {
|
||||
xfree(buf);
|
||||
return (-1);
|
||||
}
|
||||
len *= 2;
|
||||
}
|
||||
}
|
||||
int
|
||||
vasprintf(char **ret, const char *fmt, va_list ap)
|
||||
{
|
||||
va_list aq;
|
||||
size_t len;
|
||||
char *buf;
|
||||
int n;
|
||||
|
||||
len = 64;
|
||||
buf = xmalloc(len);
|
||||
|
||||
for (;;) {
|
||||
va_copy(aq, ap);
|
||||
n = vsnprintf(buf, len, fmt, aq);
|
||||
va_end(aq);
|
||||
|
||||
if (n != -1) {
|
||||
*ret = buf;
|
||||
return (n);
|
||||
}
|
||||
|
||||
if (len > SIZE_MAX / 2) {
|
||||
xfree(buf);
|
||||
return (-1);
|
||||
}
|
||||
len *= 2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: forkpty-irix.c,v 1.1 2008-06-23 21:54:48 nicm Exp $ */
|
||||
/* $Id: forkpty-irix.c,v 1.2 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -50,7 +50,7 @@ forkpty(int *master,
|
||||
close(*master);
|
||||
|
||||
setsid();
|
||||
|
||||
|
||||
old = signal(SIGHUP, SIG_IGN);
|
||||
vhangup();
|
||||
signal(SIGHUP, old);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: grid-view.c,v 1.1 2008-09-25 20:08:52 nicm Exp $ */
|
||||
/* $Id: grid-view.c,v 1.2 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -133,7 +133,7 @@ grid_view_insert_lines_region(
|
||||
rlower = grid_view_y(gd, rlower);
|
||||
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
|
||||
grid_move_lines(gd, py + ny, py, (rlower + 1) - py - ny);
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ grid_view_insert_cells(struct grid_data *gd, u_int px, u_int py, u_int nx)
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
|
||||
sx = grid_view_x(gd, gd->sx);
|
||||
sx = grid_view_x(gd, gd->sx);
|
||||
|
||||
grid_move_cells(gd, px + nx, px, py, (sx - 1) - (px + nx));
|
||||
}
|
||||
@ -193,7 +193,7 @@ grid_view_delete_cells(struct grid_data *gd, u_int px, u_int py, u_int nx)
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
|
||||
sx = grid_view_x(gd, gd->sx);
|
||||
sx = grid_view_x(gd, gd->sx);
|
||||
|
||||
grid_move_cells(gd, px, px + nx, py, (sx - 1) - (px + nx));
|
||||
}
|
||||
|
6
grid.c
6
grid.c
@ -1,4 +1,4 @@
|
||||
/* $Id: grid.c,v 1.1 2008-09-25 20:08:52 nicm Exp $ */
|
||||
/* $Id: grid.c,v 1.2 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -214,14 +214,14 @@ grid_clear(struct grid_data *gd, u_int px, u_int py, u_int nx, u_int ny)
|
||||
void
|
||||
grid_fill(struct grid_data *gd,
|
||||
const struct grid_cell *gc, u_int px, u_int py, u_int nx, u_int ny)
|
||||
{
|
||||
{
|
||||
u_int xx, yy;
|
||||
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u, ny=%u", px, py, nx, ny);
|
||||
|
||||
if (nx == 0 || ny == 0)
|
||||
return;
|
||||
|
||||
|
||||
grid_check_x(gd, px);
|
||||
grid_check_x(gd, px + nx - 1);
|
||||
grid_check_y(gd, py);
|
||||
|
16
input.c
16
input.c
@ -1,4 +1,4 @@
|
||||
/* $Id: input.c,v 1.59 2008-09-25 20:08:52 nicm Exp $ */
|
||||
/* $Id: input.c,v 1.60 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -518,7 +518,7 @@ void
|
||||
input_handle_character(u_char ch, struct input_ctx *ictx)
|
||||
{
|
||||
if (ch > 0x7f) {
|
||||
/*
|
||||
/*
|
||||
* UTF-8 sequence.
|
||||
*
|
||||
* 11000010-11011111 C2-DF start of 2-byte sequence
|
||||
@ -528,7 +528,7 @@ input_handle_character(u_char ch, struct input_ctx *ictx)
|
||||
memset(ictx->utf8_buf, 0xff, sizeof ictx->utf8_buf);
|
||||
ictx->utf8_buf[0] = ch;
|
||||
ictx->utf8_off = 1;
|
||||
|
||||
|
||||
if (ch >= 0xc2 && ch <= 0xdf) {
|
||||
log_debug2("-- u2 %zu: %hhu (%c)", ictx->off, ch, ch);
|
||||
input_state(ictx, input_state_utf8);
|
||||
@ -541,7 +541,7 @@ input_handle_character(u_char ch, struct input_ctx *ictx)
|
||||
ictx->utf8_len = 2;
|
||||
return;
|
||||
}
|
||||
if (ch >= 0xf0 && ch <= 0xf4) {
|
||||
if (ch >= 0xf0 && ch <= 0xf4) {
|
||||
log_debug2("-- u4 %zu: %hhu (%c)", ictx->off, ch, ch);
|
||||
input_state(ictx, input_state_utf8);
|
||||
ictx->utf8_len = 3;
|
||||
@ -663,7 +663,7 @@ input_handle_standard_two(u_char ch, struct input_ctx *ictx)
|
||||
screen_write_mousemode(&ictx->ctx, 0);
|
||||
|
||||
screen_write_clearscreen(&ictx->ctx);
|
||||
screen_write_cursormove(&ictx->ctx, 0, 0);
|
||||
screen_write_cursormove(&ictx->ctx, 0, 0);
|
||||
break;
|
||||
case 'k':
|
||||
input_start_string(ictx, STRING_NAME);
|
||||
@ -1145,7 +1145,7 @@ input_handle_sequence_sgr(struct input_ctx *ictx)
|
||||
return;
|
||||
if (o != 5)
|
||||
continue;
|
||||
|
||||
|
||||
i++;
|
||||
if (input_get_argument(ictx, i, &o, 0) != 0)
|
||||
return;
|
||||
@ -1158,7 +1158,7 @@ input_handle_sequence_sgr(struct input_ctx *ictx)
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
switch (m) {
|
||||
case 0:
|
||||
case 10:
|
||||
@ -1213,7 +1213,7 @@ input_handle_sequence_sgr(struct input_ctx *ictx)
|
||||
case 44:
|
||||
case 45:
|
||||
case 46:
|
||||
case 47:
|
||||
case 47:
|
||||
gc->flags &= ~GRID_FLAG_BG256;
|
||||
gc->bg = m - 40;
|
||||
break;
|
||||
|
4
log.c
4
log.c
@ -1,4 +1,4 @@
|
||||
/* $Id: log.c,v 1.7 2008-09-25 20:31:19 nicm Exp $ */
|
||||
/* $Id: log.c,v 1.8 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -72,7 +72,7 @@ log_open_file(int level, const char *path)
|
||||
log_file = fopen(path, "w");
|
||||
if (log_file == NULL)
|
||||
return;
|
||||
|
||||
|
||||
log_type = LOG_TYPE_FILE;
|
||||
log_level = level;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: screen-redraw.c,v 1.12 2008-09-25 20:08:54 nicm Exp $ */
|
||||
/* $Id: screen-redraw.c,v 1.13 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -132,7 +132,7 @@ screen_redraw_cell(struct screen_redraw_ctx *ctx, u_int px, u_int py)
|
||||
ctx->write(ctx->data, TTY_CURSORMOVE, ctx->s->cx, ctx->s->cy);
|
||||
}
|
||||
|
||||
gc = grid_view_peek_cell(ctx->s->grid, px, py);
|
||||
gc = grid_view_peek_cell(ctx->s->grid, px, py);
|
||||
if (screen_check_selection(ctx->s, px, py)) {
|
||||
memcpy(&hc, gc, sizeof hc);
|
||||
hc.attr |= GRID_ATTR_REVERSE;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: screen-write.c,v 1.14 2008-09-25 20:08:54 nicm Exp $ */
|
||||
/* $Id: screen-write.c,v 1.15 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -152,7 +152,7 @@ screen_write_cursordown(struct screen_write_ctx *ctx, u_int ny)
|
||||
ny = screen_size_y(s) - 1 - s->cy;
|
||||
if (ny == 0)
|
||||
ny = 1;
|
||||
|
||||
|
||||
s->cy += ny;
|
||||
|
||||
if (ctx->write != NULL)
|
||||
@ -171,7 +171,7 @@ screen_write_cursorright(struct screen_write_ctx *ctx, u_int nx)
|
||||
nx = 1;
|
||||
|
||||
s->cx += nx;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CURSORRIGHT, nx);
|
||||
}
|
||||
@ -181,14 +181,14 @@ void
|
||||
screen_write_cursorleft(struct screen_write_ctx *ctx, u_int nx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (nx > s->cx)
|
||||
nx = s->cx;
|
||||
if (nx == 0)
|
||||
nx = 1;
|
||||
|
||||
s->cx -= nx;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CURSORLEFT, nx);
|
||||
}
|
||||
@ -198,14 +198,14 @@ void
|
||||
screen_write_insertcharacter(struct screen_write_ctx *ctx, u_int nx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (nx > screen_size_x(s) - 1 - s->cx)
|
||||
nx = screen_size_x(s) - 1 - s->cx;
|
||||
if (nx == 0)
|
||||
nx = 1;
|
||||
|
||||
grid_view_insert_cells(s->grid, s->cx, s->cy, nx);
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_INSERTCHARACTER, nx);
|
||||
}
|
||||
@ -215,14 +215,14 @@ void
|
||||
screen_write_deletecharacter(struct screen_write_ctx *ctx, u_int nx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (nx > screen_size_x(s) - 1 - s->cx)
|
||||
nx = screen_size_x(s) - 1 - s->cx;
|
||||
if (nx == 0)
|
||||
nx = 1;
|
||||
|
||||
grid_view_delete_cells(s->grid, s->cx, s->cy, nx);
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_DELETECHARACTER, nx);
|
||||
}
|
||||
@ -243,8 +243,8 @@ screen_write_insertline(struct screen_write_ctx *ctx, u_int ny)
|
||||
else {
|
||||
grid_view_insert_lines_region(
|
||||
s->grid, s->rupper, s->rlower, s->cy, ny);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_INSERTLINE, ny);
|
||||
}
|
||||
@ -276,9 +276,9 @@ void
|
||||
screen_write_clearline(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
grid_view_clear(s->grid, 0, s->cy, screen_size_x(s), 1);
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARLINE);
|
||||
}
|
||||
@ -288,9 +288,9 @@ void
|
||||
screen_write_clearendofline(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
grid_view_clear(s->grid, s->cx, s->cy, screen_size_x(s) - s->cx, 1);
|
||||
|
||||
|
||||
grid_view_clear(s->grid, s->cx, s->cy, screen_size_x(s) - s->cx, 1);
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARENDOFLINE);
|
||||
}
|
||||
@ -300,9 +300,9 @@ void
|
||||
screen_write_clearstartofline(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
grid_view_clear(s->grid, 0, s->cy, s->cx + 1, 1);
|
||||
|
||||
|
||||
grid_view_clear(s->grid, 0, s->cy, s->cx + 1, 1);
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARSTARTOFLINE);
|
||||
}
|
||||
@ -312,7 +312,7 @@ void
|
||||
screen_write_cursormove(struct screen_write_ctx *ctx, u_int px, u_int py)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (px > screen_size_x(s) - 1)
|
||||
px = screen_size_x(s) - 1;
|
||||
if (py > screen_size_y(s) - 1)
|
||||
@ -320,7 +320,7 @@ screen_write_cursormove(struct screen_write_ctx *ctx, u_int px, u_int py)
|
||||
|
||||
s->cx = px;
|
||||
s->cy = py;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CURSORMOVE, px, py);
|
||||
}
|
||||
@ -330,12 +330,12 @@ void
|
||||
screen_write_cursormode(struct screen_write_ctx *ctx, int state)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (state)
|
||||
s->mode |= MODE_CURSOR;
|
||||
else
|
||||
s->mode &= ~MODE_CURSOR;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CURSORMODE, state);
|
||||
}
|
||||
@ -345,12 +345,12 @@ void
|
||||
screen_write_reverseindex(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (s->cy == s->rupper)
|
||||
grid_view_scroll_region_down(s->grid, s->rupper, s->rlower);
|
||||
else if (s->cy > 0)
|
||||
s->cy--;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_REVERSEINDEX);
|
||||
}
|
||||
@ -361,7 +361,7 @@ screen_write_scrollregion(
|
||||
struct screen_write_ctx *ctx, u_int rupper, u_int rlower)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (rupper > screen_size_y(s) - 1)
|
||||
rupper = screen_size_y(s) - 1;
|
||||
if (rlower > screen_size_y(s) - 1)
|
||||
@ -375,7 +375,7 @@ screen_write_scrollregion(
|
||||
|
||||
s->rupper = rupper;
|
||||
s->rlower = rlower;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_SCROLLREGION, rupper, rlower);
|
||||
}
|
||||
@ -385,12 +385,12 @@ void
|
||||
screen_write_insertmode(struct screen_write_ctx *ctx, int state)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (state)
|
||||
s->mode |= MODE_INSERT;
|
||||
else
|
||||
s->mode &= ~MODE_INSERT;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_INSERTMODE, state);
|
||||
}
|
||||
@ -405,7 +405,7 @@ screen_write_mousemode(struct screen_write_ctx *ctx, int state)
|
||||
s->mode |= MODE_MOUSE;
|
||||
else
|
||||
s->mode &= ~MODE_MOUSE;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_MOUSEMODE, state);
|
||||
}
|
||||
@ -415,12 +415,12 @@ void
|
||||
screen_write_linefeed(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (s->cy == s->rlower)
|
||||
grid_view_scroll_region_up(s->grid, s->rupper, s->rlower);
|
||||
else if (s->cy < screen_size_x(s) - 1)
|
||||
s->cy++;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_LINEFEED);
|
||||
}
|
||||
@ -430,7 +430,7 @@ void
|
||||
screen_write_carriagereturn(struct screen_write_ctx *ctx)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
s->cx = 0;
|
||||
|
||||
if (ctx->write != NULL)
|
||||
@ -442,12 +442,12 @@ void
|
||||
screen_write_kcursormode(struct screen_write_ctx *ctx, int state)
|
||||
{
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
|
||||
if (state)
|
||||
s->mode |= MODE_KCURSOR;
|
||||
else
|
||||
s->mode &= ~MODE_KCURSOR;
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_KCURSORMODE);
|
||||
}
|
||||
@ -461,8 +461,8 @@ screen_write_kkeypadmode(struct screen_write_ctx *ctx, int state)
|
||||
if (state)
|
||||
s->mode |= MODE_KKEYPAD;
|
||||
else
|
||||
s->mode &= ~MODE_KKEYPAD;
|
||||
|
||||
s->mode &= ~MODE_KKEYPAD;
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_KKEYPADMODE);
|
||||
}
|
||||
@ -479,7 +479,7 @@ screen_write_clearendofscreen(struct screen_write_ctx *ctx)
|
||||
|
||||
grid_view_clear(s->grid, s->cx, s->cy, sx - s->cx, 1);
|
||||
grid_view_clear(s->grid, 0, s->cy + 1, sx, sy - (s->cy + 1));
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARENDOFSCREEN);
|
||||
}
|
||||
@ -496,8 +496,8 @@ screen_write_clearstartofscreen(struct screen_write_ctx *ctx)
|
||||
|
||||
if (s->cy > 0)
|
||||
grid_view_clear(s->grid, 0, 0, sx, s->cy - 1);
|
||||
grid_view_clear(s->grid, 0, s->cy, s->cx, 1);
|
||||
|
||||
grid_view_clear(s->grid, 0, s->cy, s->cx, 1);
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARSTARTOFSCREEN);
|
||||
}
|
||||
@ -509,7 +509,7 @@ screen_write_clearscreen(struct screen_write_ctx *ctx)
|
||||
struct screen *s = ctx->s;
|
||||
|
||||
grid_view_clear(s->grid, 0, 0, screen_size_x(s), screen_size_y(s));
|
||||
|
||||
|
||||
if (ctx->write != NULL)
|
||||
ctx->write(ctx->data, TTY_CLEARSCREEN);
|
||||
}
|
||||
@ -534,7 +534,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
|
||||
width = 1;
|
||||
gc = &tc;
|
||||
}
|
||||
|
||||
|
||||
/* Check this will fit on the current line; scroll if not. */
|
||||
if (s->cx >= screen_size_x(s) + 1 - width) {
|
||||
screen_write_carriagereturn(ctx);
|
||||
@ -556,7 +556,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
|
||||
*/
|
||||
hc = grid_view_peek_cell(gd, s->cx, s->cy);
|
||||
if (hc->flags & GRID_FLAG_PADDING) {
|
||||
/*
|
||||
/*
|
||||
* A padding cell, so clear any following and leading padding
|
||||
* cells back to the character. Don't overwrite the current
|
||||
* cell as that happens later anyway.
|
||||
@ -581,7 +581,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
|
||||
grid_view_set_cell(gd, xx, s->cy, &grid_default_cell);
|
||||
}
|
||||
} else if (utf8_width(hc->data) > 1) {
|
||||
/*
|
||||
/*
|
||||
* An UTF-8 wide cell; overwrite following padding cells only.
|
||||
*/
|
||||
xx = s->cx;
|
||||
@ -605,7 +605,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
|
||||
/* Write the actual cell. */
|
||||
grid_view_set_cell(gd, s->cx, s->cy, gc);
|
||||
s->cx += width;
|
||||
|
||||
|
||||
if (ctx->write != NULL) {
|
||||
if (screen_check_selection(ctx->s, s->cx, s->cy)) {
|
||||
memcpy(&tc, gc, sizeof tc);
|
||||
|
10
screen.c
10
screen.c
@ -1,4 +1,4 @@
|
||||
/* $Id: screen.c,v 1.72 2008-09-25 20:08:54 nicm Exp $ */
|
||||
/* $Id: screen.c,v 1.73 2008-09-26 06:45:26 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -51,8 +51,8 @@ screen_reinit(struct screen *s)
|
||||
/* XXX */
|
||||
grid_clear_lines(
|
||||
s->grid, s->grid->hsize, s->grid->hsize + s->grid->sy - 1);
|
||||
|
||||
screen_clear_selection(s);
|
||||
|
||||
screen_clear_selection(s);
|
||||
}
|
||||
|
||||
/* Destroy a screen. */
|
||||
@ -150,7 +150,7 @@ screen_resize_y(struct screen *s, u_int sy)
|
||||
}
|
||||
|
||||
if (sy < oy) {
|
||||
/* Remove any remaining lines from the bottom. */
|
||||
/* Remove any remaining lines from the bottom. */
|
||||
grid_view_delete_lines(gd, sy, oy - sy);
|
||||
if (s->cy >= sy)
|
||||
s->cy = sy - 1;
|
||||
@ -171,7 +171,7 @@ screen_resize_y(struct screen *s, u_int sy)
|
||||
}
|
||||
|
||||
gd->sy = sy;
|
||||
|
||||
|
||||
s->rupper = 0;
|
||||
s->rlower = screen_size_y(s) - 1;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: server-msg.c,v 1.51 2008-09-25 20:08:54 nicm Exp $ */
|
||||
/* $Id: server-msg.c,v 1.52 2008-09-26 06:45:27 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -172,7 +172,7 @@ server_msg_fn_identify(struct hdr *hdr, struct client *c)
|
||||
buffer_read(c->in, &data, sizeof data);
|
||||
term = cmd_recv_string(c->in);
|
||||
|
||||
log_debug("identify msg from client: %u,%u (%d)",
|
||||
log_debug("identify msg from client: %u,%u (%d)",
|
||||
data.sx, data.sy, data.version);
|
||||
|
||||
if (data.version != PROTOCOL_VERSION) {
|
||||
|
4
server.c
4
server.c
@ -1,4 +1,4 @@
|
||||
/* $Id: server.c,v 1.81 2008-09-25 20:08:54 nicm Exp $ */
|
||||
/* $Id: server.c,v 1.82 2008-09-26 06:45:27 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -389,7 +389,7 @@ server_check_timers(struct client *c)
|
||||
|
||||
if (gettimeofday(&tv, NULL) != 0)
|
||||
fatal("gettimeofday");
|
||||
|
||||
|
||||
if (c->message_string != NULL && timercmp(&tv, &c->message_timer, >))
|
||||
server_clear_client_message(c);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: session.c,v 1.42 2008-08-28 17:45:27 nicm Exp $ */
|
||||
/* $Id: session.c,v 1.43 2008-09-26 06:45:27 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -206,7 +206,7 @@ session_new(struct session *s, const char *name, const char *cmd, int idx)
|
||||
|
||||
if (options_get_number(&s->options, "remain-by-default"))
|
||||
w->flags |= WINDOW_ZOMBIFY;
|
||||
|
||||
|
||||
return (session_attach(s, w, idx));
|
||||
}
|
||||
|
||||
|
30
status.c
30
status.c
@ -1,4 +1,4 @@
|
||||
/* $Id: status.c,v 1.47 2008-09-25 20:33:53 nicm Exp $ */
|
||||
/* $Id: status.c,v 1.48 2008-09-26 06:45:27 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -221,7 +221,7 @@ draw:
|
||||
screen_redraw_putc(&ctx, &gc, '>');
|
||||
gc.attr &= ~GRID_ATTR_REVERSE;
|
||||
}
|
||||
|
||||
|
||||
screen_redraw_stop(&ctx);
|
||||
return;
|
||||
|
||||
@ -259,14 +259,14 @@ status_width(struct winlink *wl)
|
||||
#ifndef BROKEN_VSNPRINTF
|
||||
return (xsnprintf(NULL, 0, "%d:%s ", wl->idx, wl->window->name));
|
||||
#else
|
||||
char *s;
|
||||
size_t n;
|
||||
|
||||
xasprintf(&s, "%d:%s ", wl->idx, wl->window->name);
|
||||
n = strlen(s);
|
||||
xfree(s);
|
||||
char *s;
|
||||
size_t n;
|
||||
|
||||
return (n);
|
||||
xasprintf(&s, "%d:%s ", wl->idx, wl->window->name);
|
||||
n = strlen(s);
|
||||
xfree(s);
|
||||
|
||||
return (n);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -309,7 +309,7 @@ status_message_redraw(struct client *c)
|
||||
xx = strlen(c->message_string);
|
||||
if (xx > c->sx)
|
||||
xx = c->sx;
|
||||
yy = c->sy - 1;
|
||||
yy = c->sy - 1;
|
||||
|
||||
memcpy(&gc, &grid_default_cell, sizeof gc);
|
||||
gc.attr |= GRID_ATTR_REVERSE;
|
||||
@ -342,7 +342,7 @@ status_prompt_redraw(struct client *c)
|
||||
xx = strlen(c->prompt_string);
|
||||
if (xx > c->sx)
|
||||
xx = c->sx;
|
||||
yy = c->sy - 1;
|
||||
yy = c->sy - 1;
|
||||
|
||||
memcpy(&gc, &grid_default_cell, sizeof gc);
|
||||
gc.attr |= GRID_ATTR_REVERSE;
|
||||
@ -425,7 +425,7 @@ status_prompt_key(struct client *c, int key)
|
||||
break;
|
||||
if (c->prompt_index != strlen(c->prompt_buffer))
|
||||
break;
|
||||
|
||||
|
||||
s = cmd_complete(c->prompt_buffer);
|
||||
xfree(c->prompt_buffer);
|
||||
|
||||
@ -440,7 +440,7 @@ status_prompt_key(struct client *c, int key)
|
||||
if (c->prompt_index == size)
|
||||
c->prompt_buffer[--c->prompt_index] = '\0';
|
||||
else {
|
||||
memmove(c->prompt_buffer + c->prompt_index - 1,
|
||||
memmove(c->prompt_buffer + c->prompt_index - 1,
|
||||
c->prompt_buffer + c->prompt_index,
|
||||
size + 1 - c->prompt_index);
|
||||
c->prompt_index--;
|
||||
@ -450,7 +450,7 @@ status_prompt_key(struct client *c, int key)
|
||||
break;
|
||||
case KEYC_DC:
|
||||
if (c->prompt_index != size) {
|
||||
memmove(c->prompt_buffer + c->prompt_index,
|
||||
memmove(c->prompt_buffer + c->prompt_index,
|
||||
c->prompt_buffer + c->prompt_index + 1,
|
||||
size + 1 - c->prompt_index);
|
||||
c->flags |= CLIENT_STATUS;
|
||||
@ -476,7 +476,7 @@ status_prompt_key(struct client *c, int key)
|
||||
c->prompt_buffer[c->prompt_index++] = key;
|
||||
c->prompt_buffer[c->prompt_index] = '\0';
|
||||
} else {
|
||||
memmove(c->prompt_buffer + c->prompt_index + 1,
|
||||
memmove(c->prompt_buffer + c->prompt_index + 1,
|
||||
c->prompt_buffer + c->prompt_index,
|
||||
size + 1 - c->prompt_index);
|
||||
c->prompt_buffer[c->prompt_index++] = key;
|
||||
|
6
tmux.c
6
tmux.c
@ -1,4 +1,4 @@
|
||||
/* $Id: tmux.c,v 1.77 2008-09-25 23:28:15 nicm Exp $ */
|
||||
/* $Id: tmux.c,v 1.78 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -61,8 +61,8 @@ const char *__progname = "tmux";
|
||||
__dead void
|
||||
usage(void)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: %s [-2dquVv] [-f file] [-S socket-path] [command [flags]]\n",
|
||||
fprintf(stderr, "usage: "
|
||||
"%s [-2dquVv] [-f file] [-S socket-path] [command [flags]]\n",
|
||||
__progname);
|
||||
exit(1);
|
||||
}
|
||||
|
10
tmux.h
10
tmux.h
@ -1,4 +1,4 @@
|
||||
/* $Id: tmux.h,v 1.190 2008-09-25 23:28:15 nicm Exp $ */
|
||||
/* $Id: tmux.h,v 1.191 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -433,12 +433,12 @@ struct grid_cell {
|
||||
u_char fg;
|
||||
u_char bg;
|
||||
} __packed;
|
||||
|
||||
|
||||
/* Grid data. */
|
||||
struct grid_data {
|
||||
u_int sx;
|
||||
u_int sy;
|
||||
|
||||
|
||||
u_int hsize;
|
||||
u_int hlimit;
|
||||
|
||||
@ -824,7 +824,7 @@ struct set_option_entry {
|
||||
enum {
|
||||
SET_OPTION_STRING,
|
||||
SET_OPTION_NUMBER,
|
||||
SET_OPTION_KEY,
|
||||
SET_OPTION_KEY,
|
||||
SET_OPTION_COLOUR,
|
||||
SET_OPTION_FLAG,
|
||||
SET_OPTION_CHOICE
|
||||
@ -832,7 +832,7 @@ struct set_option_entry {
|
||||
|
||||
u_int minimum;
|
||||
u_int maximum;
|
||||
|
||||
|
||||
const char **choices;
|
||||
};
|
||||
extern const struct set_option_entry set_option_table[];
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: tty-keys.c,v 1.10 2008-08-28 17:45:28 nicm Exp $ */
|
||||
/* $Id: tty-keys.c,v 1.11 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -203,7 +203,7 @@ struct {
|
||||
{ "-\033Os", KEYC_KP3_2 },
|
||||
{ "-\033OM", KEYC_KP3_3 },
|
||||
{ "-\033Op", KEYC_KP4_0 },
|
||||
{ "-\033On", KEYC_KP4_2 },
|
||||
{ "-\033On", KEYC_KP4_2 },
|
||||
};
|
||||
#define NTTYKEYS (sizeof tty_keys / sizeof tty_keys[0])
|
||||
|
||||
@ -322,7 +322,7 @@ tty_keys_next(struct tty *tty, int *code)
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* Escape but no key string. If the timer isn't started, start it. */
|
||||
/* Escape but no key string. If the timer isn't started, start it. */
|
||||
if (!(tty->flags & TTY_ESCAPE)) {
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 500 * 1000L;
|
||||
|
28
tty.c
28
tty.c
@ -1,4 +1,4 @@
|
||||
/* $Id: tty.c,v 1.43 2008-09-25 20:08:56 nicm Exp $ */
|
||||
/* $Id: tty.c,v 1.44 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -123,7 +123,7 @@ tty_open(struct tty *tty, char **cause)
|
||||
xasprintf(cause, "%s: %s", tty->path, strerror(errno));
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
if ((mode = fcntl(tty->fd, F_GETFL)) == -1)
|
||||
fatal("fcntl");
|
||||
if (fcntl(tty->fd, F_SETFL, mode|O_NONBLOCK) == -1)
|
||||
@ -355,7 +355,7 @@ tty_find_term(char *name, int fd, char **cause)
|
||||
*/
|
||||
if (max_colors == 256 || strstr(name, "256col") != NULL) /* XXX HACK */
|
||||
term->flags |= TERM_256COLOURS;
|
||||
|
||||
|
||||
return (term);
|
||||
|
||||
error:
|
||||
@ -423,13 +423,13 @@ tty_strip(const char *s)
|
||||
if (*ptr == '>')
|
||||
ptr++;
|
||||
}
|
||||
|
||||
|
||||
buf[len++] = *ptr;
|
||||
if (len == (sizeof buf) - 1)
|
||||
break;
|
||||
}
|
||||
buf[len] = '\0';
|
||||
|
||||
|
||||
return (buf);
|
||||
}
|
||||
|
||||
@ -485,7 +485,7 @@ tty_vwrite(struct tty *tty, struct screen *s, int cmd, va_list ap)
|
||||
{
|
||||
if (tty->flags & TTY_FREEZE)
|
||||
return;
|
||||
|
||||
|
||||
if (tty->term == NULL) /* XXX XXX */
|
||||
return;
|
||||
set_curterm(tty->term->term);
|
||||
@ -654,7 +654,7 @@ void
|
||||
tty_cmd_clearendofline(struct tty *tty, struct screen *s, unused va_list ap)
|
||||
{
|
||||
u_int i;
|
||||
|
||||
|
||||
tty_reset(tty);
|
||||
|
||||
if (clr_eol != NULL)
|
||||
@ -704,7 +704,7 @@ tty_cmd_cursormode(struct tty *tty, unused struct screen *s, va_list ap)
|
||||
return;
|
||||
|
||||
ua = va_arg(ap, int);
|
||||
|
||||
|
||||
if (ua && !(tty->flags & TTY_NOCURSOR))
|
||||
tty_puts(tty, cursor_normal);
|
||||
else
|
||||
@ -830,7 +830,7 @@ tty_cmd_clearstartofscreen(struct tty *tty, struct screen *s, unused va_list ap)
|
||||
for (j = 0; j < s->cy; j++) {
|
||||
for (i = 0; i < screen_size_x(s); i++)
|
||||
tty_putc(tty, ' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i = 0; i < s->cx; i++)
|
||||
tty_putc(tty, ' ');
|
||||
@ -911,7 +911,7 @@ tty_reset(struct tty *tty)
|
||||
tc->data = grid_default_cell.data;
|
||||
if (memcmp(tc, &grid_default_cell, sizeof *tc) == 0)
|
||||
return;
|
||||
|
||||
|
||||
if (exit_alt_charset_mode != NULL && tc->attr & GRID_ATTR_CHARSET)
|
||||
tty_puts(tty, exit_alt_charset_mode);
|
||||
tty_puts(tty, exit_attribute_mode);
|
||||
@ -956,9 +956,9 @@ tty_attributes(struct tty *tty, const struct grid_cell *gc)
|
||||
tty_attributes_fg(tty, gc);
|
||||
tc->fg = gc->fg;
|
||||
}
|
||||
|
||||
|
||||
/* Set background colour. */
|
||||
if (gc->bg != tc->bg ||
|
||||
if (gc->bg != tc->bg ||
|
||||
(gc->flags & GRID_FLAG_BG256) != (tc->flags & GRID_FLAG_BG256)) {
|
||||
tty_attributes_bg(tty, gc);
|
||||
tc->bg = gc->bg;
|
||||
@ -984,7 +984,7 @@ tty_attributes_fg(struct tty *tty, const struct grid_cell *gc)
|
||||
else if (fg > 7)
|
||||
fg -= 8;
|
||||
}
|
||||
|
||||
|
||||
if (fg == 8 &&
|
||||
!(tty->term->flags & TERM_HASDEFAULTS) &&
|
||||
!(tty->term_flags & TERM_HASDEFAULTS))
|
||||
@ -1014,7 +1014,7 @@ tty_attributes_bg(struct tty *tty, const struct grid_cell *gc)
|
||||
else if (bg > 7)
|
||||
bg -= 8;
|
||||
}
|
||||
|
||||
|
||||
if (bg == 8 &&
|
||||
!(tty->term->flags & TERM_HASDEFAULTS) &&
|
||||
!(tty->term_flags & TERM_HASDEFAULTS))
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: window-copy.c,v 1.31 2008-09-25 20:08:57 nicm Exp $ */
|
||||
/* $Id: window-copy.c,v 1.32 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -243,7 +243,7 @@ window_copy_write_column(
|
||||
struct screen *s = &data->screen;
|
||||
|
||||
screen_write_cursormove(ctx, px, 0);
|
||||
screen_write_copy(ctx, &w->base,
|
||||
screen_write_copy(ctx, &w->base,
|
||||
data->ox, screen_hsize(&w->base) - data->oy, 1, screen_size_y(s));
|
||||
}
|
||||
|
||||
@ -657,16 +657,16 @@ window_copy_cursor_next_word(struct window *w)
|
||||
if (data->oy == 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
px = 0;
|
||||
window_copy_cursor_down(w);
|
||||
|
||||
|
||||
py =screen_hsize(
|
||||
&w->base) + data->cy - data->oy;
|
||||
xx = window_copy_find_length(w, py);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (skip) {
|
||||
/* Currently skipping non-space (until space). */
|
||||
if (window_copy_is_space(w, px, py))
|
||||
@ -706,7 +706,7 @@ out:
|
||||
data->cx = screen_size_x(s) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (window_copy_update_selection(w))
|
||||
window_copy_redraw_lines(w, data->cy, 1);
|
||||
else
|
||||
@ -735,20 +735,20 @@ window_copy_cursor_previous_word(struct window *w)
|
||||
break;
|
||||
|
||||
while (px == 0) {
|
||||
if (data->cy == 0 &&
|
||||
if (data->cy == 0 &&
|
||||
(screen_hsize(&w->base) == 0 ||
|
||||
data->oy >= screen_hsize(&w->base) - 1))
|
||||
goto out;
|
||||
|
||||
|
||||
window_copy_cursor_up(w);
|
||||
|
||||
|
||||
py = screen_hsize(
|
||||
&w->base) + data->cy - data->oy;
|
||||
px = window_copy_find_length(w, py);
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
if (skip) {
|
||||
/* Currently skipping non-space (until space). */
|
||||
if (window_copy_is_space(w, px - 1, py))
|
||||
@ -758,7 +758,7 @@ window_copy_cursor_previous_word(struct window *w)
|
||||
if (!window_copy_is_space(w, px - 1, py))
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
px--;
|
||||
}
|
||||
out:
|
||||
@ -788,7 +788,7 @@ out:
|
||||
data->cx = screen_size_x(s) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (window_copy_update_selection(w))
|
||||
window_copy_redraw_lines(w, data->cy, 1);
|
||||
else
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: window-more.c,v 1.19 2008-09-25 20:08:57 nicm Exp $ */
|
||||
/* $Id: window-more.c,v 1.20 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -172,7 +172,7 @@ window_more_write_line(struct window *w, struct screen_write_ctx *ctx, u_int py)
|
||||
|
||||
if (py == 0) {
|
||||
size = xsnprintf(hdr, sizeof hdr,
|
||||
"[%u/%u]", data->top, ARRAY_LENGTH(&data->list));
|
||||
"[%u/%u]", data->top, ARRAY_LENGTH(&data->list));
|
||||
screen_write_cursormove(ctx, screen_size_x(s) - size, 0);
|
||||
gc.attr |= GRID_ATTR_BRIGHT|GRID_ATTR_REVERSE;
|
||||
screen_write_puts(ctx, &gc, "%s", hdr);
|
||||
|
4
window.c
4
window.c
@ -1,4 +1,4 @@
|
||||
/* $Id: window.c,v 1.49 2008-09-10 19:15:06 nicm Exp $ */
|
||||
/* $Id: window.c,v 1.50 2008-09-26 06:45:28 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
@ -261,7 +261,7 @@ window_spawn(struct window *w, const char *cmd, const char **envp)
|
||||
fatal("fcntl failed");
|
||||
if (fcntl(w->fd, F_SETFD, FD_CLOEXEC) == -1)
|
||||
fatal("fcntl failed");
|
||||
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user