2005-06-02 18:28:35 +00:00
|
|
|
/* -*- mode: c; mode: fold -*- */
|
|
|
|
# ifndef __PAGER_H
|
|
|
|
# define __PAGER_H 1
|
|
|
|
# include <stdio.h>
|
|
|
|
|
|
|
|
/*{{{ definitions, macros */
|
|
|
|
# ifndef NDEBUG
|
|
|
|
# define V(lvl,msg) ((void) (((lvl) <= verbose) && verbout ? (*verbout) msg, fflush (stdout) : 0))
|
|
|
|
# define MCHK(xxx) ((void) ((xxx) && ((xxx) -> magic != MAGIC) ? fprintf (stderr, "Invalid magic: expect %ld got %ld in %s:%d\n", MAGIC, (xxx) -> magic, __FILE__, __LINE__) : 0))
|
|
|
|
# define MKMAGIC(ch1,ch2,ch3,ch4) \
|
|
|
|
((long) ((((unsigned char) (ch1)) << 24) | \
|
|
|
|
(((unsigned char) (ch2)) << 16) | \
|
|
|
|
(((unsigned char) (ch3)) << 8) | \
|
|
|
|
((unsigned char) (ch4))))
|
|
|
|
# else /* NDEBUG */
|
|
|
|
# define V(lvl,msg)
|
|
|
|
# define MCHK(xxx)
|
|
|
|
# endif /* NDEBUG */
|
|
|
|
|
|
|
|
# define NO_ERR 0
|
|
|
|
# define ERR_FAIL (-1)
|
|
|
|
# define ERR_FATAL (-2)
|
|
|
|
# define ERR_ABORT (-3)
|
|
|
|
|
|
|
|
# define ECONT(xxx) (((xxx) == NO_ERR) || ((xxx) == ERR_FAIL))
|
|
|
|
# define ESTOP(xxx) (((xxx) == ERR_FATAL) || ((xxx) == ERR_ABORT))
|
|
|
|
|
|
|
|
# define LGS_SENT '+'
|
|
|
|
# define LGF_SENT '-'
|
|
|
|
# define LGS_INF '*'
|
|
|
|
# define LGF_INF '/'
|
|
|
|
|
|
|
|
# define LG_INF 'i'
|
|
|
|
# define LG_COST 'c'
|
|
|
|
# define LG_SSESSION 's'
|
|
|
|
# define LG_ESESSION 'e'
|
|
|
|
# define LG_PROTO 'p'
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ typedefs */
|
|
|
|
typedef enum {
|
|
|
|
False = 0,
|
|
|
|
True = ! False
|
|
|
|
} Bool;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
Unknown,
|
|
|
|
Ascii,
|
|
|
|
Script,
|
|
|
|
Tap,
|
|
|
|
Ucp
|
|
|
|
} Protocol;
|
|
|
|
|
|
|
|
typedef unsigned char char_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
char_t *str; /* the string itself */
|
|
|
|
int len; /* the current length */
|
|
|
|
int size; /* the allocated size */
|
|
|
|
} string_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int day, mon, year;
|
|
|
|
int hour, min, sec;
|
|
|
|
} date_t;
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ prototypes */
|
|
|
|
/*{{{ utility */
|
|
|
|
extern char *skip (char *str);
|
|
|
|
extern char *skipch (char *str, char ch);
|
|
|
|
extern char *getline (FILE *fp, Bool cont);
|
|
|
|
extern int verbose_out (char *, ...);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ string handling */
|
|
|
|
extern string_t *snewc (char *str);
|
|
|
|
extern string_t *snew (char_t *str, int len);
|
|
|
|
extern Bool sexpand (string_t *s, int nsize);
|
|
|
|
extern Bool scopy (string_t *dst, string_t *src);
|
|
|
|
extern Bool scat (string_t *dst, string_t *src);
|
|
|
|
extern Bool scopyc (string_t *dst, char *src);
|
|
|
|
extern Bool scatc (string_t *dst, char *src);
|
|
|
|
extern string_t *scut (string_t *str, int start, int len);
|
|
|
|
extern void sdel (string_t *str, int start, int len);
|
|
|
|
extern Bool sput (string_t *str, string_t *ins, int pos, int len);
|
|
|
|
extern Bool sputc (string_t *str, char *ins, int pos, int len);
|
|
|
|
extern char *sextract (string_t *s);
|
|
|
|
extern char *schar (string_t *s);
|
|
|
|
extern void *sfree (string_t *s);
|
|
|
|
extern void srelease (string_t *s);
|
|
|
|
extern Bool siscntrl (string_t *s, int pos);
|
|
|
|
extern Bool sisspace (string_t *s, int pos);
|
|
|
|
extern Bool sisdigit (string_t *s, int pos);
|
|
|
|
extern int stoi (string_t *s);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ date handling */
|
|
|
|
extern date_t *dat_free (date_t *d);
|
|
|
|
extern date_t *dat_parse (char *str);
|
|
|
|
extern int dat_diff (date_t *d1, date_t *d2);
|
|
|
|
extern void dat_clear (date_t *d);
|
|
|
|
extern void dat_localtime (date_t *d);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ tty handling */
|
|
|
|
extern void *tty_open (char *dev, char *lckprefix, char *lckmethod);
|
|
|
|
extern void *tty_close (void *sp);
|
|
|
|
extern Bool tty_reopen (void *s, int msec);
|
|
|
|
extern void tty_hangup (void *sp, int msec);
|
|
|
|
extern int tty_fd (void *sp);
|
|
|
|
extern int tty_setup (void *sp, Bool raw, Bool modem, int speed, int bpb, int sb, char parity);
|
|
|
|
extern void tty_set_line_callback (void *sp, void (*func) (void *, string_t *, char_t, void *), char *sep, void *data);
|
|
|
|
extern void tty_suspend_callback (void *sp, Bool susp);
|
|
|
|
extern int tty_send (void *sp, char *str, int len);
|
|
|
|
extern int tty_send_string (void *sp, char *str);
|
|
|
|
extern int tty_expect (void *sp, int tout, ...);
|
|
|
|
extern int tty_expect_list (void *sp, int tout, char **strs, int *lens);
|
|
|
|
extern int tty_expect_string (void *sp, int tout, char *str);
|
|
|
|
extern int tty_send_expect (void *sp, int deftout, char *str, char **opts);
|
|
|
|
extern void tty_mdrain (void *sp, int msecs);
|
|
|
|
extern void tty_drain (void *sp, int secs);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ configuration */
|
|
|
|
extern void *cfg_new (char *sep);
|
|
|
|
extern void *cfg_read (char *fname, void *bp, char *sep);
|
|
|
|
extern void *cfg_end (void *bp);
|
|
|
|
extern void cfg_modify (void *bp, char *bname, char *var, char *val);
|
|
|
|
extern char *cfg_get (void *bp, char *bname, char *var, char *dflt);
|
|
|
|
extern int cfg_iget (void *bp, char *bname, char *var, int dflt);
|
|
|
|
extern Bool cfg_bget (void *bp, char *bname, char *var, Bool dflt);
|
|
|
|
extern char *cfg_block_get (void *bp, char *bname, char *var, char *dflt);
|
|
|
|
extern int cfg_block_iget (void *bp, char *bname, char *var, int dflt);
|
|
|
|
extern Bool cfg_block_bget (void *bp, char *bname, char *var, Bool dflt);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ converting */
|
|
|
|
extern void *cv_new (void);
|
|
|
|
extern void *cv_free (void *cv);
|
|
|
|
extern void *cv_reverse (void *src);
|
|
|
|
extern void cv_define (void *cv, char_t src, char_t dst);
|
|
|
|
extern void cv_sdefine (void *cv, char *src, char *dst);
|
|
|
|
extern void cv_undefine (void *cv, char_t ch);
|
|
|
|
extern void cv_sundefine (void *cv, char *ch);
|
|
|
|
extern void cv_invalid (void *cv, char_t ch);
|
|
|
|
extern void cv_sinvalid (void *cv, char *ch);
|
|
|
|
extern int cv_read_table (void *cv, char *fname);
|
|
|
|
extern int cv_write_table (void *cv, char *fname);
|
|
|
|
extern void cv_merge (void *cv, void *in, Bool second);
|
|
|
|
extern int cv_conv (void *cv, char_t ch);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ ASCII protocol */
|
|
|
|
extern int asc_login (void *ap, string_t *callid);
|
|
|
|
extern int asc_logout (void *ap);
|
|
|
|
extern int asc_transmit (void *ap, char *pid, char *msg);
|
|
|
|
extern int asc_next (void *ap);
|
|
|
|
extern int asc_sync (void *ap);
|
|
|
|
extern void asc_config (void *ap, void (*logger) (char, char *, ...),
|
|
|
|
int deftout, char *alogin, char *alogout, char *apid, char *amsg, char *anext, char *async,
|
|
|
|
date_t *delay, date_t *expire, Bool rds);
|
|
|
|
extern void asc_set_convtable (void *ap, void *ctab);
|
|
|
|
extern void asc_add_convtable (void *ap, void *ctab);
|
|
|
|
extern void *asc_new (void *sp);
|
|
|
|
extern void *asc_free (void *ap);
|
|
|
|
extern int asc_preinit (void);
|
|
|
|
extern void asc_postdeinit (void);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ scripting protocol */
|
|
|
|
extern int scr_execute (void *sp, char *label, char *parm);
|
|
|
|
extern int scr_load_string (void *sp, char *scr);
|
|
|
|
extern int scr_load_file (void *sp, char *fname);
|
|
|
|
extern void scr_config (void *sp, void (*logger) (char, char *, ...), date_t *delay, date_t *expire, Bool rds);
|
|
|
|
extern void scr_set_convtable (void *sp, void *ctab);
|
|
|
|
extern void scr_add_convtable (void *sp, void *ctab);
|
|
|
|
extern void *scr_new (void *sp, char *typ, char *libdir);
|
|
|
|
extern void *scr_free (void *sp);
|
|
|
|
extern int scr_preinit (char *libdir);
|
|
|
|
extern void scr_postdeinit (void);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ Telocator Alphanumeric Protocol */
|
|
|
|
extern int tap_login (void *tp, char *stype, char ttype, char *passwd, string_t *callid);
|
|
|
|
extern int tap_logout (void *tp);
|
|
|
|
extern int tap_transmit (void *tp, string_t **field, Bool last);
|
|
|
|
extern void tap_config (void *tp, void (*logger) (char, char *, ...), Bool pre16);
|
|
|
|
extern void tap_timeouts (void *tp, int t1, int t2, int t3, int t4, int t5);
|
|
|
|
extern void tap_retries (void *tp, int n1, int n2, int n3, int licnt, int locnt);
|
|
|
|
extern void tap_set_convtable (void *tp, void *ctab);
|
|
|
|
extern void tap_add_convtable (void *tp, void *ctab);
|
|
|
|
extern void *tap_new (void *sp);
|
|
|
|
extern void *tap_free (void *tp);
|
|
|
|
extern int tap_preinit (void);
|
|
|
|
extern void tap_postdeinit (void);
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ Universal Computer Protocol */
|
|
|
|
extern int ucp_login (void *up, string_t *callid);
|
|
|
|
extern int ucp_logout (void *up);
|
|
|
|
extern int ucp_transmit (void *up, string_t *pagerid, string_t *msg, Bool last);
|
|
|
|
extern void ucp_config (void *up, void (*logger) (char, char *, ...),
|
|
|
|
Bool xtend, int stout, int retry, int rtout,
|
|
|
|
date_t *delay, date_t *expire, Bool rds);
|
|
|
|
extern void ucp_set_convtable (void *up, void *ctab);
|
|
|
|
extern void ucp_add_convtable (void *up, void *ctab);
|
|
|
|
extern void *ucp_new (void *sp);
|
|
|
|
extern void *ucp_free (void *up);
|
|
|
|
extern int ucp_preinit (void);
|
|
|
|
extern void ucp_postdeinit (void);
|
|
|
|
/*}}}*/
|
|
|
|
/*}}}*/
|
|
|
|
/*{{{ global variables */
|
|
|
|
extern int verbose;
|
|
|
|
extern int (*verbout) (char *, ...);
|
|
|
|
/*}}}*/
|
2005-06-02 18:33:27 +00:00
|
|
|
/*{{{ CAPI */
|
|
|
|
extern int device_is_capi(char *dev);
|
|
|
|
extern int hyla_is_capi(void *sp);
|
|
|
|
extern void *hyla_capi_init(char *dev);
|
|
|
|
extern void hyla_capi_disconnect(void *sp);
|
|
|
|
extern void *hyla_capi_close(void *sp);
|
|
|
|
extern int hyla_capi_connect(void *sp, char *dial, char *number);
|
|
|
|
extern int hyla_capi_send(void *sp, char *str, int len);
|
|
|
|
extern size_t hyla_capi_read(void *sp, void *buf, size_t count);
|
|
|
|
extern void hyla_capi_iflush(void *sp);
|
|
|
|
extern void hyla_capi_oflush(void *sp);
|
|
|
|
extern void hyla_capi_drain(void *sp);
|
|
|
|
extern void hyla_capi_sendbreak(void *sp, int duration);
|
|
|
|
/*}}}*/
|
2005-06-02 18:28:35 +00:00
|
|
|
# endif /* __PAGER_H */
|