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

📄 scr.c

📁 使用Modem发送网上传呼
💻 C
字号:
/*	-*- mode: c; mode: fold -*-	*/# include	"config.h"# include	<stdio.h># include	<stdlib.h># include	"pager.h"# include	"script.h"/*{{{	available scripts */static funcs	*flist[] = {# ifdef		SCRIPT_SLANG		& fslang,# endif		/* SCRIPT_SLANG */# ifdef		SCRIPT_LUA	& flua,# endif		/* SCRIPT_LUA */	NULL};/*}}}*//*{{{	convert */char *scr_convert (script *s, char *str){	char	*ret;	int	n, m;	int	c;		if (ret = malloc (strlen (str) + 1)) {		for (n = 0, m = 0; str[n]; ++n)			if ((c = cv_conv (s -> ctab, (char_t) str[n])) > 0)				ret[m++] = (char) c;		ret[m] = '\0';	}	return ret;}/*}}}*//*{{{	execute */intscr_execute (void *sp, char *label, char *parm){	script	*s = (script *) sp;		MCHK (s);	if ((! s) || (! s -> f) || (! s -> f -> fexec))		return ERR_FATAL;	return (*s -> f -> fexec) (s, label, parm);}/*}}}*//*{{{	script loading */intscr_load_string (void *sp, char *scr){	script	*s = (script *) sp;	MCHK (s);	if ((! s) || (! s -> f) || (! s -> f -> fsload))		return ERR_FATAL;	return (*s -> f -> fsload) (s, scr);}intscr_load_file (void *sp, char *fname){	script	*s = (script *) sp;	MCHK (s);	if ((! s) || (! s -> f) || (! s -> f -> ffload))		return ERR_FATAL;	return (*s -> f -> ffload) (s, fname);}/*}}}*//*{{{	configuration */voidscr_config (void *sp, void (*logger) (char, char *, ...), date_t *delay, date_t *expire, Bool rds){	script	*s = (script *) sp;		MCHK (s);	if (s) {		s -> logger = logger;		if (delay)			s -> delay = *delay;		else			dat_clear (& s -> delay);		if (expire)			s -> expire = *expire;		else			dat_clear (& s -> expire);		s -> rds = False;	}}voidscr_set_convtable (void *sp, void *ctab){	script	*s = (script *) sp;		MCHK (s);	if (s) {		if (s -> ctab)			cv_free (s -> ctab);		s -> ctab = ctab;	}}voidscr_add_convtable (void *sp, void *ctab){	script	*s = (script *) sp;	MCHK (s);	if (s) {		if (! s -> ctab)			s -> ctab = cv_new ();		if (s -> ctab)			cv_merge (s -> ctab, ctab, True);	}}/*}}}*//*{{{	new/free/etc */void *scr_new (void *sp, char *typ, char *libdir){	script	*s;	int	n;	if (s = (script *) malloc (sizeof (script))) {# ifndef	NDEBUG		s -> magic = MAGIC;# endif		/* NDEBUG */		s -> sp = sp;		s -> ctab = NULL;		s -> logger = NULL;		dat_clear (& s -> delay);		dat_clear (& s -> expire);		s -> rds = False;		s -> priv = NULL;		for (n = 0; flist[n]; ++n)			if (flist[n] -> typ && (! strcmp (flist[n] -> typ, typ)))				break;		if (flist[n]) {			s -> f = flist[n];			if (s -> f -> finit)				if ((*s -> f -> finit) (s, libdir) < 0)					s = scr_free (s);		} else			s = scr_free (s);	}	return s;}void *scr_free (void *sp){	script	*s = (script *) sp;		MCHK (s);	if (s) {		if (s -> f && s -> f -> fdeinit)			(*s -> f -> fdeinit) (s);		if (s -> ctab)			cv_free (s -> ctab);		free (s);	}	return NULL;}intscr_preinit (char *libdir){	int	n;		for (n = 0; flist[n]; ++n)		if (flist[n] -> fpreinit)			if ((*flist[n] -> fpreinit) (libdir) < 0)				return -1;	return 0;}voidscr_postdeinit (void){	int	n;		for (n = 0; flist[n]; ++n)		if (flist[n] -> fpostdeinit)			(*flist[n] -> fpostdeinit) ();				}/*}}}*/

⌨️ 快捷键说明

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