Add host_short format, from Tiago Cunha.

This commit is contained in:
Nicholas Marriott 2013-05-31 19:46:42 +00:00
parent 9fb9f78e43
commit c30d60f7ae
2 changed files with 56 additions and 19 deletions

View File

@ -46,8 +46,8 @@ format_cmp(struct format_entry *fe1, struct format_entry *fe2)
return (strcmp(fe1->key, fe2->key)); return (strcmp(fe1->key, fe2->key));
} }
/* Single-character aliases. */ /* Single-character uppercase aliases. */
const char *format_aliases[26] = { const char *format_upper[] = {
NULL, /* A */ NULL, /* A */
NULL, /* B */ NULL, /* B */
NULL, /* C */ NULL, /* C */
@ -76,18 +76,52 @@ const char *format_aliases[26] = {
NULL /* Z */ NULL /* Z */
}; };
/* Single-character lowercase aliases. */
const char *format_lower[] = {
NULL, /* a */
NULL, /* b */
NULL, /* c */
NULL, /* d */
NULL, /* e */
NULL, /* f */
NULL, /* g */
"host_short", /* h */
NULL, /* i */
NULL, /* j */
NULL, /* k */
NULL, /* l */
NULL, /* m */
NULL, /* n */
NULL, /* o */
NULL, /* p */
NULL, /* q */
NULL, /* r */
NULL, /* s */
NULL, /* t */
NULL, /* u */
NULL, /* v */
NULL, /* w */
NULL, /* x */
NULL, /* y */
NULL /* z */
};
/* Create a new tree. */ /* Create a new tree. */
struct format_tree * struct format_tree *
format_create(void) format_create(void)
{ {
struct format_tree *ft; struct format_tree *ft;
char host[MAXHOSTNAMELEN]; char host[MAXHOSTNAMELEN], *ptr;
ft = xmalloc(sizeof *ft); ft = xmalloc(sizeof *ft);
RB_INIT(ft); RB_INIT(ft);
if (gethostname(host, sizeof host) == 0) if (gethostname(host, sizeof host) == 0) {
format_add(ft, "host", "%s", host); format_add(ft, "host", "%s", host);
if ((ptr = strrchr(host, '.')) != NULL)
*ptr = '\0';
format_add(ft, "host_short", "%s", host);
}
return (ft); return (ft);
} }
@ -109,7 +143,7 @@ format_free(struct format_tree *ft)
free(fe); free(fe);
} }
free (ft); free(ft);
} }
/* Add a key-value pair. */ /* Add a key-value pair. */
@ -230,6 +264,7 @@ format_expand(struct format_tree *ft, const char *fmt)
fmt++; fmt++;
ch = (u_char) *fmt++; ch = (u_char) *fmt++;
switch (ch) { switch (ch) {
case '{': case '{':
ptr = strchr(fmt, '}'); ptr = strchr(fmt, '}');
@ -242,22 +277,23 @@ format_expand(struct format_tree *ft, const char *fmt)
fmt += n + 1; fmt += n + 1;
continue; continue;
default: default:
if (ch >= 'A' && ch <= 'Z') { s = NULL;
s = format_aliases[ch - 'A']; if (ch >= 'A' && ch <= 'Z')
if (s != NULL) { s = format_upper[ch - 'A'];
n = strlen(s); else if (ch >= 'a' && ch <= 'z')
if (format_replace ( s = format_lower[ch - 'a'];
ft, s, n, &buf, &len, &off) != 0) if (s == NULL) {
break; while (len - off < 3) {
continue; buf = xrealloc(buf, 2, len);
len *= 2;
} }
buf[off++] = '#';
buf[off++] = ch;
continue;
} }
while (len - off < 3) { n = strlen(s);
buf = xrealloc(buf, 2, len); if (format_replace(ft, s, n, &buf, &len, &off) != 0)
len *= 2; break;
}
buf[off++] = '#';
buf[off++] = ch;
continue; continue;
} }

1
tmux.1
View File

@ -3056,6 +3056,7 @@ The following variables are available, where appropriate:
.It Li "history_limit" Ta "Maximum window history lines" .It Li "history_limit" Ta "Maximum window history lines"
.It Li "history_size" Ta "Size of history in bytes" .It Li "history_size" Ta "Size of history in bytes"
.It Li "host" Ta "Hostname of local host" .It Li "host" Ta "Hostname of local host"
.It Li "host_short" Ta "Hostname of local host (no domain name)"
.It Li "insert_flag" Ta "Pane insert flag" .It Li "insert_flag" Ta "Pane insert flag"
.It Li "keypad_cursor_flag" Ta "Pane keypad cursor flag" .It Li "keypad_cursor_flag" Ta "Pane keypad cursor flag"
.It Li "keypad_flag" Ta "Pane keypad flag" .It Li "keypad_flag" Ta "Pane keypad flag"