⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpm.screen.unified.diff

📁 gpm-1.20.0.tar.gz
💻 DIFF
字号:
diff -uwr gpm-1.19.3.orig/liblow.c gpm-1.19.3/liblow.c--- gpm-1.19.3.orig/liblow.c	Tue Jul 18 14:06:06 2000+++ gpm-1.19.3/liblow.c	Fri Dec  1 00:20:10 2000@@ -77,7 +77,8 @@ unsigned char    _gpm_buf[6*sizeof(short)]; unsigned short * _gpm_arg = (unsigned short *)_gpm_buf +1; -int gpm_consolefd=-1;  /* used to invoke ioctl() */+enum { GPM_FD_INVALID = -1, GPM_FD_SCREEN = -2 };+int gpm_consolefd = GPM_FD_INVALID;  /* used to invoke ioctl() */ int gpm_morekeys=0; /*-------------------------------------------------------------------*/ static inline int putdata(int where,  Gpm_Connect *what)@@ -114,7 +115,14 @@       SIG_DFL != gpm_saved_winch_hook.sa_handler) {     gpm_saved_winch_hook.sa_handler(signum);   } /*if*/-  if (ioctl(gpm_consolefd, TIOCGWINSZ, &win) == -1) {+  if (GPM_FD_SCREEN == gpm_consolefd) {+    /* TODO: */+    win.ws_col = 80;+    win.ws_row = 25;+  } else if (gpm_consolefd <= 0)+      /* safety check */+      return;+  else if (ioctl(gpm_consolefd, TIOCGWINSZ, &win) == -1) {     return;   } /*if*/   if (!win.ws_col || !win.ws_row) {@@ -177,7 +185,7 @@ /*-------------------------------------------------------------------*/ int Gpm_Open(Gpm_Connect *conn, int flag) {-  char tty[32];+  char tty[64];   char *term;   int i;   struct sockaddr_un addr;@@ -236,13 +244,40 @@           if (!t) goto err;           strcpy(tty,t);           if (strncmp(tty,"/dev/tty",8) || !isdigit(tty[8]))+            {+              char* sty = getenv("STY");+              /* as set by SCREEN, e.g+               * STY=417.tty1.kristine+               *                 ^hostname+               */+              if (sty)+                {+                  /* STY is set. Check, if it has a valid form */+                  int n, vc;+                  if (strlen(sty) >= sizeof tty+                      || 3 != sscanf(sty, "%d.tty%d.%s", &n, &vc, tty))+                    goto err;+                  else+                    {+                      /* we're inside a SCREEN session. Don't connect to+                       * the tty as below. TODO: how can we get lines+                       * and columns from SCREEN ? */+                      gpm_consolefd = GPM_FD_SCREEN;+                      conn->vc = vc;+                      win.ws_col = 80;+                      win.ws_row = 25;+                    }+                }+              else             goto err;+            }+          else           conn->vc=atoi(tty+8);         }       else /* a default handler -- use console */         sprintf(tty,"/dev/tty0"); -      if (gpm_consolefd==-1)+      if (gpm_consolefd == GPM_FD_INVALID) /* NOT called for SCREEN */         if ((gpm_consolefd=open(tty,O_WRONLY))<0)           {             gpm_debug_log(LOG_ERR,"%s: %s",tty,strerror(errno));@@ -254,6 +289,7 @@    /*....................................... Get screen dimensions */ +  if (gpm_consolefd != GPM_FD_SCREEN) /* NOT called for SCREEN */   ioctl(gpm_consolefd, TIOCGWINSZ, &win);    if (!win.ws_col || !win.ws_row)@@ -395,7 +431,7 @@   sigaction(SIGWINCH, &gpm_saved_winch_hook, 0); #endif   close(gpm_consolefd);-  gpm_consolefd=-1;+  gpm_consolefd = GPM_FD_INVALID;   return 0; } diff -uwr gpm-1.19.3.orig/special.c gpm-1.19.3/special.c--- gpm-1.19.3.orig/special.c	Mon Jan 17 22:34:00 2000+++ gpm-1.19.3/special.c	Fri Dec  1 00:19:05 2000@@ -26,6 +26,7 @@  /* This file is compiled conditionally, see the Makefile */ +#include <linux/limits.h> /* OPEN_MAX */ #include <stdio.h> #include <stdlib.h> #include <string.h>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -