Index: head/sysutils/screen/Makefile =================================================================== --- head/sysutils/screen/Makefile (revision 515951) +++ head/sysutils/screen/Makefile (revision 515952) @@ -1,109 +1,109 @@ # Created by: Andrey Chernov # $FreeBSD$ PORTNAME= screen PORTVERSION= 4.7.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= sysutils MASTER_SITES= GNU \ ftp://ftp.gnu.org/gnu/screen/ \ ftp://gnu.mirror.iweb.com/screen/ \ http://gnu.mirror.iweb.com/screen/ \ http://mirror.sdunix.com/gnu/ \ ftp://mirrors.kernel.org/gnu/screen/ \ http://cschubert.com/distfiles/ \ LOCAL/cy MAINTAINER= cy@FreeBSD.org COMMENT= Multi-screen window manager LICENSE= GPLv3 OPTIONS_DEFINE= INFO NETHACK XTERM_256 SHOWENC SYSTEM_SCREENRC OPTIONS_DEFAULT= INFO NETHACK XTERM_256 SOCKETS SYSTEM_SCREENRC \ NCURSES_DEFAULT OPTIONS_SINGLE= IPC NCURSES OPTIONS_SINGLE_IPC= SOCKETS NAMED_PIPES OPTIONS_SINGLE_NCURSES= NCURSES_DEFAULT NCURSES_BASE NCURSES_PORT INFO_DESC= Build and install info documentation NETHACK_DESC= Enable nethack-style messages XTERM_256_DESC= Enable support for 256 colour xterm SHOWENC_DESC= Show encoding on the status line SOCKETS_DESC= Use new (4.2.1+) sockets for IPC (default) NAMED_PIPES_DESC= Use legacy (4.0.3) named pipes for IPC (override) SYSTEM_SCREENRC_DESC= Install system screenrc with helpful status line NCURSES_DEFAULT_DESC= Depend on ncurses (ports if installed, otherwise base) NCURSES_BASE_DESC= Depend on ncurses in base NCURSES_PORT_DESC= Depend on devel/ncurses in ports NCURSES_DEFAULT_USES= ncurses NCURSES_BASE_USES= ncurses:base NCURSES_PORT_USES= ncurses:port OPTIONS_SUB= USES= gmake cpe MAKE_ARGS+= WITH_MAN=1 CPE_VENDOR= gnu .include GNU_CONFIGURE= yes CFLAGS+= -I${NCURSESINC} LDFLAGS+= -L${NCURSESLIB} .if ${PORT_OPTIONS:MINFO} INFO= screen MAKE_ARGS+= WITH_INFO=1 USES+= makeinfo .endif # Enables support for 256 colour xterm. Note that you may need to # set up a custom termcap entry or .screenrc which modifies termcap # to contain the following: Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm # .if ${PORT_OPTIONS:MXTERM_256} CFLAGS+= -DCOLORS256 .endif .if ! ${PORT_OPTIONS:MNETHACK} CFLAGS+= -DNONETHACK .endif # show encoding on the status line via option "showenc" .if ${PORT_OPTIONS:MSHOWENC} EXTRA_PATCHES+= ${FILESDIR}/opt-showencoding .endif post-patch: @${RM} ${WRKSRC}/doc/screen.info* @${REINPLACE_CMD} -e 's|/dev/ptmx|/nonexistent|' ${WRKSRC}/configure # Bug 191029: Users can choose whether to use sockets or named pipes. # Choose sockets if you don't know what the difference is. # Choose named pipes if your environment is heterogeneous, # using both screen 4.0.3 and 4.2.1. # Bug 191017 post-configure-NAMED_PIPES-on: @${ECHO_CMD} '#define NAMEDPIPE 1' >> ${WRKSRC}/config.h @${ECHO_CMD} User selected named pipes override set. ETCDIR?= ${PREFIX}/etc post-install: @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/etc/etcscreenrc \ ${STAGEDIR}${EXAMPLESDIR}/screenrc.sample-1 ${INSTALL_DATA} ${FILESDIR}/screenrc.sample \ ${STAGEDIR}${EXAMPLESDIR}/screenrc.sample-2 @${MKDIR} ${STAGEDIR}${ETCDIR} .if ${PORT_OPTIONS:MSYSTEM_SCREENRC} ${INSTALL_DATA} ${FILESDIR}/screenrc.sample \ ${STAGEDIR}${ETCDIR}/screenrc.sample .else ${INSTALL_DATA} ${WRKSRC}/etc/etcscreenrc \ ${STAGEDIR}${ETCDIR}/screenrc.sample .endif .include Index: head/sysutils/screen/files/patch-extern.h =================================================================== --- head/sysutils/screen/files/patch-extern.h (nonexistent) +++ head/sysutils/screen/files/patch-extern.h (revision 515952) @@ -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)); Property changes on: head/sysutils/screen/files/patch-extern.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/screen/files/patch-fileio.c =================================================================== --- head/sysutils/screen/files/patch-fileio.c (nonexistent) +++ head/sysutils/screen/files/patch-fileio.c (revision 515952) @@ -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 Property changes on: head/sysutils/screen/files/patch-fileio.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/screen/files/patch-os.h =================================================================== --- head/sysutils/screen/files/patch-os.h (revision 515951) +++ head/sysutils/screen/files/patch-os.h (revision 515952) @@ -1,24 +1,33 @@ --- 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 #if defined(UTMPOK) || defined(BUGGYGETLOGIN) -# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux) +# if (defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)) || defined(__FreeBSD_version) # include -# define UTMPFILE UTMPX_FILE +# ifdef UTMPX_FILE /* GNU extension */ +# define UTMPFILE UTMPX_FILE +# endif # 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 * MSG_VERSION */ -#define MAXTERMLEN 32 +#define MAXTERMLEN 63 #define MAXLOGINLEN 256 Index: head/sysutils/screen/files/patch-term.c =================================================================== --- head/sysutils/screen/files/patch-term.c (nonexistent) +++ head/sysutils/screen/files/patch-term.c (revision 515952) @@ -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 }, Property changes on: head/sysutils/screen/files/patch-term.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/screen/files/patch-termcap.c =================================================================== --- head/sysutils/screen/files/patch-termcap.c (revision 515951) +++ head/sysutils/screen/files/patch-termcap.c (revision 515952) @@ -1,24 +1,114 @@ ---- 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; - kmapdef[0] = SaveStr(D_CKM); + kmapdef[0] = D_CKM ? SaveStr(D_CKM) : NULL; } /* "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) -#ifdef TERMINFO - D_CS0 = "\033(%p1%c"; -#else - D_CS0 = "\033(%."; -#endif + D_CS0 = "\033(%p1%c"; /* Old ncurses can't handle %. */ 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