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

📄 shtty.c

📁 android-w.song.android.widget
💻 C
字号:
/* * shtty.c -- abstract interface to the terminal, focusing on capabilities. *//* Copyright (C) 1999 Free Software Foundation, Inc.   This file is part of GNU Bash, the Bourne Again SHell.   Bash is free software: you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation, either version 3 of the License, or   (at your option) any later version.   Bash is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with Bash.  If not, see <http://www.gnu.org/licenses/>.*/#ifdef HAVE_CONFIG_H#  include <config.h>#endif#ifdef HAVE_UNISTD_H#  include <unistd.h>#endif#include <shtty.h>static TTYSTRUCT ttin, ttout;static int ttsaved = 0;intttgetattr(fd, ttp)int	fd;TTYSTRUCT *ttp;{#ifdef TERMIOS_TTY_DRIVER  return tcgetattr(fd, ttp);#else#  ifdef TERMIO_TTY_DRIVER  return ioctl(fd, TCGETA, ttp);#  else  return ioctl(fd, TIOCGETP, ttp);#  endif#endif}intttsetattr(fd, ttp)int	fd;TTYSTRUCT *ttp;{#ifdef TERMIOS_TTY_DRIVER  return tcsetattr(fd, TCSADRAIN, ttp);#else#  ifdef TERMIO_TTY_DRIVER  return ioctl(fd, TCSETAW, ttp);#  else  return ioctl(fd, TIOCSETN, ttp);#  endif#endif}voidttsave(){  if (ttsaved)   return;  ttgetattr (0, &ttin);  ttgetattr (1, &ttout);  ttsaved = 1;}voidttrestore(){  if (ttsaved == 0)    return;  ttsetattr (0, &ttin);  ttsetattr (1, &ttout);  ttsaved = 0;}/* Retrieve the internally-saved attributes associated with tty fd FD. */TTYSTRUCT *ttattr (fd)     int fd;{  if (ttsaved == 0)    return ((TTYSTRUCT *)0);  if (fd == 0)    return &ttin;  else if (fd == 1)    return &ttout;  else    return ((TTYSTRUCT *)0);}/* * Change attributes in ttp so that when it is installed using * ttsetattr, the terminal will be in one-char-at-a-time mode. */inttt_setonechar(ttp)     TTYSTRUCT *ttp;{#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER)  /* XXX - might not want this -- it disables erase and kill processing. */  ttp->c_lflag &= ~ICANON;  ttp->c_lflag |= ISIG;#  ifdef IEXTEN  ttp->c_lflag |= IEXTEN;#  endif  ttp->c_iflag |= ICRNL;	/* make sure we get CR->NL on input */  ttp->c_iflag &= ~INLCR;	/* but no NL->CR */#  ifdef OPOST  ttp->c_oflag |= OPOST;#  endif#  ifdef ONLCR  ttp->c_oflag |= ONLCR;#  endif#  ifdef OCRNL  ttp->c_oflag &= ~OCRNL;#  endif#  ifdef ONOCR  ttp->c_oflag &= ~ONOCR;#  endif#  ifdef ONLRET  ttp->c_oflag &= ~ONLRET;#  endif  ttp->c_cc[VMIN] = 1;  ttp->c_cc[VTIME] = 0;#else  ttp->sg_flags |= CBREAK;#endif  return 0;}/* Set the tty associated with FD and TTP into one-character-at-a-time mode */intttfd_onechar (fd, ttp)     int fd;     TTYSTRUCT *ttp;{  if (tt_setonechar(ttp) < 0)    return -1;  return (ttsetattr (fd, ttp));}/* Set the terminal into one-character-at-a-time mode */intttonechar (){  TTYSTRUCT tt;  if (ttsaved == 0)    return -1;  tt = ttin;  return (ttfd_onechar (0, &tt));}/* * Change attributes in ttp so that when it is installed using * ttsetattr, the terminal will be in no-echo mode. */inttt_setnoecho(ttp)     TTYSTRUCT *ttp;{#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER)  ttp->c_lflag &= ~(ECHO|ECHOK|ECHONL);#else  ttp->sg_flags &= ~ECHO;#endif  return 0;}/* Set the tty associated with FD and TTP into no-echo mode */intttfd_noecho (fd, ttp)     int fd;     TTYSTRUCT *ttp;{  if (tt_setnoecho (ttp) < 0)    return -1;  return (ttsetattr (fd, ttp));}/* Set the terminal into no-echo mode */intttnoecho (){  TTYSTRUCT tt;  if (ttsaved == 0)    return -1;  tt = ttin;  return (ttfd_noecho (0, &tt));}/* * Change attributes in ttp so that when it is installed using * ttsetattr, the terminal will be in eight-bit mode (pass8). */inttt_seteightbit (ttp)     TTYSTRUCT *ttp;{#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER)  ttp->c_iflag &= ~ISTRIP;  ttp->c_cflag |= CS8;  ttp->c_cflag &= ~PARENB;#else  ttp->sg_flags |= ANYP;#endif  return 0;}/* Set the tty associated with FD and TTP into eight-bit mode */intttfd_eightbit (fd, ttp)     int fd;     TTYSTRUCT *ttp;{  if (tt_seteightbit (ttp) < 0)    return -1;  return (ttsetattr (fd, ttp));}/* Set the terminal into eight-bit mode */inttteightbit (){  TTYSTRUCT tt;  if (ttsaved == 0)    return -1;  tt = ttin;  return (ttfd_eightbit (0, &tt));}/* * Change attributes in ttp so that when it is installed using * ttsetattr, the terminal will be in non-canonical input mode. */inttt_setnocanon (ttp)     TTYSTRUCT *ttp;{#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER)  ttp->c_lflag &= ~ICANON;#endif  return 0;}/* Set the tty associated with FD and TTP into non-canonical mode */intttfd_nocanon (fd, ttp)     int fd;     TTYSTRUCT *ttp;{  if (tt_setnocanon (ttp) < 0)    return -1;  return (ttsetattr (fd, ttp));}/* Set the terminal into non-canonical mode */intttnocanon (){  TTYSTRUCT tt;  if (ttsaved == 0)    return -1;  tt = ttin;  return (ttfd_nocanon (0, &tt));}/* * Change attributes in ttp so that when it is installed using * ttsetattr, the terminal will be in cbreak, no-echo mode. */inttt_setcbreak(ttp)     TTYSTRUCT *ttp;{  if (tt_setonechar (ttp) < 0)    return -1;  return (tt_setnoecho (ttp));}/* Set the tty associated with FD and TTP into cbreak (no-echo,   one-character-at-a-time) mode */intttfd_cbreak (fd, ttp)     int fd;     TTYSTRUCT *ttp;{  if (tt_setcbreak (ttp) < 0)    return -1;  return (ttsetattr (fd, ttp));}/* Set the terminal into cbreak (no-echo, one-character-at-a-time) mode */intttcbreak (){  TTYSTRUCT tt;  if (ttsaved == 0)    return -1;  tt = ttin;  return (ttfd_cbreak (0, &tt));}

⌨️ 快捷键说明

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