Annotation of coherent/g/usr/lib/uucp/tay104/conn.h, revision 1.1

1.1     ! root        1: /* conn.h
        !             2:    Header file for routines which manipulate connections.
        !             3: 
        !             4:    Copyright (C) 1991, 1992 Ian Lance Taylor
        !             5: 
        !             6:    This file is part of the Taylor UUCP package.
        !             7: 
        !             8:    This program is free software; you can redistribute it and/or
        !             9:    modify it under the terms of the GNU General Public License as
        !            10:    published by the Free Software Foundation; either version 2 of the
        !            11:    License, or (at your option) any later version.
        !            12: 
        !            13:    This program is distributed in the hope that it will be useful, but
        !            14:    WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            16:    General Public License for more details.
        !            17: 
        !            18:    You should have received a copy of the GNU General Public License
        !            19:    along with this program; if not, write to the Free Software
        !            20:    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
        !            21: 
        !            22:    The author of the program may be contacted at [email protected] or
        !            23:    c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254.
        !            24:    */
        !            25: 
        !            26: #ifndef CONN_H
        !            27: 
        !            28: #define CONN_H
        !            29: 
        !            30: #if ANSI_C
        !            31: /* These structures are used in prototypes but are not defined in this
        !            32:    header file.  */
        !            33: struct uuconf_system;
        !            34: struct uuconf_dialer;
        !            35: struct uuconf_chat;
        !            36: #endif
        !            37: 
        !            38: /* This structure represents a connection.  */
        !            39: 
        !            40: struct sconnection
        !            41: {
        !            42:   /* Pointer to command table for this type of connection.  */
        !            43:   const struct sconncmds *qcmds;
        !            44:   /* Pointer to system dependent information.  */
        !            45:   pointer psysdep;
        !            46:   /* Pointer to system independent information.  */
        !            47:   struct uuconf_port *qport;
        !            48: };
        !            49: 
        !            50: /* Whether fconn_dial got a dialer.  */
        !            51: 
        !            52: enum tdialerfound
        !            53: {
        !            54:   /* Did not find a dialer.  */
        !            55:   DIALERFOUND_FALSE,
        !            56:   /* Found a dialer which does not need to be freed.  */
        !            57:   DIALERFOUND_TRUE,
        !            58:   /* Found a dialer which does need to be freed.  */
        !            59:   DIALERFOUND_FREE
        !            60: };
        !            61: 
        !            62: /* Parity settings to pass to fconn_set.  */
        !            63: 
        !            64: enum tparitysetting
        !            65: {
        !            66:   /* Do not change output parity generation.  */
        !            67:   PARITYSETTING_DEFAULT,
        !            68:   /* No parity (all eight output bits used).  */
        !            69:   PARITYSETTING_NONE,
        !            70:   /* Even parity.  */
        !            71:   PARITYSETTING_EVEN,
        !            72:   /* Odd parity.  */
        !            73:   PARITYSETTING_ODD,
        !            74:   /* Mark parity.  */
        !            75:   PARITYSETTING_MARK,
        !            76:   /* Space parity.  */
        !            77:   PARITYSETTING_SPACE
        !            78: };
        !            79: 
        !            80: /* Type of strip control argument to fconn_set.  */
        !            81: 
        !            82: enum tstripsetting
        !            83: {
        !            84:   /* Do not change the stripping of input characters.  */
        !            85:   STRIPSETTING_DEFAULT,
        !            86:   /* Do not strip input characters to seven bits.  */
        !            87:   STRIPSETTING_EIGHTBITS,
        !            88:   /* Strip input characters to seven bits.  */
        !            89:   STRIPSETTING_SEVENBITS
        !            90: };
        !            91: 
        !            92: /* Type of XON/XOFF control argument to fconn_set.  */
        !            93: 
        !            94: enum txonxoffsetting
        !            95: {
        !            96:   /* Do not change XON/XOFF handshake setting.  */
        !            97:   XONXOFF_DEFAULT,
        !            98:   /* Do not do XON/XOFF handshaking.  */
        !            99:   XONXOFF_OFF,
        !           100:   /* Do XON/XOFF handshaking.  */
        !           101:   XONXOFF_ON
        !           102: };
        !           103: 
        !           104: /* A command table holds the functions which implement actions for
        !           105:    each different kind of connection.  */
        !           106: 
        !           107: struct sconncmds
        !           108: {
        !           109:   /* Free up a connection.  */
        !           110:   void (*pufree) P((struct sconnection *qconn));
        !           111:   /* Lock the connection.  The fin argument is TRUE if the connection
        !           112:      is to be used for an incoming call.  May be NULL.  */
        !           113:   boolean (*pflock) P((struct sconnection *qconn, boolean fin));
        !           114:   /* Unlock the connection.  May be NULL.  */
        !           115:   boolean (*pfunlock) P((struct sconnection *qconn));
        !           116:   /* Open the connection.  */
        !           117:   boolean (*pfopen) P((struct sconnection *qconn, long ibaud,
        !           118:                       boolean fwait));
        !           119:   /* Close the connection.  */
        !           120:   boolean (*pfclose) P((struct sconnection *qconn,
        !           121:                        pointer puuconf,
        !           122:                        struct uuconf_dialer *qdialer,
        !           123:                        boolean fsuccess));
        !           124:   /* Reset the connection so that another call may be accepted.  */
        !           125:   boolean (*pfreset) P((struct sconnection *qconn));
        !           126:   /* Dial a number on a connection.  This set *qdialer to the dialer
        !           127:      used, if any, and sets *ptdialerfound appropriately.  The qsys
        !           128:      and zphone arguments are for the chat script.  This field may be
        !           129:      NULL.  */
        !           130:   boolean (*pfdial) P((struct sconnection *qconn, pointer puuconf,
        !           131:                       const struct uuconf_system *qsys,
        !           132:                       const char *zphone,
        !           133:                       struct uuconf_dialer *qdialer,
        !           134:                       enum tdialerfound *ptdialerfound));
        !           135:   /* Read data from a connection, with a timeout in seconds.  When
        !           136:      called *pclen is the length of the buffer; on successful return
        !           137:      *pclen is the number of bytes read into the buffer.  The cmin
        !           138:      argument is the minimum number of bytes to read before returning
        !           139:      ahead of a timeout.  */
        !           140:   boolean (*pfread) P((struct sconnection *qconn, char *zbuf, size_t *pclen,
        !           141:                       size_t cmin, int ctimeout, boolean freport));
        !           142:   /* Write data to the connection.  */
        !           143:   boolean (*pfwrite) P((struct sconnection *qconn, const char *zbuf,
        !           144:                        size_t clen));
        !           145:   /* Read and write data to the connection.  This reads and writes
        !           146:      data until either all passed in data has been written or the read
        !           147:      buffer has been filled.  When called *pcread is the size of the
        !           148:      read buffer and *pcwrite is the number of bytes to write; on
        !           149:      successful return *pcread is the number of bytes read and
        !           150:      *pcwrite is the number of bytes written.  */
        !           151:   boolean (*pfio) P((struct sconnection *qconn, const char *zwrite,
        !           152:                     size_t *pcwrite, char *zread, size_t *pcread));
        !           153:   /* Send a break character.  This field may be NULL.  */
        !           154:   boolean (*pfbreak) P((struct sconnection *qconn));
        !           155:   /* Change the connection setting.  This field may be NULL.  */
        !           156:   boolean (*pfset) P((struct sconnection *qconn,
        !           157:                      enum tparitysetting tparity,
        !           158:                      enum tstripsetting tstrip,
        !           159:                      enum txonxoffsetting txonxoff));
        !           160:   /* Require or ignore carrer.  This field may be NULL.  */
        !           161:   boolean (*pfcarrier) P((struct sconnection *qconn,
        !           162:                          boolean fcarrier));
        !           163:   /* Run a chat program on a connection.  */
        !           164:   boolean (*pfchat) P((struct sconnection *qconn, char **pzprog));
        !           165:   /* Get the baud rate of a connection.  This field may be NULL.  */
        !           166:   long (*pibaud) P((struct sconnection *qconn));
        !           167: };
        !           168: 
        !           169: /* Connection functions.  */
        !           170: 
        !           171: /* Initialize a connection.  This must be called before any of the
        !           172:    other connection functions are called.  It initializes the fields
        !           173:    of qconn.  It returns FALSE on error.  */
        !           174: extern boolean fconn_init P((struct uuconf_port *qport,
        !           175:                             struct sconnection *qconn));
        !           176: 
        !           177: /* Free up connection data.  */
        !           178: extern void uconn_free P((struct sconnection *qconn));
        !           179: 
        !           180: /* Lock a connection.  The fin argument is TRUE if the port is to be
        !           181:    used for an incoming call; certains type of Unix locking need this
        !           182:    information because they need to open the port.  */
        !           183: extern boolean fconn_lock P((struct sconnection *qconn, boolean fin));
        !           184: 
        !           185: /* Unlock a connection.  */
        !           186: extern boolean fconn_unlock P((struct sconnection *qconn));
        !           187: 
        !           188: /* Open a connection.  If ibaud is 0, the natural baud rate of the
        !           189:    port is used.  If ihighbaud is not 0, fconn_open chooses the
        !           190:    highest supported baud rate between ibaud and ihighbaud.  If fwait
        !           191:    is TRUE, this should wait for an incoming call.  */
        !           192: extern boolean fconn_open P((struct sconnection *qconn, long ibaud,
        !           193:                             long ihighbaud, boolean fwait));
        !           194: 
        !           195: /* Close a connection.  The fsuccess argument is TRUE if the
        !           196:    conversation completed normally, FALSE if it is being aborted.  */
        !           197: extern boolean fconn_close P((struct sconnection *qconn,
        !           198:                              pointer puuconf,
        !           199:                              struct uuconf_dialer *qdialer,
        !           200:                              boolean fsuccess));
        !           201: 
        !           202: /* Reset a connection such that another call may be accepted.  */
        !           203: extern boolean fconn_reset P((struct sconnection *q));
        !           204: 
        !           205: /* Dial out on a connection.  The qsys and zphone arguments are for
        !           206:    the chat scripts; zphone is the phone number to dial.  If qdialer
        !           207:    is not NULL, *qdialer will be set to the dialer information used if
        !           208:    any; *ptdialerfound will be set appropriately.  */
        !           209: extern boolean fconn_dial P((struct sconnection *q, pointer puuconf,
        !           210:                             const struct uuconf_system *qsys,
        !           211:                             const char *zphone,
        !           212:                             struct uuconf_dialer *qdialer,
        !           213:                             enum tdialerfound *ptdialerfound));
        !           214: 
        !           215: /* Read from a connection.
        !           216:    zbuf -- buffer to read bytes into
        !           217:    *pclen on call -- length of zbuf
        !           218:    *pclen on successful return -- number of bytes read
        !           219:    cmin -- minimum number of bytes to read before returning ahead of timeout
        !           220:    ctimeout -- timeout in seconds, 0 if none
        !           221:    freport -- whether to report errors.  */
        !           222: extern boolean fconn_read P((struct sconnection *qconn, char *zbuf,
        !           223:                             size_t *pclen, size_t cmin,
        !           224:                             int ctimeout, boolean freport));
        !           225: 
        !           226: /* Write to a connection.  */
        !           227: extern boolean fconn_write P((struct sconnection *qconn, const char *zbuf,
        !           228:                              size_t cbytes));
        !           229: 
        !           230: /* Read and write to a connection.  This reads and writes data until
        !           231:    either all passed-in data has been written or the read buffer is
        !           232:    full.
        !           233:    zwrite -- buffer to write bytes from
        !           234:    *pcwrite on call -- number of bytes to write
        !           235:    *pcwrite on successful return -- number of bytes written
        !           236:    zread -- buffer to read bytes into
        !           237:    *pcread on call -- size of read buffer
        !           238:    *pcread on successful return -- number of bytes read.  */
        !           239: extern boolean fconn_io P((struct sconnection *qconn, const char *zwrite,
        !           240:                           size_t *pcwrite, char *zread, size_t *pcread));
        !           241: 
        !           242: /* Send a break character to a connection.  */
        !           243: extern boolean fconn_break P((struct sconnection *qconn));
        !           244: 
        !           245: /* Change the settings of a connection.  This allows independent
        !           246:    control over the parity of output characters, whether to strip
        !           247:    input characters, and whether to do XON/XOFF handshaking.  There is
        !           248:    no explicit control over parity checking of input characters.  This
        !           249:    function returns FALSE on error.  Attempts to set values not
        !           250:    supported by the hardware are silently ignored.  */
        !           251: extern boolean fconn_set P((struct sconnection *qconn,
        !           252:                            enum tparitysetting tparity,
        !           253:                            enum tstripsetting tstrip,
        !           254:                            enum txonxoffsetting txonxoff));
        !           255: 
        !           256: /* Get the baud rate of a connection.  */
        !           257: extern long iconn_baud P((struct sconnection *qconn));
        !           258: 
        !           259: /* Do a chat script with a system.  */
        !           260: extern boolean fchat P((struct sconnection *qconn, pointer puuconf,
        !           261:                        const struct uuconf_chat *qchat,
        !           262:                        const struct uuconf_system *qsys,
        !           263:                        const struct uuconf_dialer *qdialer,
        !           264:                        const char *zphone, boolean ftranslate,
        !           265:                        const char *zport, long ibaud));
        !           266: 
        !           267: /* Tell the connection to either require or ignore carrier as fcarrier
        !           268:    is TRUE or FALSE respectively.  This is called with fcarrier TRUE
        !           269:    when \m is encountered in a chat script, and with fcarrier FALSE
        !           270:    when \M is encountered.  */
        !           271: extern boolean fconn_carrier P((struct sconnection *qconn,
        !           272:                                boolean fcarrier));
        !           273: 
        !           274: /* Run a chat program on a connection.  */
        !           275: extern boolean fconn_run_chat P((struct sconnection *qconn,
        !           276:                                 char **pzprog));
        !           277: 
        !           278: /* Dialing out on a modem is partially system independent.  This is
        !           279:    the modem dialing routine.  */
        !           280: extern boolean fmodem_dial P((struct sconnection *qconn, pointer puuconf,
        !           281:                              const struct uuconf_system *qsys,
        !           282:                              const char *zphone,
        !           283:                              struct uuconf_dialer *qdialer,
        !           284:                              enum tdialerfound *ptdialerfound));
        !           285: 
        !           286: /* Begin dialing out.  This should open the dialer device if there is
        !           287:    one, toggle DTR if requested and possible, and tell the port to
        !           288:    ignore carrier.  It should return FALSE on error.  */
        !           289: extern boolean fsysdep_modem_begin_dial P((struct sconnection *qconn,
        !           290:                                           struct uuconf_dialer *qdial));
        !           291: 
        !           292: /* Finish dialing out on a modem.  This should close the dialer device
        !           293:    if there is one.  If the dialer and the port both support carrier,
        !           294:    the connection should be told to pay attention to carrier.  If it
        !           295:    is possible to wait for carrier to come on, and the dialer and the
        !           296:    port both the port support carrier, it should wait until carrier
        !           297:    comes on.  */
        !           298: extern boolean fsysdep_modem_end_dial P((struct sconnection *qconn,
        !           299:                                         struct uuconf_dialer *qdial));
        !           300: 
        !           301: /* System dependent initialization routines.  */
        !           302: extern boolean fsysdep_stdin_init P((struct sconnection *qconn));
        !           303: extern boolean fsysdep_modem_init P((struct sconnection *qconn));
        !           304: extern boolean fsysdep_direct_init P((struct sconnection *qconn));
        !           305: #if HAVE_TCP
        !           306: extern boolean fsysdep_tcp_init P((struct sconnection *qconn));
        !           307: #endif
        !           308: #if HAVE_TLI
        !           309: extern boolean fsysdep_tli_init P((struct sconnection *qconn));
        !           310: #endif
        !           311: 
        !           312: #endif /* ! defined (CONN_H) */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.