handle sysnames in labels

This commit is contained in:
rsc 2005-01-30 16:27:45 +00:00
parent 0b22e9bd85
commit efe1241109
3 changed files with 37 additions and 11 deletions

View file

@ -1834,7 +1834,8 @@ int
label(Rune *sr, int n)
{
Rune *sl, *el, *er, *r;
char *p;
er = sr+n;
for(r=er-1; r>=sr; r--)
if(*r == '\007')
@ -1854,6 +1855,14 @@ label(Rune *sr, int n)
snprint(wdir, sizeof wdir, "%.*S", (el-1)-(sl+3), sl+3);
drawsetlabel(wdir);
/* remove trailing /-sysname if present */
p = strrchr(wdir, '/');
if(p && *(p+1) == '-'){
if(p == wdir)
p++;
*p = 0;
}
runemove(sl, el, er-el);
n -= (el-sl);
return n;

View file

@ -489,11 +489,11 @@ stdoutproc(void *v)
}
}
char wdir[256];
char wdir[512];
int
label(char *sr, int n)
{
char *sl, *el, *er, *r;
char *sl, *el, *er, *r, *p;
er = sr+n;
for(r=er-1; r>=sr; r--)
@ -503,8 +503,8 @@ label(char *sr, int n)
return n;
el = r+1;
if(el-sr > sizeof wdir)
sr = el - sizeof wdir;
if(el-sr > sizeof wdir - strlen(name) - 20)
sr = el - sizeof wdir - strlen(name) - 20;
for(sl=el-3; sl>=sr; sl--)
if(sl[0]=='\033' && sl[1]==']' && sl[2]==';')
break;
@ -512,7 +512,18 @@ label(char *sr, int n)
return n;
*r = 0;
snprint(wdir, sizeof wdir, "name %s/-%s\n0\n", sl+3, name);
/*
* add /-sysname if not present
*/
snprint(wdir, sizeof wdir, "name %s", sl+3);
p = strrchr(wdir, '/');
if(p==nil || *(p+1) != '-'){
p = wdir+strlen(wdir);
if(*(p-1) != '/')
*p++ = '/';
strcpy(p, name);
}
strcat(wdir, "\n0\n");
fswrite(ctlfd, wdir, strlen(wdir));
memmove(sl, el, er-el);