mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-27 10:33:09 +01:00
Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code
This commit is contained in:
commit
77603c4f2d
2
TODO
2
TODO
@ -132,5 +132,3 @@
|
||||
binding to a command that says "next key from $othertable" and so
|
||||
on. means -n can go away as well
|
||||
* customizable command aliases
|
||||
* get_cwd for cgywin
|
||||
|
||||
|
@ -53,6 +53,9 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
|
||||
psize = 0;
|
||||
pdata = NULL;
|
||||
|
||||
pb = NULL;
|
||||
buffer = -1;
|
||||
|
||||
if (args_has(args, 'b')) {
|
||||
buffer = args_strtonum(args, 'b', 0, INT_MAX, &cause);
|
||||
if (cause != NULL) {
|
||||
@ -65,13 +68,17 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
|
||||
cmdq_error(cmdq, "no buffer %d", buffer);
|
||||
return (CMD_RETURN_ERROR);
|
||||
}
|
||||
if (args_has(args, 'a')) {
|
||||
psize = pb->size;
|
||||
pdata = xmalloc(psize);
|
||||
memcpy(pdata, pb->data, psize);
|
||||
}
|
||||
} else
|
||||
buffer = -1;
|
||||
} else if (args_has(args, 'a')) {
|
||||
pb = paste_get_top(&global_buffers);
|
||||
if (pb != NULL)
|
||||
buffer = 0;
|
||||
}
|
||||
|
||||
if (args_has(args, 'a') && pb != NULL) {
|
||||
psize = pb->size;
|
||||
pdata = xmalloc(psize);
|
||||
memcpy(pdata, pb->data, psize);
|
||||
}
|
||||
|
||||
newsize = strlen(args->argv[0]);
|
||||
|
||||
|
@ -501,6 +501,10 @@ case "$host_os" in
|
||||
AC_MSG_RESULT(hpux)
|
||||
PLATFORM=hpux
|
||||
;;
|
||||
*cygwin*)
|
||||
AC_MSG_RESULT(cygwin)
|
||||
PLATFORM=cygwin
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(unknown)
|
||||
PLATFORM=unknown
|
||||
|
22
grid-view.c
22
grid-view.c
@ -59,8 +59,6 @@ grid_view_clear_history(struct grid *gd)
|
||||
struct grid_line *gl;
|
||||
u_int yy, last;
|
||||
|
||||
GRID_DEBUG(gd, "");
|
||||
|
||||
/* Find the last used line. */
|
||||
last = 0;
|
||||
for (yy = 0; yy < gd->sy; yy++) {
|
||||
@ -82,8 +80,6 @@ grid_view_clear_history(struct grid *gd)
|
||||
void
|
||||
grid_view_clear(struct grid *gd, u_int px, u_int py, u_int nx, u_int ny)
|
||||
{
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u, ny=%u", px, py, nx, ny);
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
@ -94,8 +90,6 @@ grid_view_clear(struct grid *gd, u_int px, u_int py, u_int nx, u_int ny)
|
||||
void
|
||||
grid_view_scroll_region_up(struct grid *gd, u_int rupper, u_int rlower)
|
||||
{
|
||||
GRID_DEBUG(gd, "rupper=%u, rlower=%u", rupper, rlower);
|
||||
|
||||
if (gd->flags & GRID_HISTORY) {
|
||||
grid_collect_history(gd);
|
||||
if (rupper == 0 && rlower == gd->sy - 1)
|
||||
@ -116,8 +110,6 @@ grid_view_scroll_region_up(struct grid *gd, u_int rupper, u_int rlower)
|
||||
void
|
||||
grid_view_scroll_region_down(struct grid *gd, u_int rupper, u_int rlower)
|
||||
{
|
||||
GRID_DEBUG(gd, "rupper=%u, rlower=%u", rupper, rlower);
|
||||
|
||||
rupper = grid_view_y(gd, rupper);
|
||||
rlower = grid_view_y(gd, rlower);
|
||||
|
||||
@ -130,8 +122,6 @@ grid_view_insert_lines(struct grid *gd, u_int py, u_int ny)
|
||||
{
|
||||
u_int sy;
|
||||
|
||||
GRID_DEBUG(gd, "py=%u, ny=%u", py, ny);
|
||||
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
sy = grid_view_y(gd, gd->sy);
|
||||
@ -145,8 +135,6 @@ grid_view_insert_lines_region(struct grid *gd, u_int rlower, u_int py, u_int ny)
|
||||
{
|
||||
u_int ny2;
|
||||
|
||||
GRID_DEBUG(gd, "rlower=%u, py=%u, ny=%u", rlower, py, ny);
|
||||
|
||||
rlower = grid_view_y(gd, rlower);
|
||||
|
||||
py = grid_view_y(gd, py);
|
||||
@ -162,8 +150,6 @@ grid_view_delete_lines(struct grid *gd, u_int py, u_int ny)
|
||||
{
|
||||
u_int sy;
|
||||
|
||||
GRID_DEBUG(gd, "py=%u, ny=%u", py, ny);
|
||||
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
sy = grid_view_y(gd, gd->sy);
|
||||
@ -178,8 +164,6 @@ grid_view_delete_lines_region(struct grid *gd, u_int rlower, u_int py, u_int ny)
|
||||
{
|
||||
u_int ny2;
|
||||
|
||||
GRID_DEBUG(gd, "rlower=%u, py=%u, ny=%u", rlower, py, ny);
|
||||
|
||||
rlower = grid_view_y(gd, rlower);
|
||||
|
||||
py = grid_view_y(gd, py);
|
||||
@ -195,8 +179,6 @@ grid_view_insert_cells(struct grid *gd, u_int px, u_int py, u_int nx)
|
||||
{
|
||||
u_int sx;
|
||||
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u", px, py, nx);
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
@ -214,8 +196,6 @@ grid_view_delete_cells(struct grid *gd, u_int px, u_int py, u_int nx)
|
||||
{
|
||||
u_int sx;
|
||||
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u", px, py, nx);
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
@ -229,8 +209,6 @@ grid_view_delete_cells(struct grid *gd, u_int px, u_int py, u_int nx)
|
||||
char *
|
||||
grid_view_string_cells(struct grid *gd, u_int px, u_int py, u_int nx)
|
||||
{
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u", px, py, nx);
|
||||
|
||||
px = grid_view_x(gd, px);
|
||||
py = grid_view_y(gd, py);
|
||||
|
||||
|
18
grid.c
18
grid.c
@ -151,8 +151,6 @@ grid_collect_history(struct grid *gd)
|
||||
{
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(gd, "");
|
||||
|
||||
if (gd->hsize < gd->hlimit)
|
||||
return;
|
||||
|
||||
@ -173,8 +171,6 @@ grid_scroll_history(struct grid *gd)
|
||||
{
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(gd, "");
|
||||
|
||||
yy = gd->hsize + gd->sy;
|
||||
gd->linedata = xrealloc(gd->linedata, yy + 1, sizeof *gd->linedata);
|
||||
memset(&gd->linedata[yy], 0, sizeof gd->linedata[yy]);
|
||||
@ -189,8 +185,6 @@ grid_scroll_history_region(struct grid *gd, u_int upper, u_int lower)
|
||||
struct grid_line *gl_history, *gl_upper, *gl_lower;
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(gd, "upper=%u, lower=%u", upper, lower);
|
||||
|
||||
/* Create a space for a new line. */
|
||||
yy = gd->hsize + gd->sy;
|
||||
gd->linedata = xrealloc(gd->linedata, yy + 1, sizeof *gd->linedata);
|
||||
@ -282,8 +276,6 @@ grid_clear(struct grid *gd, 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;
|
||||
|
||||
@ -319,8 +311,6 @@ grid_clear_lines(struct grid *gd, u_int py, u_int ny)
|
||||
struct grid_line *gl;
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(gd, "py=%u, ny=%u", py, ny);
|
||||
|
||||
if (ny == 0)
|
||||
return;
|
||||
|
||||
@ -342,8 +332,6 @@ grid_move_lines(struct grid *gd, u_int dy, u_int py, u_int ny)
|
||||
{
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(gd, "dy=%u, py=%u, ny=%u", dy, py, ny);
|
||||
|
||||
if (ny == 0 || py == dy)
|
||||
return;
|
||||
|
||||
@ -381,8 +369,6 @@ grid_move_cells(struct grid *gd, u_int dx, u_int px, u_int py, u_int nx)
|
||||
struct grid_line *gl;
|
||||
u_int xx;
|
||||
|
||||
GRID_DEBUG(gd, "dx=%u, px=%u, py=%u, nx=%u", dx, px, py, nx);
|
||||
|
||||
if (nx == 0 || px == dx)
|
||||
return;
|
||||
|
||||
@ -592,8 +578,6 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx,
|
||||
u_int xx;
|
||||
const struct grid_line *gl;
|
||||
|
||||
GRID_DEBUG(gd, "px=%u, py=%u, nx=%u", px, py, nx);
|
||||
|
||||
if (lastgc != NULL && *lastgc == NULL) {
|
||||
memcpy(&lastgc1, &grid_default_cell, sizeof lastgc1);
|
||||
*lastgc = &lastgc1;
|
||||
@ -661,8 +645,6 @@ grid_duplicate_lines(struct grid *dst, u_int dy, struct grid *src, u_int sy,
|
||||
struct grid_line *dstl, *srcl;
|
||||
u_int yy;
|
||||
|
||||
GRID_DEBUG(src, "dy=%u, sy=%u, ny=%u", dy, sy, ny);
|
||||
|
||||
if (dy + ny > dst->hsize + dst->sy)
|
||||
ny = dst->hsize + dst->sy - dy;
|
||||
if (sy + ny > src->hsize + src->sy)
|
||||
|
@ -142,7 +142,7 @@ input_key(struct window_pane *wp, int key)
|
||||
char *out;
|
||||
u_char ch;
|
||||
|
||||
log_debug2("writing key 0x%x", key);
|
||||
log_debug("writing key 0x%x", key);
|
||||
|
||||
/*
|
||||
* If this is a normal 7-bit key, just send it, with a leading escape
|
||||
@ -185,11 +185,11 @@ input_key(struct window_pane *wp, int key)
|
||||
break;
|
||||
}
|
||||
if (i == nitems(input_keys)) {
|
||||
log_debug2("key 0x%x missing", key);
|
||||
log_debug("key 0x%x missing", key);
|
||||
return;
|
||||
}
|
||||
dlen = strlen(ike->data);
|
||||
log_debug2("found key 0x%x: \"%s\"", key, ike->data);
|
||||
log_debug("found key 0x%x: \"%s\"", key, ike->data);
|
||||
|
||||
/* Prefix a \033 for escape. */
|
||||
if (key & KEYC_ESCAPE)
|
||||
|
116
log.c
116
log.c
@ -22,36 +22,28 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <syslog.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "tmux.h"
|
||||
|
||||
/* Log file, if needed. */
|
||||
FILE *log_file;
|
||||
FILE *log_file;
|
||||
|
||||
/* Debug level. */
|
||||
int log_level = 0;
|
||||
|
||||
void log_event_cb(int, const char *);
|
||||
void log_vwrite(const char *, va_list);
|
||||
__dead void log_vfatal(const char *, va_list);
|
||||
void log_event_cb(int, const char *);
|
||||
void log_vwrite(const char *, va_list);
|
||||
|
||||
/* Log callback for libevent. */
|
||||
void
|
||||
log_event_cb(unused int severity, const char *msg)
|
||||
{
|
||||
log_warnx("%s", msg);
|
||||
log_debug("%s", msg);
|
||||
}
|
||||
|
||||
/* Open logging to file. */
|
||||
void
|
||||
log_open(int level, const char *path)
|
||||
log_open(const char *path)
|
||||
{
|
||||
log_file = fopen(path, "w");
|
||||
if (log_file == NULL)
|
||||
return;
|
||||
log_level = level;
|
||||
|
||||
setlinebuf(log_file);
|
||||
event_set_log_callback(log_event_cb);
|
||||
@ -65,6 +57,7 @@ log_close(void)
|
||||
{
|
||||
if (log_file != NULL)
|
||||
fclose(log_file);
|
||||
log_file = NULL;
|
||||
|
||||
event_set_log_callback(NULL);
|
||||
}
|
||||
@ -86,24 +79,9 @@ log_vwrite(const char *msg, va_list ap)
|
||||
free(fmt);
|
||||
}
|
||||
|
||||
/* Log a warning with error string. */
|
||||
/* Log a debug message. */
|
||||
void printflike1
|
||||
log_warn(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *fmt;
|
||||
|
||||
va_start(ap, msg);
|
||||
if (asprintf(&fmt, "%s: %s", msg, strerror(errno)) == -1)
|
||||
exit(1);
|
||||
log_vwrite(fmt, ap);
|
||||
free(fmt);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* Log a warning. */
|
||||
void printflike1
|
||||
log_warnx(const char *msg, ...)
|
||||
log_debug(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
@ -112,82 +90,30 @@ log_warnx(const char *msg, ...)
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* Log an informational message. */
|
||||
void printflike1
|
||||
log_info(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (log_level > -1) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
/* Log a debug message. */
|
||||
void printflike1
|
||||
log_debug(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (log_level > 0) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
/* Log a debug message at level 2. */
|
||||
void printflike1
|
||||
log_debug2(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (log_level > 1) {
|
||||
va_start(ap, msg);
|
||||
log_vwrite(msg, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
/* Log a critical error, with error string if necessary, and die. */
|
||||
__dead void
|
||||
log_vfatal(const char *msg, va_list ap)
|
||||
{
|
||||
char *fmt;
|
||||
|
||||
if (errno != 0) {
|
||||
if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
|
||||
exit(1);
|
||||
log_vwrite(fmt, ap);
|
||||
} else {
|
||||
if (asprintf(&fmt, "fatal: %s", msg) == -1)
|
||||
exit(1);
|
||||
log_vwrite(fmt, ap);
|
||||
}
|
||||
free(fmt);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Log a critical error, with error string, and die. */
|
||||
/* Log a critical error with error string and die. */
|
||||
__dead void printflike1
|
||||
log_fatal(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *fmt;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, msg);
|
||||
log_vfatal(msg, ap);
|
||||
if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
|
||||
exit(1);
|
||||
log_vwrite(fmt, ap);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Log a critical error and die. */
|
||||
__dead void printflike1
|
||||
log_fatalx(const char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *fmt;
|
||||
va_list ap;
|
||||
|
||||
errno = 0;
|
||||
va_start(ap, msg);
|
||||
log_vfatal(msg, ap);
|
||||
if (asprintf(&fmt, "fatal: %s", msg) == -1)
|
||||
exit(1);
|
||||
log_vwrite(fmt, ap);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -80,6 +80,13 @@ const struct options_table_entry server_options_table[] = {
|
||||
.default_num = 0
|
||||
},
|
||||
|
||||
{ .name = "message-limit",
|
||||
.type = OPTIONS_TABLE_NUMBER,
|
||||
.minimum = 0,
|
||||
.maximum = INT_MAX,
|
||||
.default_num = 100
|
||||
},
|
||||
|
||||
{ .name = "quiet",
|
||||
.type = OPTIONS_TABLE_FLAG,
|
||||
.default_num = 0 /* overridden in main() */
|
||||
@ -234,13 +241,6 @@ const struct options_table_entry session_options_table[] = {
|
||||
.style = "message-style"
|
||||
},
|
||||
|
||||
{ .name = "message-limit",
|
||||
.type = OPTIONS_TABLE_NUMBER,
|
||||
.minimum = 0,
|
||||
.maximum = INT_MAX,
|
||||
.default_num = 20
|
||||
},
|
||||
|
||||
{ .name = "message-style",
|
||||
.type = OPTIONS_TABLE_STYLE,
|
||||
.default_str = "bg=yellow,fg=black"
|
||||
|
88
osdep-cygwin.c
Normal file
88
osdep-cygwin.c
Normal file
@ -0,0 +1,88 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <event.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "tmux.h"
|
||||
|
||||
char *
|
||||
osdep_get_name(int fd, unused char *tty)
|
||||
{
|
||||
FILE *f;
|
||||
char *path, *buf;
|
||||
size_t len;
|
||||
int ch;
|
||||
pid_t pgrp;
|
||||
|
||||
if ((pgrp = tcgetpgrp(fd)) == -1)
|
||||
return (NULL);
|
||||
|
||||
xasprintf(&path, "/proc/%lld/cmdline", (long long) pgrp);
|
||||
if ((f = fopen(path, "r")) == NULL) {
|
||||
free(path);
|
||||
return (NULL);
|
||||
}
|
||||
free(path);
|
||||
|
||||
len = 0;
|
||||
buf = NULL;
|
||||
while ((ch = fgetc(f)) != EOF) {
|
||||
if (ch == '\0')
|
||||
break;
|
||||
buf = xrealloc(buf, 1, len + 2);
|
||||
buf[len++] = ch;
|
||||
}
|
||||
if (buf != NULL)
|
||||
buf[len] = '\0';
|
||||
|
||||
fclose(f);
|
||||
return (buf);
|
||||
}
|
||||
|
||||
char *
|
||||
osdep_get_cwd(int fd)
|
||||
{
|
||||
static char target[MAXPATHLEN + 1];
|
||||
char *path;
|
||||
pid_t pgrp;
|
||||
ssize_t n;
|
||||
|
||||
if ((pgrp = tcgetpgrp(fd)) == -1)
|
||||
return (NULL);
|
||||
|
||||
xasprintf(&path, "/proc/%lld/cwd", (long long) pgrp);
|
||||
n = readlink(path, target, MAXPATHLEN);
|
||||
free(path);
|
||||
if (n > 0) {
|
||||
target[n] = '\0';
|
||||
return (target);
|
||||
}
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
struct event_base *
|
||||
osdep_event_init(void)
|
||||
{
|
||||
return (event_init());
|
||||
}
|
6
status.c
6
status.c
@ -655,7 +655,6 @@ void printflike2
|
||||
status_message_set(struct client *c, const char *fmt, ...)
|
||||
{
|
||||
struct timeval tv;
|
||||
struct session *s = c->session;
|
||||
struct message_entry *msg;
|
||||
va_list ap;
|
||||
int delay;
|
||||
@ -673,10 +672,7 @@ status_message_set(struct client *c, const char *fmt, ...)
|
||||
msg->msg_time = time(NULL);
|
||||
msg->msg = xstrdup(c->message_string);
|
||||
|
||||
if (s == NULL)
|
||||
limit = 0;
|
||||
else
|
||||
limit = options_get_number(&s->options, "message-limit");
|
||||
limit = options_get_number(&global_options, "message-limit");
|
||||
if (ARRAY_LENGTH(&c->message_log) > limit) {
|
||||
limit = ARRAY_LENGTH(&c->message_log) - limit;
|
||||
for (i = 0; i < limit; i++) {
|
||||
|
10
tmux.1
10
tmux.1
@ -782,7 +782,7 @@ Show client messages or server information.
|
||||
Any messages displayed on the status line are saved in a per-client message
|
||||
log, up to a maximum of the limit set by the
|
||||
.Ar message-limit
|
||||
session option for the session attached to that client.
|
||||
server option.
|
||||
With
|
||||
.Fl t ,
|
||||
display the log for
|
||||
@ -2138,6 +2138,10 @@ passed through to applications running in
|
||||
.Nm .
|
||||
Attached clients should be detached and attached again after changing this
|
||||
option.
|
||||
.It Ic message-limit Ar number
|
||||
Set the number of error or information messages to save in the message log for
|
||||
each client.
|
||||
The default is 100.
|
||||
.It Xo Ic quiet
|
||||
.Op Ic on | off
|
||||
.Xc
|
||||
@ -2359,10 +2363,6 @@ With the
|
||||
flag to the
|
||||
.Ic set-option
|
||||
command the new style is added otherwise the existing style is replaced.
|
||||
.It Ic message-limit Ar number
|
||||
Set the number of error or information messages to save in the message log for
|
||||
each client.
|
||||
The default is 20.
|
||||
.It Ic message-style Ar style
|
||||
Set status line message style.
|
||||
For how to specify
|
||||
|
2
tmux.c
2
tmux.c
@ -73,7 +73,7 @@ logfile(const char *name)
|
||||
|
||||
if (debug_level > 0) {
|
||||
xasprintf(&path, "tmux-%s-%ld.log", name, (long) getpid());
|
||||
log_open(debug_level, path);
|
||||
log_open(path);
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
|
16
tmux.h
16
tmux.h
@ -660,16 +660,6 @@ struct utf8_data {
|
||||
u_int width;
|
||||
};
|
||||
|
||||
/* Grid output. */
|
||||
#if defined(DEBUG) && \
|
||||
((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__GNUC__) && __GNUC__ >= 3))
|
||||
#define GRID_DEBUG(gd, fmt, ...) log_debug2("%s: (sx=%u, sy=%u, hsize=%u) " \
|
||||
fmt, __func__, (gd)->sx, (gd)->sy, (gd)->hsize, ## __VA_ARGS__)
|
||||
#else
|
||||
#define GRID_DEBUG(...)
|
||||
#endif
|
||||
|
||||
/* Grid attributes. */
|
||||
#define GRID_ATTR_BRIGHT 0x1
|
||||
#define GRID_ATTR_DIM 0x2
|
||||
@ -2340,13 +2330,9 @@ char *osdep_get_cwd(int);
|
||||
struct event_base *osdep_event_init(void);
|
||||
|
||||
/* log.c */
|
||||
void log_open(int, const char *);
|
||||
void log_open(const char *);
|
||||
void log_close(void);
|
||||
void printflike1 log_warn(const char *, ...);
|
||||
void printflike1 log_warnx(const char *, ...);
|
||||
void printflike1 log_info(const char *, ...);
|
||||
void printflike1 log_debug(const char *, ...);
|
||||
void printflike1 log_debug2(const char *, ...);
|
||||
__dead void printflike1 log_fatal(const char *, ...);
|
||||
__dead void printflike1 log_fatalx(const char *, ...);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user