diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:56:41 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 20:56:41 +0100 |
commit | d87262dd706fec50cd150aab3e93883b6337466d (patch) | |
tree | 246b44c33ad7a57550430b0a60fa0df86a3c9e68 /app-i18n/canfep/files | |
parent | 71bc00c87bba1ce31de0dac6c3b7fd1aee6917fc (diff) |
gentoo resync : 14.07.2018
Diffstat (limited to 'app-i18n/canfep/files')
-rw-r--r-- | app-i18n/canfep/files/canfep-posix-pty.patch | 67 | ||||
-rw-r--r-- | app-i18n/canfep/files/canfep-termcap.patch | 266 |
2 files changed, 0 insertions, 333 deletions
diff --git a/app-i18n/canfep/files/canfep-posix-pty.patch b/app-i18n/canfep/files/canfep-posix-pty.patch deleted file mode 100644 index caa451232ef4..000000000000 --- a/app-i18n/canfep/files/canfep-posix-pty.patch +++ /dev/null @@ -1,67 +0,0 @@ -https://bugs.gentoo.org/show_bug.cgi?id=212709 - -Author: OKUMURA N. Shin-ya <oku.ns@dream.com> - ---- a/pty.C -+++ b/pty.C -@@ -257,6 +257,23 @@ - } - } - -+#if defined(_POSIX_C_SOURCE) -+ // BSD pty が開けないので、POSIX の方法を試す -+ if ((master = posix_openpt(O_RDWR)) >= 0) { -+ if (grantpt(master) == 0 && unlockpt(master) == 0) { -+ // マスタデバイス名は固定 -+ strcpy(line, "/dev/ptmx"); -+ tcgetattr(0, &tt); -+ tt.c_iflag &= ~ISTRIP; -+ ioctl(0, TIOCGWINSZ, (char*) &win); -+ return; -+ } -+ close(master); -+ } else { -+ perror("/dev/ptmx"); -+ } -+#endif // _POSIX_C_SOURCE -+ - printf("Out of pty's\n"); - fail(); - } -@@ -265,12 +282,36 @@ - void - Pty::getslave() - { -+#if defined(_POSIX_C_SOURCE) -+ // マスタデバイスが POSIX 方式の場合 -+ if (strcmp(line, "/dev/ptmx") == 0) { -+ char *slave_devname = ptsname(master); -+ if (slave_devname == NULL) { -+ perror("ptsname"); -+ fail(); -+ } -+ slave = open(slave_devname, O_RDWR); -+ if (slave < 0) { -+ perror(slave_devname); -+ fail(); -+ } -+ strcpy(line, slave_devname); -+ } else { -+ line[strlen("/dev/")] = 't'; -+ slave = open(line, O_RDWR); -+ if (slave < 0) { -+ perror(line); -+ fail(); -+ } -+ } -+#else // ! _POSIX_C_SOURCE - line[strlen("/dev/")] = 't'; - slave = open(line, O_RDWR); - if (slave < 0) { - perror(line); - fail(); - } -+#endif // _POSIX_C_SOURCE - tcsetattr(slave, TCSAFLUSH, &tt); - if (!hs) - win.ws_row--; diff --git a/app-i18n/canfep/files/canfep-termcap.patch b/app-i18n/canfep/files/canfep-termcap.patch deleted file mode 100644 index afd215b07e79..000000000000 --- a/app-i18n/canfep/files/canfep-termcap.patch +++ /dev/null @@ -1,266 +0,0 @@ ---- a/pty.C -+++ b/pty.C -@@ -4,9 +4,18 @@ - int Pty::child = 0; - struct termios Pty::tt; - int Pty::wfd = 0; -+char Pty::buf[] = ""; -+char Pty::funcstr[] = ""; - int Pty::hs = 0; -+char* Pty::so = 0; -+char* Pty::se = 0; -+char* Pty::us = 0; -+char* Pty::ue = 0; -+char* Pty::sc = 0; -+char* Pty::rc = 0; - char* Pty::ce = 0; - char* Pty::ts = 0; -+char* Pty::fs = 0; - char* Pty::ds = 0; - char Pty::endstr[] = ""; - char Pty::endmsg[] = ""; -@@ -14,88 +23,7 @@ - // コンストラクタだよん - Pty::Pty(int ac, char** av, char* amsg, char* emsg) - { -- // 環境変数 TERM のエントリを取得 -- char buff[BUFSIZ]; -- char* term = getenv("TERM"); -- if (!term) -- term = "vt100"; -- int ret = tgetent(buff, term); -- if (ret != 1) { -- tgetent(buff, "vt100"); -- putenv("TERM=vt100"); -- } -- -- // termcap から装飾用のエントリを取ってくる -- char funcstr[BUFSIZ]; -- char* pt = funcstr; -- -- // スタンドアウト (反転) -- so = tgetstr("so", &pt); -- adjstr(so); -- se = tgetstr("se", &pt); -- adjstr(se); -- -- // アンダーライン (下線) -- us = tgetstr("us", &pt); -- adjstr(us); -- ue = tgetstr("ue", &pt); -- adjstr(ue); -- -- // カーソル位置の保存,保存した位置への復帰 -- sc = tgetstr("sc", &pt); -- adjstr(sc); -- rc = tgetstr("rc", &pt); -- adjstr(rc); -- -- // カーソル位置から行の最後までを削除する -- ce = tgetstr("ce", &pt); -- adjstr(ce); -- -- // ステータスラインを持っているかどうか -- hs = tgetflag("hs"); -- -- // kon と jfbterm ではステータスラインを使わない -- if (strcmp(term, "kon") == 0) -- hs = 0; -- if (strcmp(term, "jfbterm") == 0) -- hs = 0; -- -- // ステータスラインへ移動,戻る -- if (hs) { -- ts = tgoto(tgetstr("ts", &pt), 0, 0); -- adjstr(ts); -- fs = tgetstr("fs", &pt); -- adjstr(fs); -- ds = tgetstr("ds", &pt); -- adjstr(ds); -- if (ds) { -- strcat(endstr, ds); -- strcat(endstr, ce); -- } -- } -- else { -- char* cs = tgoto(tgetstr("cs", &pt), tgetnum("li") - 2, 0); -- adjstr(cs); -- if (cs) { -- write(1, ce, strlen(ce)); -- write(1, cs, strlen(cs)); -- } -- char* cl = tgetstr("cl", &pt); -- adjstr(cl); -- if (cl) { -- write(1, cl, strlen(cl)); -- strcat(endstr, cl); -- } -- ds = tgoto(tgetstr("cs", &pt), tgetnum("li") - 1, 0); -- adjstr(ds); -- if (ds) { -- strcat(endstr, ds); -- strcat(endstr, ce); -- } -- ts = tgoto(tgetstr("cm", &pt), 0, tgetnum("li") - 1); -- adjstr(ts); -- fs = rc; -- } -+ gettermcap(); - - // 開始と終了のメッセージ - if (amsg && ac == 1) -@@ -209,21 +137,75 @@ - done(); - } - --// termcap エントリからパディングを削除する - void --Pty::adjstr(char* str) -+Pty::gettermcap() - { -- char* sp = strdup(str); -- char* p = sp; -- while (*p != '\0') { -- if (strncmp(p, "$<", 2) == 0) { -- while (*p != '>') -- p++; -- *p = '\0'; -+ // 環境変数 TERM のエントリを取得 -+ char* term = getenv("TERM"); -+ if (!term) -+ term = "vt100"; -+ int ret = tgetent(buf, term); -+ if (ret != 1) { -+ tgetent(buf, "vt100"); -+ putenv("TERM=vt100"); -+ } -+ -+ // termcap から装飾用のエントリを取ってくる -+ char* pt = funcstr; -+ -+ // スタンドアウト (反転) -+ so = tgetstr("so", &pt); -+ se = tgetstr("se", &pt); -+ -+ // アンダーライン (下線) -+ us = tgetstr("us", &pt); -+ ue = tgetstr("ue", &pt); -+ -+ // カーソル位置の保存,保存した位置への復帰 -+ sc = tgetstr("sc", &pt); -+ rc = tgetstr("rc", &pt); -+ -+ // カーソル位置から行の最後までを削除する -+ ce = tgetstr("ce", &pt); -+ -+ // ステータスラインを持っているかどうか -+ hs = tgetflag("hs"); -+ -+ // kon と jfbterm ではステータスラインを使わない -+ if (strcmp(term, "kon") == 0) -+ hs = 0; -+ if (strcmp(term, "jfbterm") == 0) -+ hs = 0; -+ -+ // ステータスラインへ移動,戻る -+ if (hs) { -+ ts = tgoto(tgetstr("ts", &pt), 0, 0); -+ fs = tgetstr("fs", &pt); -+ ds = tgetstr("ds", &pt); -+ if (ds) { -+ strcat(endstr, ds); -+ strcat(endstr, ce); - } -- *str++ = *p++; - } -- free(sp); -+ else { -+ char* cs = tgoto(tgetstr("cs", &pt), tgetnum("li") - 2, 0); -+ if (cs) { -+ write(1, ce, strlen(ce)); -+ write(1, cs, strlen(cs)); -+ } -+ char* cl = tgetstr("cl", &pt); -+ if (cl) { -+ write(1, cl, strlen(cl)); -+ strcat(endstr, cl); -+ } -+ ds = tgoto(tgetstr("cs", &pt), tgetnum("li") - 1, 0); -+ if (ds) { -+ strcat(endstr, ds); -+ strcat(endstr, ce); -+ } -+ ts = tgoto(tgetstr("cm", &pt), 0, tgetnum("li") - 1); -+ fs = rc; -+ } - } - - // マスタデバイスを取る -@@ -327,34 +309,7 @@ - { - signal(SIGWINCH, SIG_IGN); - -- // ステータスラインが使えない場合は cs/ds/ts を取り直す -- if (!hs) { -- char buff[BUFSIZ]; -- char* term = getenv("TERM"); -- tgetent(buff, term); -- char funcstr[BUFSIZ]; -- char* pt = funcstr; -- char* cs = tgoto(tgetstr("cs", &pt), tgetnum("li") - 2, 0); -- adjstr(cs); -- if (cs) { -- write(1, ce, strlen(ce)); -- write(1, cs, strlen(cs)); -- } -- char* cl = tgetstr("cl", &pt); -- adjstr(cl); -- if (cl) { -- write(1, cl, strlen(cl)); -- strcpy(endstr, cl); -- } -- ds = tgoto(tgetstr("cs", &pt), tgetnum("li") - 1, 0); -- adjstr(ds); -- if (ds) { -- strcat(endstr, ds); -- strcat(endstr, ce); -- } -- ts = tgoto(tgetstr("cm", &pt), 0, tgetnum("li") - 1); -- adjstr(ts); -- } -+ gettermcap(); - - // ウィンドウのサイズを設定し直す (stty -a の 行数/桁数 等) - struct winsize win; ---- a/pty.H -+++ b/pty.H -@@ -50,18 +50,21 @@ - int rfd; - static int wfd; - private: -- static void adjstr(char* str); -+ static char buf[BUFSIZ]; -+ static char funcstr[BUFSIZ]; -+private: -+ static void gettermcap(); - protected: - static int hs; -- char* so; -- char* se; -- char* us; -- char* ue; -- char* sc; -- char* rc; -+ static char* so; -+ static char* se; -+ static char* us; -+ static char* ue; -+ static char* sc; -+ static char* rc; - static char* ce; - static char* ts; -- char* fs; -+ static char* fs; - static char* ds; - private: - static void finish(); |