diff options
author | Cy Schubert <cy@FreeBSD.org> | 2019-10-29 04:23:45 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2019-10-29 04:23:45 +0000 |
commit | 16d12e00c30bff88d386f51df2b69104fd739b4a (patch) | |
tree | 3a7b16ee2afa84816d711e460fae98655289ba98 | |
parent | f2704d451f794db7bdcbce966ef6ec02377e5246 (diff) |
Notes
-rw-r--r-- | sysutils/screen/Makefile | 2 | ||||
-rw-r--r-- | sysutils/screen/files/patch-extern.h | 10 | ||||
-rw-r--r-- | sysutils/screen/files/patch-fileio.c | 14 | ||||
-rw-r--r-- | sysutils/screen/files/patch-os.h | 11 | ||||
-rw-r--r-- | sysutils/screen/files/patch-term.c | 10 | ||||
-rw-r--r-- | sysutils/screen/files/patch-termcap.c | 98 |
6 files changed, 139 insertions, 6 deletions
diff --git a/sysutils/screen/Makefile b/sysutils/screen/Makefile index d292feff62ae..3881bb7920be 100644 --- a/sysutils/screen/Makefile +++ b/sysutils/screen/Makefile @@ -3,7 +3,7 @@ PORTNAME= screen PORTVERSION= 4.7.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= sysutils MASTER_SITES= GNU \ ftp://ftp.gnu.org/gnu/screen/ \ diff --git a/sysutils/screen/files/patch-extern.h b/sysutils/screen/files/patch-extern.h new file mode 100644 index 000000000000..6c35526bfa98 --- /dev/null +++ b/sysutils/screen/files/patch-extern.h @@ -0,0 +1,10 @@ +--- extern.h.orig 2019-10-01 15:08:00.000000000 -0700 ++++ extern.h 2019-10-28 19:37:41.584313000 -0700 +@@ -235,6 +235,7 @@ + /* termcap.c */ + extern int InitTermcap __P((int, int)); + extern char *MakeTermcap __P((int)); ++extern void DumpTermcap __P((int, FILE *)); + extern char *gettermcapstring __P((char *)); + #ifdef MAPKEYS + extern int remap __P((int, int)); diff --git a/sysutils/screen/files/patch-fileio.c b/sysutils/screen/files/patch-fileio.c new file mode 100644 index 000000000000..a8778be0a4dd --- /dev/null +++ b/sysutils/screen/files/patch-fileio.c @@ -0,0 +1,14 @@ +--- fileio.c.orig 2019-10-01 15:08:00.000000000 -0700 ++++ fileio.c 2019-10-28 19:37:41.585000000 -0700 +@@ -480,10 +480,7 @@ + break; + + case DUMP_TERMCAP: +- if ((p = index(MakeTermcap(fore->w_aflag), '=')) != NULL) { +- fputs(++p, f); +- putc('\n', f); +- } ++ DumpTermcap(fore->w_aflag, f); + break; + + #ifdef COPY_PASTE diff --git a/sysutils/screen/files/patch-os.h b/sysutils/screen/files/patch-os.h index f0de818390cb..8d23d910040b 100644 --- a/sysutils/screen/files/patch-os.h +++ b/sysutils/screen/files/patch-os.h @@ -1,5 +1,5 @@ --- os.h.orig 2019-10-01 15:08:00.000000000 -0700 -+++ os.h 2019-10-08 04:49:54.436485000 -0700 ++++ os.h 2019-10-28 19:37:41.585526000 -0700 @@ -250,9 +250,11 @@ #endif @@ -14,6 +14,15 @@ # define utmp utmpx # define getutent getutxent # define getutid getutxid +@@ -507,7 +509,7 @@ + */ + + #ifndef TERMCAP_BUFSIZE +-# define TERMCAP_BUFSIZE 2048 ++# define TERMCAP_BUFSIZE 1023 + #endif + + #ifndef MAXPATHLEN @@ -524,6 +526,6 @@ /* Changing those you won't be able to attach to your old sessions * when changing those values in official tree don't forget to bump diff --git a/sysutils/screen/files/patch-term.c b/sysutils/screen/files/patch-term.c new file mode 100644 index 000000000000..fc56e45fd1cc --- /dev/null +++ b/sysutils/screen/files/patch-term.c @@ -0,0 +1,10 @@ +--- term.c.orig 2019-10-01 15:08:00.000000000 -0700 ++++ term.c 2019-10-28 19:37:41.585983000 -0700 +@@ -197,6 +197,7 @@ + { "F1", T_STR }, KMAPDEF("\033[23~") + { "F2", T_STR }, KMAPDEF("\033[24~") + /* extra keys for vt220 (David.Leonard@it.uq.edu.au) */ ++/* define T_FEXTRA */ + { "F3", T_STR }, + { "F4", T_STR }, + { "F5", T_STR }, diff --git a/sysutils/screen/files/patch-termcap.c b/sysutils/screen/files/patch-termcap.c index 716ad01eb970..290429f8acce 100644 --- a/sysutils/screen/files/patch-termcap.c +++ b/sysutils/screen/files/patch-termcap.c @@ -1,6 +1,22 @@ ---- termcap.c.orig 2019-10-01 22:08:00 UTC -+++ termcap.c -@@ -227,7 +227,7 @@ int he; +--- termcap.c.orig 2019-10-01 15:08:00.000000000 -0700 ++++ termcap.c 2019-10-28 19:37:41.586957000 -0700 +@@ -75,11 +75,10 @@ + + char *extra_incap, *extra_outcap; + +-static const char TermcapConst[] = "\\\n\ +-\t:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:\\\n\ +-\t:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:\\\n\ +-\t:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\\\n\ +-\t:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:"; ++static const char TermcapConst[] = "DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:\ ++UP=\\E[%dA:bs:bt=\\E[Z:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:\ ++ct=\\E[3g:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\ ++le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:"; + + char * + gettermcapstring(s) +@@ -227,7 +226,7 @@ (D_CKM && (InStr(D_CKM, "\033[M") || InStr(D_CKM, "\033[<")))) { D_CXT = 1; @@ -9,7 +25,7 @@ } /* "be" seems to be standard for xterms... */ if (D_CXT) -@@ -362,11 +362,7 @@ int he; +@@ -362,11 +361,7 @@ if (D_CG0) { if (D_CS0 == 0) @@ -22,3 +38,77 @@ if (D_CE0 == 0) D_CE0 = "\033(B"; D_AC = 0; +@@ -827,21 +822,13 @@ + char *s; + { + register int n; +- +- if (tcLineLen + (n = strlen(s)) > 55 && Termcaplen < TERMCAP_BUFSIZE - 4 - 1) +- { +- strcpy(Termcap + Termcaplen, "\\\n\t:"); +- Termcaplen += 4; +- tcLineLen = 0; +- } ++ n=strlen(s); + if (Termcaplen + n < TERMCAP_BUFSIZE - 1) + { + strcpy(Termcap + Termcaplen, s); + Termcaplen += n; + tcLineLen += n; + } +- else +- Panic(0, "TERMCAP overflow - sorry."); + } + + /* +@@ -1077,6 +1064,12 @@ + { + if (i >= T_KEYPAD) /* don't put keypad codes in TERMCAP */ + continue; /* - makes it too big */ ++#if (TERMCAP_BUF < 1024) ++ if (i >= T_FEXTRA && i < T_BACKTAB) /* also skip extra vt220 keys */ ++ continue; ++ if (i > T_BACKTAB && i < T_NAVIGATE) /* more vt220 keys */ ++ continue; ++#endif + if (i >= T_CURSOR && i < T_OCAPS) + { + act = &umtab[i - (T_CURSOR - T_OCAPS + T_CAPS)]; +@@ -1129,6 +1122,37 @@ + } + debug("MakeTermcap: end\n"); + return Termcap; ++} ++ ++#define TERMCAP_MAX_WIDTH 63 ++void ++DumpTermcap(aflag, f) ++int aflag; ++FILE *f; ++{ ++ register const char *p, *pe; ++ int n, col=0; ++ ++ if ((p = index(MakeTermcap(aflag), '=')) == NULL) ++ return; ++ p++; ++ debug1("DumpTermcap: '%s'\n", p); ++ /* write termcap entry with wrapping */ ++ while((pe = index(p, ':'))) ++ { ++ n = pe - p + 1; ++ if((col > 8) && ((col + n) > TERMCAP_MAX_WIDTH)) ++ { ++ fwrite("\\\n\t:", 1, 4, f); ++ col = 8; ++ } ++ fwrite(p, 1, n, f); ++ col += n; ++ p = ++pe; ++ } ++ if(*p) ++ fwrite(p, 1, strlen(p), f); ++ fputc('\n', f); + } + + static void |