Annotation of coherent/g/usr/lib/uucp/tay104/contrib/xchat.man, revision 1.1

1.1     ! root        1: .TH xchat 8
        !             2: .SH NAME
        !             3: xchat - Extended chat processor
        !             4: .SH SYNOPSIS
        !             5: .BI "xchat " "scriptfile"
        !             6: .RI " [ " parameter... " ] "
        !             7: .PP
        !             8: where
        !             9: .I scriptfile
        !            10: is the name of a file containing an 
        !            11: .I xchat
        !            12: script. If 
        !            13: .I scriptfile
        !            14: begins with ``/'', then it is assumed to be a full path name for the
        !            15: script file. If not, a configuration-dependent default directory path
        !            16: (usually
        !            17: .B "/usr/local/conf/uucp/"
        !            18: ) is prepended to the script file name. Normally, the default path
        !            19: is the same as that for the Taylor UUCP configuration files.
        !            20: .SH DESCRIPTION
        !            21: .I Xchat
        !            22: is a general-purpose dialing and login program designed for use 
        !            23: with Taylor UUCP as a ``chat-program'', taking the place (or 
        !            24: augmenting) the built-in chat scripting facility. It provides the 
        !            25: ability to closely control timeouts, multiple simultaneous ``expect'' 
        !            26: strings with separate actions, extended terminal control, modem 
        !            27: command character pacing, and more.
        !            28: .PP
        !            29: When used in conjunction with Taylor UUCP's
        !            30: configuration features, 
        !            31: .I xchat
        !            32: can provide you the ability to manage the most intricate login, 
        !            33: dial and hangup needs. The scripts are written in a shell-like (well, 
        !            34: sort-of) style with labels, commands, and parameters, easing the task 
        !            35: of writing procedures for complex terminal communications situations.
        !            36: .PP
        !            37: Because 
        !            38: .I xchat
        !            39: assumes that it is connected to the terminal device via stdin/stdout, 
        !            40: you can easily debug scripts by invoking it from the shell and 
        !            41: responding to the script from the keyboard. A debug logging facility 
        !            42: is included, with the debug output going to a separate user-specified 
        !            43: file. This makes it easy to debug connection problems without wading 
        !            44: through large 
        !            45: .I uucico
        !            46: log and debug files.
        !            47: .PP
        !            48: Formally, a script describes a state machine; 
        !            49: .I xchat
        !            50: interprets the script and does what the state machine
        !            51: tells it to. This section will be much easier to understand 
        !            52: if you obtain listings of the script files supplied with
        !            53: .I xchat.
        !            54: .SH "SCRIPT FILE FORMAT"
        !            55: Script files are ordinary text files containing comments, labels,
        !            56: and statements. Blank lines are ignored. 
        !            57: Comments are denoted by leading ``#''
        !            58: characters. Some statements (those which do not end with an
        !            59: ``extended string'' argument; see below) can also have trailing
        !            60: comments.
        !            61: .PP
        !            62: .I Labels 
        !            63: begin in column one and are ended by colons (:). A label
        !            64: specifies a state name. All lines between a pair of labels are
        !            65: the statements for a single state.
        !            66: .PP
        !            67: Processing always begins at the head of the script (no leading
        !            68: state name is necessary).
        !            69: .PP
        !            70: .I Statements 
        !            71: are divided into two categories, ``action'' and ``expect''.
        !            72: When a state is entered, all of its actions are performed in the
        !            73: order in which they appear in the file.
        !            74: .PP
        !            75: A 
        !            76: .I transition 
        !            77: to another state may occur for any of three reasons:
        !            78: .IP (1) 5
        !            79: One of the actions may cause a transition to
        !            80: another state, in which case the rest of the
        !            81: current state's actions are skipped.
        !            82: Processing resumes with the first action
        !            83: statement of the new state.
        !            84: .IP (2) 5
        !            85: If none of the actions cause a state
        !            86: transition, and there are no expects in the
        !            87: state, processing ``falls through'' to the next
        !            88: state in the file.
        !            89: .IP (3) 5
        !            90: If none of the actions cause a state
        !            91: transition, but there are expects in the
        !            92: state, the state machine pauses until one of
        !            93: the expects is ``satisfied''. It then transitions 
        !            94: to the state named in the expect
        !            95: statement.
        !            96: .PP
        !            97: Finally, there are two action statements which, when executed,
        !            98: cause the script to exit.
        !            99: .SH "SCRIPT FILE STATEMENTS"
        !           100: This section describes all of the statements that may appear in script
        !           101: files, except for a few special action statements. Those are described
        !           102: in a later section, ``Overriding Defaults''.
        !           103: .PP
        !           104: Some statements accept one or two arguments, referred to in the
        !           105: following descriptions as 
        !           106: .IR int ", " ns ", " str ", or "
        !           107: .IR xstr ", to"
        !           108: indicate whether the argument is an integer, a new state name, a
        !           109: string, or an ``extended string'' (described in a later section).
        !           110: .PP
        !           111: For all statements that accept two arguments, the first is the
        !           112: name of a new state, and the second specifies a condition or
        !           113: reason for changing to the new state.
        !           114: .SS "Termination And Informational Statements"
        !           115: These statements are used to place entries into the Taylor UUCP
        !           116: .I Log
        !           117: file, and to cause 
        !           118: .I xchat
        !           119: to exit with successful or failure status. It is also possible to open a 
        !           120: separate
        !           121: .I debug
        !           122: log file and control the level of tracing and error reporting that will go
        !           123: into that log file. This is very useful in debugging 
        !           124: .I xchat
        !           125: scripts.
        !           126: .br
        !           127: .ta 1.0i 1.5i 2.0i
        !           128: .TP 2.0i
        !           129: .B failed
        !           130: Exit script with ``failed'' status. This causes 
        !           131: .I xchat 
        !           132: to exit with status 0.
        !           133: .TP 2.0i
        !           134: .B success
        !           135: Exit script with ``success'' status. This causes
        !           136: .I xchat
        !           137: to exit with status 1.
        !           138: .TP 2.0i
        !           139: .BI "log       " xstr     
        !           140: Send informational message
        !           141: .I xstr 
        !           142: to standard error. When used with Taylor UUCP, this is the 
        !           143: .I Log
        !           144: file for the 
        !           145: .I uucico
        !           146: program.
        !           147: .TP 2.0i
        !           148: .BI "logerr    " xstr     
        !           149: Send message
        !           150: .I xstr 
        !           151: to standard error, with ``ERROR:'' indicator. When used 
        !           152: with Taylor UUCP, this is the 
        !           153: .I Log
        !           154: file for the 
        !           155: .I uucico
        !           156: program.
        !           157: .TP 2.0i
        !           158: .BI "dbgfile   " xstr
        !           159: Open script debugging file 
        !           160: .I xstr.
        !           161: If
        !           162: .I xstr
        !           163: begins with ``/'', it is assumed to be an absolute path name for the
        !           164: debugging file. If not, then a configuration-dependent default directory 
        !           165: path (usually
        !           166: .B "/usr/spool/uucp"
        !           167: ) is prepended to
        !           168: .I xstr.
        !           169: Normally the default path is that of the directory where Taylor UUCP 
        !           170: puts its log files.
        !           171: The debugging file is used to capture a detailed log of the data sent
        !           172: and received, errors encountered, and a trace of script execution.
        !           173: The various types of logging are controlled by the
        !           174: .I "debug mask,"
        !           175: described next. 
        !           176: .B Note:
        !           177: A new log file is created each time 
        !           178: .I xchat
        !           179: runs. Use the 
        !           180: .B log
        !           181: and
        !           182: .B loge
        !           183: commands to log 
        !           184: continuous information onto standard out, which is connected
        !           185: to the Taylor UUCP
        !           186: .I Log
        !           187: file when 
        !           188: .I xchat
        !           189: is run by the Taylor
        !           190: .I uucico.
        !           191: .TP 2.0i
        !           192: .BI "dbgset    " int
        !           193: Set the bits specified in 
        !           194: .I int
        !           195: in the debugging mask. The value in
        !           196: .I int
        !           197: is ``or''ed into the mask. Set bit 0 (value \= 1) for error messages,
        !           198: bit 1 (value \= 2) for dial, login and init errors, bit 2 (value \= 4)
        !           199: for dial, login and init trace with character I/O, and bit 3 (value \= 8)
        !           200: for script processing internals. Normally, you will just turn it all on
        !           201: with a value of 15.
        !           202: .TP 2.0i
        !           203: .BI "dbgclr    " int
        !           204: Clear the bits specified in
        !           205: .I int
        !           206: from the debugging mask.
        !           207: .TP 2.0i
        !           208: .BI "debug     " xstr
        !           209: Write 
        !           210: .I
        !           211: xstr
        !           212: into the debug log. The entry will be enclosed in angle brackets.
        !           213: .TP 2.0i
        !           214: .BI "debuge    " xstr
        !           215: Write
        !           216: .I xstr
        !           217: into the debug log with ``ERROR: '' prepended. The entry will be enclosed
        !           218: in angle brackets. 
        !           219: .SS "Sending Data"
        !           220: These statements are used to transmit data to standard out (the tty or TCP
        !           221: port when used with Taylor UUCP).
        !           222: .I
        !           223: No implied carriage returns are sent.
        !           224: You must include a \\r if you want a carriage return in the string
        !           225: sent by the 
        !           226: .B send
        !           227: command. If you want a return sent after 
        !           228: .B dial
        !           229: or
        !           230: .B sendstr,
        !           231: you must send it with a separate
        !           232: .B send
        !           233: command.
        !           234: .TP 2.0i
        !           235: .B dial
        !           236: Send the string previously set by the 
        !           237: .B telno
        !           238: command to the serial port.
        !           239: .B W
        !           240: and
        !           241: .B P
        !           242: characters in the phone number are
        !           243: converted as described under 
        !           244: .B 
        !           245: Dial Strings,
        !           246: below. This statement also sets a default
        !           247: timeout value, as described under the 
        !           248: .B timeout
        !           249: statement.
        !           250: .TP 2.0i
        !           251: .BI "send      " xstr
        !           252: Send the string 
        !           253: .I xstr 
        !           254: to the serial port.
        !           255: .TP 2.0i
        !           256: .BI "sendstr   " int
        !           257: The argument of this statement is a digit from 0
        !           258: through 7. Send the corresponding string
        !           259: parameter as passed to 
        !           260: .I xchat
        !           261: following the script file name. The parameter is interpreted 
        !           262: as an extended string.
        !           263: .SS "Special Terminal Control Statements"
        !           264: These statements are used to cause the terminal port to perform some special action, or to change the mode of the port.
        !           265: .I 
        !           266: The modes of the port are restored to their original settings
        !           267: .I
        !           268: by xchat before it exits.
        !           269: .TP 2.0i
        !           270: .B flush
        !           271: Flush the terminal port's input buffer.
        !           272: .TP 2.0i
        !           273: .B break
        !           274: Send a break signal.
        !           275: .TP 2.0i
        !           276: .B hangup
        !           277: Momentarily drop Data Terminal Ready (DTR) on the
        !           278: serial port, causing the modem to hang up. (Not
        !           279: usually needed, since 
        !           280: .I uucico
        !           281: does this at the end of each call.)
        !           282: .TP 2.0i
        !           283: .B 7bit
        !           284: Change the port to strip incoming characters to 7 bits. 
        !           285: .I
        !           286: This is the default mode.
        !           287: This mode 
        !           288: is implied when the port has parity enabled, since parity characters
        !           289: are 7-bits wide.
        !           290: .TP 2.0i
        !           291: .B 8bit
        !           292: Change the port to allow incoming 8-bit characters to be passed 
        !           293: to the script processor. This mode has no effect if parity is 
        !           294: enabled, since parity characters are 7-bits wide.
        !           295: .TP 2.0i
        !           296: .B nopar
        !           297: Change the port to 8-bits, no parity. 
        !           298: .I
        !           299: This is the default mode.
        !           300: .TP 2.0i
        !           301: .B evenpar
        !           302: Change the port to 7-bits, even parity. 
        !           303: .I 
        !           304: Incoming characters with parity errors are discarded.
        !           305: .TP 2.0i
        !           306: .B oddpar
        !           307: Change the port to 7-bits, odd parity.
        !           308: .I 
        !           309: Incoming characters with parity errors are discarded.
        !           310: .SS "Counting, Branching, Timing and Testing Statements"
        !           311: These statements are used to control the flow of the 
        !           312: .I xchat
        !           313: script itself, including branching, delays, and counter manipulation.
        !           314: .TP 2.0i
        !           315: .BI "sleep     " int 
        !           316: Delay for 
        !           317: .I int
        !           318: milliseconds.
        !           319: .TP 2.0i
        !           320: .B zero
        !           321: Clear the counter.
        !           322: .TP 2.0i
        !           323: .B count
        !           324: Add one to the counter.
        !           325: .TP 2.0i
        !           326: .BI "ifgtr     " "ns   int"
        !           327: Go to state 
        !           328: .I ns
        !           329: if counter greater than 
        !           330: .I int.
        !           331: .TP 2.0i
        !           332: .BI "goto      " ns
        !           333: Go to state 
        !           334: .I ns 
        !           335: unconditionally.
        !           336: .TP 2.0i
        !           337: .BI "ifstr     " "ns   int"
        !           338: Go to state 
        !           339: .I ns
        !           340: if string parameter 
        !           341: .I int
        !           342: is nonempty.
        !           343: .TP 2.0i
        !           344: .BI "ifnstr    " "ns   int"
        !           345: Go to state
        !           346: .I ns
        !           347: if string parameter 
        !           348: .I int
        !           349: is empty.
        !           350: .TP 2.0i
        !           351: .BI "ifblind   " ns
        !           352: Change to state
        !           353: .I ns
        !           354: if the port is ``blind'' without carrier (CD) asserted.
        !           355: .I 
        !           356: This is not yet implemented, the test always fails.
        !           357: .TP 2.0i
        !           358: .BI "ifblgtr   " "ns   int"
        !           359: Change to state
        !           360: .I ns
        !           361: if the port is ``blind'' without carrier (CD) asserted, and counter
        !           362: is greater then
        !           363: .I int.
        !           364: .I 
        !           365: This is not yet implemented, the test always fails.
        !           366: .SS "Expect Statements"
        !           367: Expect statements are usually the last statements that appear in a
        !           368: given state, though in fact they can appear anywhere within the
        !           369: state. Even if they appear at the beginning, the script processor
        !           370: always does all of the action statements first. As a practical
        !           371: matter, the order of these statements is not significant; they are
        !           372: all interpreted ``in parallel''.
        !           373: .TP 2.0i
        !           374: .BI "expect    " "ns   xstr"
        !           375: Change to state 
        !           376: .I ns 
        !           377: if the string specified by
        !           378: .I xstr 
        !           379: is received from standard input (usually the serial port). 
        !           380: Case is significant, but high-order bits are not
        !           381: checked.
        !           382: .TP 2.0i
        !           383: .BI "ifcarr    " ns
        !           384: Change to state
        !           385: .I ns 
        !           386: if Carrier Detect (CD) is true.
        !           387: .I
        !           388: Not currently implemented. Always changes state.
        !           389: .TP 2.0i
        !           390: .BI "ifhang    " ns
        !           391: Change to state
        !           392: .I ns
        !           393: if a data set hangup occurs (SIGHUP signal received).
        !           394: .TP 2.0i
        !           395: .BI "timeout   " "ns   int"
        !           396: Change to state 
        !           397: .I ns 
        !           398: if the time (in milliseconds)
        !           399: given by 
        !           400: .I int
        !           401: has elapsed without satisfying any
        !           402: expects. If the time specified is 0, a default
        !           403: timeout value (calculated from the length and
        !           404: other characteristics of the most recent dial
        !           405: string) is used.
        !           406: .SH "SCRIPT PROCESSING DETAILS"
        !           407: .SS "Extended Strings"
        !           408: In the statements that accept string arguments, the strings are
        !           409: interpreted as 
        !           410: .I 
        !           411: extended strings. 
        !           412: Extended strings begin with
        !           413: the first nonblank character and continue, including all imbedded
        !           414: and trailing blanks and other whitespace, until (but not
        !           415: including) the end of the line in the script file. (There is no
        !           416: provision for line continuation.)  No trailing spaces should be
        !           417: present between the last ``desired'' character of the string and the
        !           418: end of the line, as they will be included in the stored string and
        !           419: sent or expected, just as they appear in the script file. And,
        !           420: obviously, no trailing comments are permitted!  They will just be
        !           421: stored as part of the string.
        !           422: .PP
        !           423: Within an extended string, the following ``escape sequences'' will
        !           424: be converted as indicated before being sent or expected:
        !           425: .br
        !           426: .nf
        !           427: .in +0.5i
        !           428: \fB\\d\fR      EOT character (control-D)
        !           429: \fB\\N\fR      null character
        !           430: \fB\\n\fR      line feed
        !           431: \fB\\r\fR      carriage return
        !           432: \fB\\s\fR      space
        !           433: \fB\\t\fR      tab
        !           434: \fB\\\-\fR     hyphen
        !           435: \fB\\\\\fR     backslash
        !           436: \fB\\ooo\fR    character with value ooo (in octal)
        !           437: .in -0.5i
        !           438: .fi
        !           439: .PP
        !           440: Since extended strings in scripts can include embedded spaces,
        !           441: tabs, etc., these escape sequences are only required in strings
        !           442: appearing in systems entries, though they may be used in script
        !           443: files to improve readability.
        !           444: .PP
        !           445: The octal-character specification (\\ooo) may have from one to
        !           446: three octal digits; it is terminated either after the third digit
        !           447: or when a non-octal character is encountered. But if you want to
        !           448: specify one of these followed by something that happens to be a
        !           449: valid octal character (for example, a control-A followed by a 7)
        !           450: make sure to include all three digits after the \\ . So \\0017
        !           451: would become a control-A followed by the Ascii character ``7'', but
        !           452: \\17 or \\017 would become a control-Y (decimal value 25). \\1S
        !           453: would convert to a control-A followed by an ``S''.
        !           454: .PP
        !           455: Extended strings are stored without a trailing carriage return
        !           456: unless one is explicitly present in the string (via \\r).
        !           457: .SS "String Parameters"
        !           458: The 
        !           459: .B sendstr 
        !           460: statement sends (after conversion from extended string
        !           461: format) one of the parameters given on the 
        !           462: .I xchat
        !           463: command line following the script file name. 
        !           464: The parameter is selected by the integer
        !           465: argument of the statement.
        !           466: .PP
        !           467: This allows ``generic'' script files to serve
        !           468: for many different systems; the string parameters 
        !           469: provide the phone number, username, password, etc. Character
        !           470: substitutions described under ``extended strings'' above are
        !           471: performed on these strings.
        !           472: .PP
        !           473: The ifstr and ifnstr statements allow further generality in script
        !           474: files, by testing whether a particular parameter is present in the
        !           475: systems entry. For example, a single script can be
        !           476: used both for those systems that require a password and
        !           477: those that do not. The password is specified as the last argument
        !           478: in the 
        !           479: .xchat
        !           480: command; the script can test for this
        !           481: parameter's existence and skip the password sequence if
        !           482: the parameter is empty.
        !           483: .SS "``Wait'' And ``Pause'' Characters In Dial Strings"
        !           484: An additional conversion is performed on dial strings. Dial strings
        !           485: are interpreted as extended strings. Then the characters
        !           486: .B W 
        !           487: and
        !           488: .B P
        !           489: within a dial string are interpreted as ``wait for dial
        !           490: tone'' and ``pause'', and may be converted to other characters. By
        !           491: default, 
        !           492: .B W
        !           493: is left alone, and
        !           494: .B P
        !           495: is converted to a comma (,);
        !           496: these are appropriate for Hayes-type modems. The script may
        !           497: specify other substitutions (see below).
        !           498: .PP
        !           499: .B NOTE: 
        !           500: The Taylor UUCP documentation states that the ``wait'' and ``pause''
        !           501: characters are ``='' and ``-'', respectively. These are actual characters
        !           502: understood by some modems. When using
        !           503: .I xchat
        !           504: you should put
        !           505: .B W
        !           506: and
        !           507: .B P
        !           508: in the dial strings you specify in the Taylor configuration files. 
        !           509: This way, the 
        !           510: .I xchat
        !           511: processor can make the substitution appropriate for the particular 
        !           512: modem in use. Make a separate 
        !           513: .I xchat
        !           514: script for each modem type, e.g.,
        !           515: .I "dial.hayes"
        !           516: and specify the translation there. This way, the phone number strings
        !           517: in the Taylor configuration files can be used with a variety of modems.
        !           518: .SS "Default Timeouts For Dial Strings"
        !           519: When a 
        !           520: .B dial 
        !           521: statement is executed, a default timeout value is set.
        !           522: This is the timeout value used by a subsequent timeout statement
        !           523: if the statement specifies a timeout value of 0.
        !           524: .PP
        !           525: The default timeout is given by:
        !           526: .br
        !           527: .nf
        !           528: .in +2
        !           529: \fIctime\fR + (\fIndigits\fR * \fIdgttime\fR) + (\fInwchar\fR * \fIwtime\fR) + (\fInpchar\fR * \fI ptime\fR) 
        !           530: .in -2
        !           531: .fi
        !           532: .PP
        !           533: where 
        !           534: .I 
        !           535: ndigits, nwchar, 
        !           536: and 
        !           537: .I npchar
        !           538: are the number of digits, wait characters, and pause characters in
        !           539: the dial string, and 
        !           540: .I ctime, dgttime, wtime, 
        !           541: and 
        !           542: .I ptime 
        !           543: are 45 seconds, 0.1 seconds, 10 seconds, and 2 seconds, 
        !           544: respectively.
        !           545: All of these times may be changed as specified below under
        !           546: ``Overriding Defaults.''
        !           547: .SS "Trailing Carriage Returns Not Assumed"
        !           548: In the 
        !           549: .B dial
        !           550: and
        !           551: .B sendstr 
        !           552: statements, the dial string or
        !           553: parameter is sent with no trailing carriage return;
        !           554: if a carriage return must be sent after one of these, a separate
        !           555: send statement must provide it.
        !           556: .SH "OVERRIDING DEFAULTS"
        !           557: The script processor sets several default values. The following
        !           558: statements, which override these defaults, may be useful in
        !           559: certain circumstances.
        !           560: .TP 2.0i
        !           561: .BI "chrdly    " int
        !           562: Since many modems cannot accept dialing commands
        !           563: at full ``computer speed'', the script processor
        !           564: sends all strings with a brief inter-character
        !           565: delay. This statement specifies the delay time,
        !           566: in milliseconds. The default is 100 (0.1 second).
        !           567: .TP 2.0i
        !           568: .BI "pchar     " str
        !           569: Specifies the character to which 
        !           570: .BR P s 
        !           571: in the
        !           572: dial string should be converted. Default is
        !           573: ``,'', for use with Hayes-type modems.
        !           574: .TP 2.0i
        !           575: .BI "ptime     " int
        !           576: Specifies the time, in milliseconds, to allow in
        !           577: the default timeout for each pause character in
        !           578: the dial string. Default is 2000 (2 seconds).
        !           579: .TP 2.0i
        !           580: .BI "wchar     " str
        !           581: Specifies the character to which 
        !           582: .BR W s 
        !           583: in the
        !           584: dial string should be converted. Default is
        !           585: ``W'', for Hayes modems.
        !           586: .TP 2.0i
        !           587: .BI "wtime     " int
        !           588: Specifies the time, in milliseconds, to allow in
        !           589: the default timeout for each wait-for-dialtone
        !           590: character in the dial string. Default is 10000
        !           591: (10 seconds).
        !           592: .TP 2.0i
        !           593: .BI "dgttime   " int
        !           594: Specifies the time, in milliseconds, to allow in
        !           595: the default timeout for each digit character in
        !           596: the dial string. Default is 100 (0.1 second).
        !           597: .TP 2.0i
        !           598: .BI "ctime     " int
        !           599: Specifies the time, in milliseconds, to allow in
        !           600: the default timeout for carrier to appear after
        !           601: the dial string is sent. Default is 45000 (45
        !           602: seconds).
        !           603: .SH "SEE ALSO"
        !           604: uucico(8) for Taylor UUCP, and documentation for Taylor UUCP.
        !           605: .SH AUTHOR
        !           606: Robert B. Denny ([email protected])
        !           607: .SH HISTORY
        !           608: This program is an adaptation of the dial/login script processing 
        !           609: code that is a part of DECUS UUCP for VAX/VMS, written by Jamie 
        !           610: Hanrahan, et. al.
        !           611: .SH BUGS
        !           612: This version (1.1) does not support BSD terminal facilities. Anyone 
        !           613: volunteer to add this?
        !           614: 

unix.superglobalmegacorp.com

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