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

📄 fax2modem.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include "modem.h"intinitfaxmodem(Modem *m){	m->fax = 1;	m->phase = 'A';	m->valid = 0;	return Eok;}static intparameters(long a[], char *s){	char *p;	int i;	i = 0;	if((p = strchr(s, ':')) == 0)		return 0;	p++;	while(s = strchr(p, ',')){		a[i++] = strtol(p, 0, 10);		p = s+1;	}	if(p)		a[i++] = strtol(p, 0, 10);	return i;}intfcon(Modem *m){	verbose("fcon: %s", m->response);	if(m->fax == 0 || m->phase != 'A')		return Rrerror;	m->phase = 'B';	return Rcontinue;}intftsi(Modem *m){	char *p, *q;	verbose("ftsi: %s", m->response);	if((p = strchr(m->response, '"')) == 0 || (q = strrchr(p+1, '"')) == 0)		return Rrerror;	while(*++p == ' ')		;	*q = 0;	if((m->valid &  Vftsi) == 0){		strncpy(m->ftsi, p, sizeof(m->ftsi)-1);		m->valid |= Vftsi;	}	return Rcontinue;}intfdcs(Modem *m){	verbose("fdcs: %s", m->response);	parameters(m->fdcs, m->response);	m->valid |= Vfdcs;	return Rcontinue;}intfcfr(Modem *m){	verbose("fcfr: %s", m->response);	if(m->fax == 0)		return Rrerror;	/* ???? */	return Rcontinue;}intfpts(Modem *m){	verbose("fpts: %s", m->response);	if(m->fax == 0)		return Rrerror;	parameters(m->fpts, m->response);	m->valid |= Vfpts;	return Rcontinue;}intfet(Modem *m){	char *p;	verbose("fet: %s", m->response);	if(m->fax == 0 || (p = strchr(m->response, ':')) == 0)		return Rrerror;	m->fet = strtol(p+1, 0, 10);	m->valid |= Vfet;	return Rcontinue;}intfhng(Modem *m){	char *p;	verbose("fhng: %s", m->response);	if(m->fax == 0 || (p = strchr(m->response, ':')) == 0)		return Rrerror;	m->fhng = strtol(p+1, 0, 10);	m->valid |= Vfhng;	return Rhangup;}

⌨️ 快捷键说明

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