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

📄 calld.h

📁 该代码为unix环境高级编程的源代码
💻 H
字号:
#include	<sys/types.h>#include	<errno.h>#include	<signal.h>#include	"ourhdr.h"#define	CS_CALL	"/home/stevens/calld"	/* well-known name */#define	CL_CALL	"call"#define	MAXSYSNAME	256#define	MAXSPEEDSTR	256#define	NALLOC	10				/* #structs to alloc/realloc for */			/* Client structs (client.c), Lock structs (lock.c) */#define	WHITE		" \t\n"				/* for separating tokens */#define	SYSTEMS		"./Systems"			/* my own copies for now */#define	DEVICES		"./Devices"#define	DIALERS		"./Dialers"			/* declare global variables */extern int		 clifd;extern int		 debug;		/* nonzero if interactive (not daemon) */extern int		 Debug;		/* nonzero for dialing debug output */extern char		 errmsg[];	/* error message string to return to client */extern char		*speed;		/* speed (actually "class") to use */extern char		*sysname;	/* name of system to call */extern uid_t 	 uid;		/* client's uid */extern volatile sig_atomic_t		chld_flag;	/* when SIGCHLD occurs */extern enum parity { NONE, EVEN, ODD } parity;	/* specified by client */typedef struct {		/* one Client struct per connected client */  int	fd;			/* fd, or -1 if available */  pid_t	pid;		/* child pid while dialing */  uid_t	uid;		/* client's user ID */  int	childdone;	/* nonzero when SIGCHLD from dialing child recvd:					   1 means exit(0), 2 means exit(1) */  long	sysftell;	/* next line to read in Systems file */  long	foundone;	/* true if we find a matching sysfile entry */  int	Debug;				/* option from client */  enum parity parity;		/* option from client */  char	speed[MAXSPEEDSTR];	/* option from client */  char	sysname[MAXSYSNAME];/* option from client */} Client;extern Client	*client;	/* ptr to malloc'ed array of Client structs */extern int		 client_size;/* # entries in client[] array */					/* (both manipulated by client_XXX() functions) */typedef struct {		/* everything for one entry in Systems file */  char	*name;		/* system name */  char	*time;		/* (e.g., "Any") time to call (ignored) */  char	*type;		/* (e.g., "ACU") or system name if direct connect */  char	*class;		/* (e.g., "9600") speed */  char	*phone;		/* phone number or "-" if direct connect */  char	*login;		/* uucp login chat (ignored) */} Systems;typedef struct {		/* everything for one entry in Devices file */  char	*type;		/* (e.g., "ACU") matched by type in Systems */  char	*line;		/* (e.g., "cua0") without preceding "/dev/" */  char	*line2;		/* (ignored) */  char	*class;		/* matched by class in Systems */  char	*dialer;	/* name of dialer in Dialers */} Devices;typedef struct {		/* everything for one entry in Dialers file */  char	*dialer;	/* matched by dialer in Devices */  char	*sub;		/* phone number substitution string (ignored) */  char	*expsend;	/* expect/send chat */} Dialers;extern Systems	systems;	/* filled in by sys_next() */extern Devices	devices;	/* filled in by dev_next() */extern Dialers	dialers;	/* filled in by dial_next() */				/* our function prototypes */void	 child_dial(Client *);					/* childdial.c */int		 cli_args(int, char **);				/* cliargs.c */int		 client_add(int, uid_t);				/* client.c */void	 client_del(int);void	 client_sigchld(pid_t, int);void	 loop(void);							/* loop.c */char	*ctl_str(char);							/* ctlstr.c */int		 dev_find(Devices *, const Systems *);	/* devfile.c */int		 dev_next(Devices *);void	 dev_rew(void);int		 dial_find(Dialers *, const Devices *);	/* dialfile.c */int		 dial_next(Dialers *);void	 dial_rew(void);int		 expect_str(int, char *);				/* expectstr.c */int		 request(Client *);						/* request.c */int		 send_str(int, char *, char *, int);	/* sendstr.c */void	 sig_chld(int);							/* sigchld.c */long	 sys_next(Systems *);					/* sysfile.c */void	 sys_posn(long);void	 sys_rew(void);int		 tty_open(char *, char *, enum parity, int);	/* ttyopen.c */int		 tty_dial(int, char *, char *, char *, char *);	/* ttydial.c */pid_t	 is_locked(char *);						/* lock.c */void	 lock_set(char *, pid_t);void	 lock_rel(pid_t);void	 DEBUG(char *, ...);					/* debug.c */void	 DEBUG_NONL(char *, ...);

⌨️ 快捷键说明

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