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

📄 tty.c

📁 接收Fax的程序
💻 C
字号:
/*** (c) 1992 Uwe C. Schroeder, Anwendungssysteme , Augsburg, Germany**** ** Permission to use, copy, and modify this software and its** documentation for non comercial  purpose is hereby granted ** without fee, provided that** the above copyright notice appear in all copies and that both that** copyright notice and this permission notice appear in supporting** documentation, and that the name of Uwe C. Schroeder not be used in** advertising or publicity pertaining to distribution of the software without** specific, written prior permission.  Uwe Schroeder makes no representations** about the suitability of this software for any purpose.  It is provided** "as is" without express or implied warranty.** This software may not be sold or distributed with commercial products** ( this includes distribution "for users convenience" ) without prior** written permission by the author.**** UWE SCHROEDER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,** INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO** EVENT SHALL UWE SCHROEDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR** CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,** DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR** PERFORMANCE OF THIS SOFTWARE.****** This is a alpha release, which means, that there are still several** known bugs.**** Please report bugs to:****                     usys@phoenix.abg.sub.org***//* Routines for opening the serial port tty  in various raw modes    routines using sgtty struct are in tty.c */#include <stdio.h>#include <sys/types.h>#include <sys/time.h>#include <sys/errno.h>#include <signal.h>#include <fcntl.h>#include <termio.h>#include "vfax.h"extern void exit();extern int local;struct termio tty_mode;extern int fd;#ifndef Linuxinttcdrain(){  if(ioctl(fd,TCSBRK,1) <0)    return -1;  return 0;}#endifinttcflushin(){  if(ioctl(fd,TCFLSH,0) <0)    return -1;  return 0;}inttcflushout(){  if(ioctl(fd,TCFLSH,1) <0)    return -1;  return 0;}#ifndef Linuxinttcflush(){  if(ioctl(fd,TCFLSH,2) <0)    return -1;  return 0;}#endifinttcdroprts(){  if(ioctl(fd,TCRTS,0) <0)    return -1;  return 0;}inttcriserts(){  if(ioctl(fd,TCRTS,1) <0)    return -1;  return 0;}inttty_set_reenable(){  struct termio t;  if(ioctl(fd,TCGETA,&t) <0)    {      perror("TCGETA: reenable");       return -1;    }  t.c_cflag |= REENABLE;  if(ioctl(fd,TCSETA,&t) <0)    {      perror("TCSETA: reenable");       return -1;    }  return 0;}intreset_tty(){  struct termio t;  if(ioctl(fd,TCGETA,&t) <0)    {      return -1;    }  t.c_cflag |= CLOCAL;  if(ioctl(fd,TCSETA,&t) <0)    {      return -1;    }  t.c_cflag &= ~CLOCAL;  if(ioctl(fd,TCSETA,&t) <0)    {      return -1;    }  logto(4,"Reset TTY succeded\n");  return 0;}intdrop_rts(){  struct termio t;  if(ioctl(fd,TCGETA,&t) <0)    {      return -1;    }  t.c_cflag |= CLOCAL;  if(ioctl(fd,TCSETAW,&t) <0)    {      return -1;    }  if(tcdroprts()!=0)    logto(0,"drop rts failed\n");  logto(4,"drop rts succeded\n");  return 0;}rise_rts(){  struct termio t;  if(ioctl(fd,TCGETA,&t) <0)    {      return -1;    }  t.c_cflag &= ~CLOCAL;  if(ioctl(fd,TCSETA,&t) <0)    {      return -1;    }  if(tcriserts()!=0)    logto(0,"rise rts failed\n");  logto(4,"rise rts succeded\n");  return 0;}

⌨️ 快捷键说明

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