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

📄 common.c

📁 intercept tty is using for listening a UART conversation
💻 C
字号:
/*	common.c*//* $Id: common.c,v 7.2 2003/10/01 20:21:09 sgifford Exp $ */#include <stdio.h>#include <stdlib.h>#include <termios.h>#include <stdarg.h>#include <unistd.h>#include "common.h"#define TTY_STORE	16static struct termios orig_tty_state[TTY_STORE];static int sttyfds[TTY_STORE];void errorf (char *fmt, ...){  va_list args;	  va_start (args, fmt);  vfprintf (stderr, fmt, args);  exit (1);}int fdprintf (int fd, char *fmt, ...){  va_list args;  int r;  char str[256];  va_start (args, fmt);  r = vsprintf(str, fmt, args);  write (fd, str, r);  return (r);}char *leafname (char *path){  int i = 0, j;	  for (j = 0; path[j]; j++)    if (path[j] == '/')      i = j + 1;	  return (path + i);}/* init the stty store array */void stty_initstore (void){  int i;	  for (i = 0; i < TTY_STORE; i++)    sttyfds[i] = -1;}/* set tty on fd into raw mode */int stty_raw (int fd){  struct termios tty_state;  int i;	  if (tcgetattr(fd, &tty_state) < 0)    return (-1);	  for (i = 0; i < TTY_STORE; i++)    if (sttyfds[i] == -1)    {      orig_tty_state[i] = tty_state;      sttyfds[i] = fd;      break;    }	  tty_state.c_lflag &= ~(ICANON | IEXTEN | ISIG | ECHO);  tty_state.c_iflag &= ~(ICRNL | INPCK | ISTRIP | IXON | BRKINT);  tty_state.c_oflag &= ~OPOST;  tty_state.c_cflag |= CS8;	  tty_state.c_cc[VMIN]  = 1;  tty_state.c_cc[VTIME] = 0;	  if (tcsetattr(fd, TCSAFLUSH, &tty_state) < 0)    return (-1);	  return (0);}/* restore all altered ttys to their original state */void stty_orig (void){  int i;	  for (i = 0; i < TTY_STORE; i++)    if (sttyfds[i] != -1)    {      tcsetattr (sttyfds[i], TCSAFLUSH, &orig_tty_state[i]);      sttyfds[i] = -1;    }}

⌨️ 快捷键说明

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