home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-05-11 | 54.2 KB | 1,640 lines |
- Newsgroups: comp.sources.misc
- subject: v12i070: ECU 2.80 part 17/29
- from: wht%n4hgf@gatech.edu (Warren Tucker)
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 12, Issue 70
- Submitted-by: wht%n4hgf@gatech.edu (Warren Tucker)
- Archive-name: ecu2.80/part17
-
- ---- Cut Here and unpack ----
- #!/bin/sh
- # This is part 17 of ecu280
- if touch 2>&1 | fgrep '[-amc]' > /dev/null
- then TOUCH=touch
- else TOUCH=true
- fi
- # ============= help/ecuhelp.src ==============
- echo "x - extracting help/ecuhelp.src (Text)"
- sed 's/^X//' << 'SHAR_EOF' > help/ecuhelp.src &&
- X# ecu help ,source file
- X/*+:EDITS:*/
- X/*:11-03-1989-16:21-wht------ unet2 ----- */
- X/*:06-17-1988-11:10-wht-add 'exit' command */
- X/*:06-13-1988-15:38-wht-creation */
- X#--------------------------------------------------------------------
- X%ax
- XUsage: ax [<param>]
- X
- X<param> may be a single ASCII character, a standard ASCII identifier
- X(such as ETX), or a two-character control character identifier (such as
- X^C, typed as a caret followed by a C).
- X
- XIf no parameter is supplied, a table of control characters is printed
- Xcontaining decimal, octal, hex, ASCII identifiers and two-character
- Xcontrol character identifier.
- X#--------------------------------------------------------------------
- X%xa
- XUsage: xa [<hex-val>]
- X
- X<hex-val> is a hexadecimal value between 0 and FF; the parity (sign) bit
- Xis stripped and the equivalent ASCII character value is displayed.
- X
- XIf no parameter is supplied, a table of control characters is printed
- Xcontaining decimal, octal, hex, ASCII identifiers and two-character
- Xcontrol character identifier.
- X#--------------------------------------------------------------------
- X%oa
- XUsage: oa [<octal-val>]
- X
- X<octal-val> is a octal value between 0 and 0377; the parity (sign) bit
- Xis stripped and the equivalent ASCII character value is displayed.
- X
- XIf no parameter is supplied, a table of control characters is printed
- Xcontaining decimal, octal, hex, ASCII identifiers and two-character
- Xcontrol character identifier.
- X#--------------------------------------------------------------------
- X%da
- XUsage: da [<decimal-val>]
- X
- X<decimal-val> is a decimal value between 0 and 0377; the parity (sign)
- Xbit is stripped and the equivalent ASCII character value is displayed.
- X
- XIf no parameter is supplied, a table of control characters is printed
- Xcontaining decimal, octal, hex, ASCII identifiers and two-character
- Xcontrol character identifier.
- X#--------------------------------------------------------------------
- X%baud
- XUsage: baud [<baud-rate>]
- X
- X<baud-rate>, if specified, must be taken from the values 110, 300, 600,
- X1200, 2400, 4800, 9600, 19200 and 38400. On some systems, 19200 and
- X38400 may not be supported. If baud rate 110 is selected, 2 stop bits
- Xare automatically specified; other baud rates set 1 stop bit. If
- X<baud-rate> is not supplied, the current baud rate is displayed.
- X
- XThe setting may be automatically changed as the result of a 'dial'
- Xcommand. See also the 'dial' and 'parity' command descriptions.
- X#--------------------------------------------------------------------
- X%bn
- XUsage: bn [ 0 | 1 | 2 ]
- X
- X"bell notify": This command is only available under XENIX. If no
- Xparameter is supplied, the current setting is displayed. Specifying 0
- Xdisables the facility; 1 causes an audible alarm to be sounded on all of
- Xthe XENIX virtual consoles upon receipt of a bell (0x07) character from
- Xthe remote system; 2 causes an audible alarm to be sent to all consoles
- Xupon receipt of ANY characters from the remote system. A non-zero value
- Xalso causes an audible alarm to be sent to all console upon the
- Xsuccessful completion of a 'redial' command which must retry more than
- Xone redial attempt or upon completion of a file transfer operation.
- X
- XDifferent alarms are sent depending upon the the type of event causing
- Xthe alarms.
- X#--------------------------------------------------------------------
- X%break
- XUsage: break
- X
- XThis command sends a break signal to the remote system.
- X#--------------------------------------------------------------------
- X%cd
- XUsage: cd [<dir-path>]
- X
- XThis command allows you to change the working directory of the ecu
- Xprocess. If <dir-path> is supplied, the previous working directory is
- Xdisplayed, and <dir-path> is made the new working directory. A history
- Xof previous directory changes is maintained. Entering the 'cd' command
- Xshows the numbered history list and allows you to select a new directory
- Xby entering the number. Other commands allow deletion of directories
- Xfrom the list or saving the list to file ~/.ecu/phone. This file is
- Xautomatically read at ecu startup, providing a convenient list of
- Xdirectories available for quick selection.
- X#--------------------------------------------------------------------
- X%dial
- XUsage: dial [<dial-param>]
- X
- X<dial-param> may take one of two forms, a telephone number to dial or a
- Xlogical name which can be found in the user phone directory (in file
- X~/.ecu/phone).
- X
- XIf a telephone number is supplied, the phone number is dialed; you must
- Xfirst have set the desired baud rate and parity using the 'baud' and
- X'parity' commands. If a logical name is entered, the phone directory is
- Xsearched; if the entry is found, the baud rate and parity is
- Xautomatically set and the number dialed.
- X
- XIf <dial-param> is not supplied, then a screen-oriented self-documenting
- Xdirectory manager is executed; you may scan the the directory to select
- Xa number to dial, as well as add, remove and edit entries. See also
- X'baud' and 'parity'.
- X#--------------------------------------------------------------------
- X%do
- XUsage: do <procname> [<arg> ... ]
- X
- XPerform ecu procedure. Ecu searches for <procname>.ep in the current
- Xdirectory. If the file is not found, the program looks for the file in
- Xthe ~/.ecu directory. One or more arguments may be passed to the
- Xprocedure.
- X#--------------------------------------------------------------------
- X%duplex
- XUsage: duplex [ Full | Half ]
- X
- XThis command specifies whether or not ecu is to locally echo characters
- Xtyped by you at the keyboard. The overwhelming majority of remote
- Xsystems provide the echo function, in which case full duplex must be
- Xused. For the rare occasions when the remote system does not echo your
- Xkeyboard input, setting half duplex will allow you to see what you are
- Xtyping.
- X
- XWhen communicating with another terminal in a "teletype conver- sation",
- Xsetting half duplex is generally required. In such cases, use of the
- X'nl', 'nlin' and 'nlout' commands may also be required.
- X
- XThe default setting for duplex is full.
- X#--------------------------------------------------------------------
- X#%esc
- X#Usage esc <hex-constant>
- X#"command escape ": This command is used only on non-XENIX systems.
- X#It specifies the equivalent character for the HOME key used
- X#by XENIX versions of ecu to enter the commands being described
- X#by this help function. The default setting for this command escape
- X#s '%'. To change the value, you must enter the hexadecimal value
- X#of the desired character; it must be in the range 01 through 7F.
- X#You may use the 'ax' command to aid in converting an ASCII
- X#character to the appropriate hexadecimal value.
- X#--------------------------------------------------------------------
- X%fi
- XUsage: fi [<filename>]
- X
- X"file insert": This command causes file characters to be inserted into
- Xthe transmit data stream as though they had been entered at the
- Xkeyboard. If <filename> is not entered on the command line, a prompt
- Xfor the filename is made. Once the filename has been entered and file
- Xhas been opened, you are asked whether the file should be transmitted at
- Xfull speed, by "echo pacing" or by a single line at a time. You may
- Xalso append an 'f', 'e' or 's' argument to the command line. If your
- Xremote can tolerate it, full speed transmission is the fastest.
- XPressing the interrupt key (DEL) stops a full speed transmission. By
- Xspecifying echo pacing, it is possible to increase the likelihood of
- Xproper receipt. Pressing the interrupt key (DEL) stops an echo paced
- Xtransmission. As a last resort, if echo pacing is not working for you,
- X(i.e., you are using the command in an environment where the remote does
- Xnot echo your characters), use single line at a time transmission. You
- Xmust press the space key to initiate sending each line. Pressing 'ESC'
- Xor 's' stops the transfer.
- X#--------------------------------------------------------------------
- X%fkey
- XUsage: fkey [<keyset_name>]
- X
- XThis command allows the mapping of function keys F1-F12, PgUp, PgDn, End
- Xand Ins and the cursor up, down, left and right keys to emit a desired
- Xsequence of characters when a function key is pressed. <keyset_name>
- Xspecifies which key set in ~/.ecu/keys is to be selected: Sample entry
- Xin ~/.ecu/keys:
- X
- Xhayes
- X F1:escape:+ + +
- X F2:autoans:A T S 0 = 1 cr
- X F3:dial:A T D T
- Xbbs
- X F1:cancel:^K
- X F2:yes:y cr
- X
- XIf a keyset_name matches a logical dial directory name, it is loaded
- Xwhen the number is dialed.
- X#--------------------------------------------------------------------
- X%hangup
- XUsage: hangup
- X
- XThis causes DTR to be momentarily interrupted, terminating any
- Xoutstanding connection. Your DCE (modem) must be able to drop carrier
- Xupon loss of DTR.
- X#--------------------------------------------------------------------
- X%help
- XUsage: help [<cmd-name>]
- X
- XIssuing this command with no argument displays a list of commands
- Xfollowed by a request for a command for further information.
- X#--------------------------------------------------------------------
- X%llp
- XUsage: llp
- X
- XThis command is a shorthand version of 'log /dev/lp'.
- X/dev/lp must not be under the control of a print spooler.
- X#--------------------------------------------------------------------
- X%loff
- XUsage: loff
- X
- XThis command is shorthand for 'log off'. If session logging
- Xis active, it is turned off.
- X#--------------------------------------------------------------------
- X%log
- XUsage: log [-s] [-r] [ | off | filename ]
- X -s "scratch" previous file contents; otherwise append
- X -r "raw" logging; otherwise non-printable characters
- X other than tab and newline are omitted from the log
- X
- XThis command controls session logging; issuing the command with no
- Xargument causes the status of session logging to be displayed. The
- Xspecial argument 'off' causes active logging to be terminated. Other
- Xargument values cause logging to start using the argument as a filename.
- XIssuing a 'log filename' command when logging is already active causes
- Xthe previous file to be closed and the new file to be opened. Switches
- Xare meaningful only when used in conjunction with a filename to start
- Xlogging.
- X#--------------------------------------------------------------------
- X%nl
- XUsage: nl
- X
- XDisplay the current setting of CR/LF mapping. For more information,
- Xrefer to the 'nlin' and 'nlout' command descriptions.
- X#--------------------------------------------------------------------
- X%nlin
- XUsage: nlin [<y-n>]
- X
- XThis command controls whether or not a newline (NL/LF) character is sent
- Xto the screen upon receipt of a carriage return (CR) from the remote
- Xsystem. Most remote computers supply a NL after CR. When communicating
- Xwith another terminal in a "teletype conversation", this is generally
- Xnot the case (see also the 'duplex' command).
- X
- XIssuing the command without <y-n> causes the current setting to be
- Xdisplayed. The format of <y-n> is flexible: 'y' or '1' enables
- Xappending NL to CR, 'n' or '0' causes the feature to be disabled.
- X#--------------------------------------------------------------------
- X%nlout
- XUsage: nlout [<y-n>]
- X
- XThis command controls whether or not a newline (NL/LF) character is sent
- Xto the remote system upon transmission of a carriage return (CR) entered
- Xby the keyboard. Most remote computers do not require (indeed
- X"dislike") a NL after CR. When communicating with another terminal in a
- X"teletype conversation", this is generally not the case (see also the
- X'duplex' command).
- X
- XIssuing the command without <y-n> causes the current setting to be
- Xdisplayed. The format of <y-n> is flexible: 'y' or '1' enables
- Xappending NL to CR, 'n' or '0' causes the feature to be disabled.
- X#--------------------------------------------------------------------
- X%parity
- XUsage: parity [ None | Even | Odd ]
- X
- XThis command controls the parity of characters transmitted by the
- Xkeyboard. Issuing the command with no parameter displays the current
- Xsetting. When the parameter is supplied, only the first character is
- Xrequired. Even or odd parity implies seven data bits; no parity implies
- Xeight data bits. Parity of incoming characters is not checked.
- X
- XThe setting may be automatically changed as the result of a 'dial'
- Xcommand. See also the 'baud' and 'dial' command descriptions.
- X#--------------------------------------------------------------------
- X%pid
- XUsage: pid
- X
- XThis command displays the process id of the ecu transmitter process, the
- Xecu receiver process and the process ids of ecu's parent and group.
- X#--------------------------------------------------------------------
- X%ptrace
- XUsage: ptrace [ 0 | 1 | on | off]
- X
- XThis command controls whether or not procedure execution is to be
- Xtraced.
- X#--------------------------------------------------------------------
- X%pwd
- XUsage: pwd
- X
- XThis command prints the current working directory of the ecu process.
- X#--------------------------------------------------------------------
- X%rk
- XUsage: rk
- X
- XThis command searches the PATH list for 'ckermit' (Columbia University
- XC-Kermit) and invokes it to receive files. See the ecu documentation
- Xfor modifications necessary to ckermit for ecu operation. The file
- X~/.kermrc must be set up to have any desired initialization paraeters
- Xyou desire. Refer to C-Kermit documentation for more information.
- X#--------------------------------------------------------------------
- X%rs
- XUsage: rs
- X
- XThis command invokes a SEAlink receive protocol.
- X#--------------------------------------------------------------------
- X%redial
- XUsage: redial [<retry-count> [<pause-interval>]]
- X
- XThis command redials a number previously dialed with the 'dial' command.
- XModem status is tested and multiple retries may be made. <retry-count>
- Xspecifies how many retries are to be made. <pause-interval> specifies
- Xhow many seconds the program pauses after a failure to connect. You
- Xmust specify <retry-count> in order to specify <pause-interval>. The
- Xdefault value for <retry-count> is 10, for <pause-interval> is 60.
- X
- XYou should know that in some jurisdictions, it is ILLEGAL to dial the
- Xsame telephone number more than a specified number of times during some
- Xinterval of time. In any case, specifying <pause-interval> less than 15
- Xseconds is silently changed to 15 seconds.
- X#--------------------------------------------------------------------
- X%rev
- XUsage: rev
- X
- XThis command displays ecu's revision, the transmitter process id and the
- Xdate and time ecu was made.
- X#--------------------------------------------------------------------
- X%rx
- XUsage: rx
- X
- XThis command invokes a modified version of Chuck Forsberg's rz program
- X(version 1.31) to receive files from the remote system using XMODEM/CRC.
- X
- XAfter entering the command, you are prompted as to whether or not file
- XCR/LF characters are to be converted to newlines. If you are
- Xtransferring text files from a system which contain CR/LF line
- Xterminators, you must answer yes to this question. You should answer no
- Xwhen transferring binary files, such as executables, .arc files and the
- Xlike. File transfer progress is presented on a visual display. To
- Xabort the transfer, press your interrupt key (usually DEL unless reset
- Xwith stty(C)).
- X#--------------------------------------------------------------------
- X%ry
- XUsage: ry
- X
- XThis command invokes a modified version of Chuck Forsberg's rz program
- X(version 1.31) to receive files from the remote system using YMODEM
- Xbatch with CRC-16 error correction. The YMODEM is "true YMODEM", not
- XXMODEM-1k. File transfer progress is presented on a visual display. To
- Xabort the transfer, press your interrupt key (usually DEL unless reset
- Xwith stty(C)).
- X#--------------------------------------------------------------------
- X%rz
- XUsage: rz
- X
- XThis command invokes a modified version of Chuck Forsberg's rz program
- X(version 1.44) to receive files from the remote system using
- XZMODEM/CRC32. File transfer progress is presented on a visual display.
- XTo abort the transfer, press your interrupt key (usually DEL unless
- Xreset with stty(C)).
- X#--------------------------------------------------------------------
- X%sk
- XUsage: sk [<file-list>]
- X
- XThis command searches the PATH list for 'ckermit' (Columbia University
- XC-Kermit) and invokes it to send files. The file ~/.kermrc must be set
- Xup to have any desired initialization paraeters you desire. See the ecu
- Xdocumentation for modifications necessary to ckermit for ecu operation.
- X
- XAfter entering the command, you are prompted as to whether or not file
- Xnewline characters are to be converted to CR/LF. If you are
- Xtransferring text files to a system which requires CR/LF line
- Xterminators, you must answer yes to this question. You should answer no
- Xwhen transferring binary files, such as executables, .arc files and the
- Xlike. You are prompted to enter a list of files to send, which may
- Xcontain one or more wildcard specifications.
- X
- XThe file ~/.kermrc must be set up to have any desired initialization
- Xparameters you desire. Refer to C-Kermit documentation for more
- Xinformation.
- X#--------------------------------------------------------------------
- X%ss
- XUsage: ss [<file-list>]
- X
- XThis command invokes a SEAlink file transmission protocol.
- X#--------------------------------------------------------------------
- X%stat
- XUsage: stat
- X
- XThis command displays statistics about ecu usage.
- X
- XExample display when not connected to a remote system:
- XDate/time: 06-14-1988 11:40:35 (UTC 15:40)
- XTotal chars transmitted: 178
- XTotal chars received: 3681
- X
- XDate/time: 06-14-1988 14:41:24 (UTC 18:41)
- XConnected to CompuHost (555-1234) at 14:40:57
- XParameters: 2400-N-1 Connect time: 00:01:27
- XTotal chars transmitted: 234 (since CONNECT 142)
- XTotal chars received: 2278 (since CONNECT 1478)
- X#--------------------------------------------------------------------
- X%sx
- XUsage: sx [<file-name>]
- X
- XThis command invokes a modified version of Chuck Forsberg's sz program
- X(version 1.44) to send a file to the remote system using XMODEM/CRC.
- X
- XAfter entering the command, you are prompted as to whether or not file
- XCR/LF characters are to be converted to newlines. If you are
- Xtransferring text files from a system which contain CR/LF line termi-
- Xnators, you must answer yes to this question. You should answer no when
- Xtransferring binary files, such as executables, .arc files and the like.
- X
- XYou are prompted to enter a filename to send. File transfer progress is
- Xpresented on a visual display. To abort the transfer, press your
- Xinterrupt key (usually DEL unless reset with stty(C)).
- X#--------------------------------------------------------------------
- X%sy
- XUsage: sy [<file-list>]
- X
- XThis command invokes a modified version of Chuck Forsberg's sz program
- X(version 1.44) to send file(s) to the remote system using YMODEM/CRC.
- X
- XYou are prompted to enter filename(s) to send, which may consist of one
- Xor more wildcard specifications. File transfer progress is presented on
- Xa visual display. To abort the transfer, press your interrupt key
- X(usually DEL unless reset with stty(C)).
- X#--------------------------------------------------------------------
- X%sz
- XUsage: sz [<file-list>]
- X
- XThis command invokes a modified version of Chuck Forsberg's sz program
- X(version 1.44) to send file(s) to the remote system using ZMODEM/CRC32.
- X
- XYou are prompted to enter filename(s) to send, which may consist of one
- Xor more wildcard specifications. File transfer progress is presented on
- Xa visual display. To abort the transfer, press your interrupt key
- X(usually DEL unless reset with stty(C)).
- X
- XNote: if you specify sending only newer files and the remote receiver
- Xdoes not support the feature, it may skip (reject) all your files.
- XRetry the transfer specifying 'N' to 'Transfer only newer files'.
- X#--------------------------------------------------------------------
- X%time
- XUsage: time
- X
- XThis command displays the local date and time as well as the current UTC.
- X#--------------------------------------------------------------------
- X%tty
- XUsage: tty
- X
- XThis command displays the current console tty name.
- X#--------------------------------------------------------------------
- X%exit
- XUsage: exit
- X
- XThis command terminates ecu promptly. If your modem does not drop
- Xcarrier upon loss of Data Terminal Ready (DTR), you must use the
- X'hangup' command prior to issuing the 'exit' command. It is strongly
- Xrecommended that you configure your modem to hang up the phone line when
- XDTR drops. A shorthand version of this command exists: '.' is
- Xequivalent to 'exit'.
- X#--------------------------------------------------------------------
- X%!
- XUsage: !
- X !<command>
- X
- XThe '!' command is a shell escape. The environment variable SHELL is
- Xread to determine what shell program to execute (e.g., /bin/sh, etc).
- XIf '!' is entered by itself, an interactive shell is started; press ^D
- Xto exit back to ecu. If <command> is supplied, it is executed by the
- Xshell with an immediate return to ecu.
- X
- XSimilarly,
- X '$' causes the communications line to be stdin and stdout
- X for the spawned shell
- X '>' causes spawned shell to receive exactly sames files as ecu
- X#--------------------------------------------------------------------
- SHAR_EOF
- $TOUCH -am 1205170689 help/ecuhelp.src &&
- chmod 0644 help/ecuhelp.src ||
- echo "restore of help/ecuhelp.src failed"
- set `wc -c help/ecuhelp.src`;Wc_c=$1
- if test "$Wc_c" != "20801"; then
- echo original size 20801, current size $Wc_c
- fi
- # ============= help/helpgen.c ==============
- echo "x - extracting help/helpgen.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > help/helpgen.c &&
- X/* CHK=0x84E5 */
- X/*+-------------------------------------------------------------------------
- X helpgen.c -- ecu command help file maker
- X wht%n4hgf@gatech.edu
- X
- X Defined functions:
- X build_ecudoc()
- X build_ecuhelp()
- X main(argc,argv,envp)
- X search_cmd_list(cmd)
- X show_cmds()
- X test_help()
- X to_lower(ch)
- X to_upper(ch)
- X usage()
- X
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:05-07-1990-21:24-wht@n4hgf---- 2.80 --- */
- X/*:03-25-1990-14:12-wht@n4hgf------- ecu x2.70 -------- */
- X/*:07-03-1989-22:58-wht------ x2.00 ----- */
- X/*:11-07-1988-13:58-wht-source control point 1.30 */
- X/*:10-24-1988-16:50-wht-works under BSD4 again (mostly)! */
- X/*:06-14-1988-16:06-wht-program now multi-purpose */
- X/*:06-13-1988-13:46-wht-creation */
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X#include "lint_args.h"
- X
- X#if defined(M_XENIX)
- X#if !defined(LINT_ARGS)
- X#define LINT_ARGS
- X#endif
- X#endif
- X
- X#define DECLARE_P_CMD
- X#define HELPGEN
- X#include "../ecucmd.h"
- X
- X#include "../esd.h"
- X#include "../stdio_lint.h"
- X
- X#define PSRC "ecuhelp.src"
- X#define PDAT "ecuhelp.data"
- X#define PDOC "ecuhelp.doc"
- X#define PTXT "ecuhelp.txt"
- X#define PFITXT "../doc/ecufi.txt"
- X#define PFSTXT "../doc/ecufs.txt"
- X
- Xlong start_pos[TOKEN_QUAN];
- Xint token_line[TOKEN_QUAN];
- XFILE *fpsrc; /* help source file */
- XFILE *fpdat; /* help data file */
- XFILE *fpdoc; /* help doc file */
- XFILE *fptxt; /* help nroff file */
- XP_CMD *pcmd;
- Xint src_line = 0;
- Xchar buf[128];
- X
- X/*+-------------------------------------------------------------------------
- X usage()
- X--------------------------------------------------------------------------*/
- Xusage()
- X{
- X fprintf(stderr,"usage: helpgen [-b] [-d] [-s] [-t]\n");
- X fprintf(stderr," -b build %s from %s\n",PDAT,PSRC);
- X fprintf(stderr," -d build %s from %s\n",PDOC,PDAT);
- X fprintf(stderr," -n build nroff %s from %s\n",PTXT,PDAT);
- X fprintf(stderr," -s show list of commands\n");
- X fprintf(stderr," -t test help\n");
- X fprintf(stderr,"At least one switch must be issued. They are executed\n");
- X fprintf(stderr,"in the order shown on the usage line.\n");
- X exit(1);
- X} /* end of usage */
- X
- X/*+-------------------------------------------------------------------------
- X search_cmd_list(cmd)
- X--------------------------------------------------------------------------*/
- XP_CMD *
- Xsearch_cmd_list(cmd)
- Xregister char *cmd;
- X{
- Xregister P_CMD *cmd_list = icmd_cmds;
- X
- X while(cmd_list->token != -1)
- X {
- X if(strcmp(cmd_list->cmd,cmd) == 0)
- X break;
- X cmd_list++;
- X }
- X if(cmd_list->token == -1)
- X return((P_CMD *)0);
- X else
- X return(cmd_list);
- X
- X} /* end of search_cmd_list */
- X
- X/*+-------------------------------------------------------------------------
- X show_cmds()
- Xcommands with null descriptions are "undocumented"
- X--------------------------------------------------------------------------*/
- Xvoid
- Xshow_cmds()
- X{
- Xregister int itmp;
- Xregister P_CMD *pcmd = icmd_cmds;
- Xregister int longest_cmd = 0;
- Xregister int longest_descr = 0;
- Xregister int cmd_count = 0;
- Xregister int nl_flag = 0;
- Xchar s80[80];
- XP_CMD *longest_cmd_p = 0;
- XP_CMD *longest_descr_p = 0;
- X
- X while(pcmd->token != -1)
- X {
- X if(!*pcmd->descr)
- X {
- X pcmd++;
- X continue;
- X }
- X itmp = strlen(pcmd->cmd);
- X if(itmp > longest_cmd)
- X {
- X longest_cmd = itmp;
- X longest_cmd_p = pcmd;
- X }
- X itmp = strlen(pcmd->descr);
- X if(itmp > longest_descr)
- X {
- X longest_descr = itmp;
- X longest_descr_p = pcmd;
- X }
- X pcmd++;
- X }
- X pcmd = icmd_cmds;
- X while(pcmd->token != -1)
- X {
- X if((!pcmd->min) || (!*pcmd->descr))
- X {
- X pcmd++;
- X continue;
- X }
- X strcpy(s80,pcmd->cmd);
- X pad_zstr_to_len(s80,longest_cmd + 2);
- X for(itmp = 0; itmp < pcmd->min; itmp++)
- X s80[itmp] = to_upper(s80[itmp]);
- X fputs(s80,stderr);
- X
- X strcpy(s80,pcmd->descr);
- X pad_zstr_to_len(s80,longest_descr + 1);
- X fputs(s80,stderr);
- X
- X if(nl_flag)
- X fputs("\r\n",stderr);
- X else
- X fputs("| ",stderr);
- X nl_flag = (nl_flag) ? 0 : 1;
- X
- X pcmd++;
- X }
- X if(nl_flag)
- X fputs("\r\n",stderr);
- X
- X itmp = longest_cmd + longest_descr + 5;
- X sprintf(s80,"recwidth = %d\r\n",itmp);
- X fprintf(stderr,s80);
- X pcmd = longest_cmd_p;
- X sprintf(s80,"longest cmd: %s: %s\r\n",pcmd->cmd,pcmd->descr);
- X fprintf(stderr,s80);
- X pcmd = longest_descr_p;
- X sprintf(s80,"longest dsc: %s: %s\r\n",pcmd->cmd,pcmd->descr);
- X fprintf(stderr,s80);
- X
- X} /* end of show_cmds */
- X
- X/*+-------------------------------------------------------------------------
- X build_ecuhelp()
- X--------------------------------------------------------------------------*/
- Xvoid
- Xbuild_ecuhelp()
- X{
- Xregister int itmp;
- Xregister char *cptr;
- X printf("\nBuilding %s\n",PDAT);
- X for(itmp = 0; itmp < TOKEN_QUAN; itmp++)
- X {
- X start_pos[itmp] = 0L;
- X token_line[itmp] = 0;
- X }
- X
- X if((fpsrc = fopen(PSRC,"r")) == NULL)
- X {
- X perror(PSRC);
- X exit(1);
- X }
- X
- X if((fpdat = fopen(PDAT,"w")) == NULL)
- X {
- X perror(PDAT);
- X exit(1);
- X }
- X
- X fwrite((char *)start_pos,sizeof(long), /* write null table */
- X TOKEN_QUAN,fpdat);
- X
- X while(fgets(buf,sizeof(buf),fpsrc) != NULL)
- X {
- X src_line++;
- X itmp = strlen(buf);
- X buf[--itmp] = 0; /* kill trailing nl */
- X if((buf[0] == '#') || (buf[0] == '/')) /* ignore comments */
- X continue;
- X if(buf[0] == '%') /* command indication */
- X {
- XSEARCH_CMD_LIST:
- X if(!(pcmd = search_cmd_list(&buf[1])))
- X {
- X printf("line %d: '%s' not in command table\n",
- X src_line,&buf[1]);
- X while(fgets(buf,sizeof(buf),fpsrc) != NULL)
- X {
- X src_line++;
- X itmp = strlen(buf);
- X buf[--itmp] = 0; /* kill trailing nl */
- X if(buf[0] == '%') /* command indication */
- X goto SEARCH_CMD_LIST;
- X }
- X break;
- X }
- X if(start_pos[pcmd->token])
- X {
- X printf("line %d: '%s' already found on line %d\n",
- X src_line,&buf[1],token_line[pcmd->token]);
- X exit(1);
- X }
- X fputs("\n",fpdat); /* terminate previous command description */
- X start_pos[pcmd->token] = ftell(fpdat);
- X token_line[pcmd->token] = src_line;
- X fputs(" ",fpdat);
- X cptr = &buf[1]; /* command text */
- X itmp = 0;
- X while(*cptr) /* show cmd and min chars required */
- X {
- X if(itmp < pcmd->min)
- X fputc(to_upper(*cptr++),fpdat);
- X else
- X fputc(to_lower(*cptr++),fpdat);
- X itmp++;
- X }
- X if(*pcmd->descr) /* if description present */
- X fprintf(fpdat," : %s\n \n",pcmd->descr);
- X else
- X fputs("\n \n",fpdat);
- X continue;
- X }
- X fprintf(fpdat," %s\n",buf);
- X }
- X
- X fseek(fpdat,0L,0); /* back to position table */
- X fwrite((char *)start_pos,sizeof(long), /* write actual table */
- X TOKEN_QUAN,fpdat);
- X fclose(fpsrc);
- X fputs("\n",fpdat); /* terminate last command */
- X fclose(fpdat);
- X} /* end of build_ecuhelp */
- X
- X/*+-------------------------------------------------------------------------
- X build_ecudoc()
- X--------------------------------------------------------------------------*/
- Xvoid
- Xbuild_ecudoc()
- X{
- Xregister int itmp;
- Xregister char *cptr;
- X
- X printf("\nBuilding %s\n",PDOC);
- X if((fpdat = fopen(PDAT,"r")) == NULL)
- X {
- X perror(PDAT);
- X exit(1);
- X }
- X if((fpdoc = fopen(PDOC,"w")) == NULL)
- X {
- X perror(PDOC);
- X exit(1);
- X }
- X fprintf(fpdoc,
- X "\n ECU Command Help Documentation (PRELIMINARY)\n\n");
- X fprintf(fpdoc,
- X "Commands are accessed by pressing the HOME key followed by one\n");
- X fprintf(fpdoc,
- X "of the following commands (capitalized portions are sufficient\n");
- X fprintf(fpdoc,
- X "to invoke the command):\n");
- X fprintf(fpdoc,"\n");
- X fprintf(fpdoc,
- X"---------------------------------------------------------------------\n");
- X fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
- X pcmd = icmd_cmds;
- X while(pcmd->token != -1)
- X {
- X if(!pcmd->token)
- X {
- X pcmd++;
- X continue;
- X }
- X if(pcmd->min && !start_pos[pcmd->token])
- X {
- X printf("no help available for '%s'\n",pcmd->cmd);
- X pcmd++;
- X continue;
- X }
- X fseek(fpdat,start_pos[pcmd->token],0);
- X while(fgets(buf,sizeof(buf),fpdat) != NULL)
- X {
- X itmp = strlen(buf);
- X buf[--itmp] = 0;
- X if(itmp == 0)
- X break;
- X fprintf(fpdoc,"%s\n",buf);
- X }
- X fprintf(fpdoc,
- X"---------------------------------------------------------------------\n");
- X pcmd++;
- X }
- X fclose(fpdat);
- X fclose(fpdoc);
- X} /* end of build_ecudoc */
- X
- X/*+-------------------------------------------------------------------------
- X build_ecutxt()
- X--------------------------------------------------------------------------*/
- Xvoid
- Xbuild_ecutxt()
- X{
- Xregister int itmp;
- Xregister char *cptr;
- X
- X printf("\nBuilding %s\n",PTXT);
- X if((fpdat = fopen(PDAT,"r")) == NULL)
- X {
- X perror(PDAT);
- X exit(1);
- X }
- X if((fptxt = fopen(PTXT,"w")) == NULL)
- X {
- X perror(PTXT);
- X exit(1);
- X }
- X
- X fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
- X pcmd = icmd_cmds;
- X while(pcmd->token != -1)
- X {
- X if(!pcmd->token)
- X {
- X pcmd++;
- X continue;
- X }
- X if(pcmd->min && !start_pos[pcmd->token])
- X {
- X printf("no help available for '%s'\n",pcmd->cmd);
- X pcmd++;
- X continue;
- X }
- X fseek(fpdat,start_pos[pcmd->token],0);
- X if(fgets(buf,sizeof(buf),fpdat) != NULL)
- X itmp = strlen(buf);
- X buf[--itmp] = 0;
- X cptr = buf;
- X while(*cptr)
- X if(*cptr == ' ')
- X cptr++;
- X else
- X break;
- X fprintf(fptxt,".*s 2 \"%s\"\n.(b L",cptr);
- X while(fgets(buf,sizeof(buf),fpdat) != NULL)
- X {
- X itmp = strlen(buf);
- X buf[--itmp] = 0;
- X if(itmp == 0)
- X break;
- X fprintf(fptxt,"%s\n",buf);
- X }
- X fprintf(fptxt,"\n.)b\n\n");
- X pcmd++;
- X }
- X fclose(fpdat);
- X fclose(fptxt);
- X} /* end of build_ecutxt */
- X
- X/*+-------------------------------------------------------------------------
- X test_help()
- X--------------------------------------------------------------------------*/
- Xvoid
- Xtest_help()
- X{
- Xregister int itmp;
- Xregister char *cptr;
- X
- X/* test code */
- X printf("\nNow to test\n");
- X if((fpdat = fopen(PDAT,"r")) == NULL)
- X {
- X perror(PDAT);
- X exit(1);
- X }
- X fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
- X while(1)
- X {
- X printf("\ncommand: ");
- X fgets(buf,sizeof(buf),stdin);
- X itmp = strlen(buf);
- X buf[--itmp] = 0;
- X if(itmp == 0)
- X break;
- X if(!(pcmd = search_cmd_list(buf)))
- X {
- X printf("'%s' not found in ecu cmd table\n",buf);
- X continue;
- X }
- X if(pcmd->min && !start_pos[pcmd->token])
- X {
- X printf("no help available for '%s'\n",buf);
- X continue;
- X }
- X fseek(fpdat,start_pos[pcmd->token],0);
- X while(fgets(buf,sizeof(buf),fpdat) != NULL)
- X {
- X itmp = strlen(buf);
- X buf[--itmp] = 0;
- X if(itmp == 0)
- X break;
- X printf("%s\n",buf);
- X }
- X }
- X} /* end of test_help */
- X
- X/*+-------------------------------------------------------------------------
- X main(argc,argv,envp)
- X--------------------------------------------------------------------------*/
- Xmain(argc,argv,envp)
- Xint argc;
- Xchar **argv;
- Xchar **envp;
- X{
- Xregister int itmp;
- Xregister char *cptr;
- Xint iargv;
- Xint b_flag = 0;
- Xint s_flag = 0;
- Xint t_flag = 0;
- Xint f_flag = 0;
- Xint d_flag = 0;
- Xint n_flag = 0;
- X
- X setbuf(stdout,NULL);
- X setbuf(stderr,NULL);
- X
- X if(argc < 1)
- X usage();
- X for(iargv = 1; iargv < argc; iargv++)
- X {
- X if(argv[iargv][0] == '-')
- X {
- X switch(itmp = (argv[iargv][1]))
- X {
- X case 'b': b_flag = 1; break;
- X case 's': s_flag = 1; break;
- X case 't': t_flag = 1; break;
- X case 'd': d_flag = 1; break;
- X case 'n': n_flag = 1; break;
- X default:
- X usage();
- X break;
- X }
- X }
- X else
- X usage();
- X }
- X if(!b_flag && !s_flag && !t_flag && !d_flag && !n_flag && !f_flag)
- X usage();
- X
- X if(b_flag)
- X build_ecuhelp();
- X if(d_flag)
- X build_ecudoc();
- X if(n_flag)
- X build_ecutxt();
- X if(s_flag)
- X show_cmds();
- X if(t_flag)
- X test_help();
- X
- X exit(0);
- X} /* end of main */
- X/* end of helpgen.c */
- X/* vi: set tabstop=4 shiftwidth=4: */
- SHAR_EOF
- $TOUCH -am 0507233390 help/helpgen.c &&
- chmod 0644 help/helpgen.c ||
- echo "restore of help/helpgen.c failed"
- set `wc -c help/helpgen.c`;Wc_c=$1
- if test "$Wc_c" != "11238"; then
- echo original size 11238, current size $Wc_c
- fi
- # ============= help/util.c ==============
- echo "x - extracting help/util.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > help/util.c &&
- X/* CHK=0x7C8D */
- X/*+-------------------------------------------------------------------------
- X util.c
- X wht%n4hgf@gatech.edu
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:05-07-1990-21:24-wht@n4hgf---- 2.80 --- */
- X/*:03-25-1990-14:12-wht@n4hgf------- ecu x2.70 -------- */
- X/*:07-03-1989-22:58-wht------ x2.00 ----- */
- X/*:05-08-1989-15:52-wht-creation */
- X
- X#include "lint_args.h"
- X
- X/*+-------------------------------------------------------------------------
- X all touuper/tolower not created equally, so this works!
- X--------------------------------------------------------------------------*/
- Xchar to_upper(ch)
- Xregister char ch;
- X{ return( ((ch >= 'a') && (ch <= 'z')) ? ch - 0x20 : ch);
- X} /* end of to_upper() */
- X
- Xchar to_lower(ch)
- Xregister char ch;
- X{ return( ((ch >= 'A') && (ch <= 'Z')) ? ch + 0x20 : ch);
- X} /* end of to_lower() */
- X
- X
- X/*+-----------------------------------------------------------------------
- X pad_zstr_to_len(zstr,len)
- X
- X pads with spaces to specified length, unless already longer than
- X len in which case the string is truncated to 'len' characters.
- X------------------------------------------------------------------------*/
- Xvoid
- Xpad_zstr_to_len(zstr,len)
- Xchar *zstr;
- Xint len;
- X{
- Xregister int izstr;
- X
- X izstr = strlen(zstr);
- X if(izstr >= len)
- X zstr[len] = 0;
- X else
- X {
- X while(izstr < len)
- X zstr[izstr++] = 0x20;
- X zstr[izstr] = 0;
- X }
- X} /* end of pad_zstr_to_len */
- X
- SHAR_EOF
- $TOUCH -am 0507233390 help/util.c &&
- chmod 0644 help/util.c ||
- echo "restore of help/util.c failed"
- set `wc -c help/util.c`;Wc_c=$1
- if test "$Wc_c" != "1442"; then
- echo original size 1442, current size $Wc_c
- fi
- # ============= ecufriend/Makefile ==============
- if test ! -d 'ecufriend'; then
- echo "x - creating directory ecufriend"
- mkdir 'ecufriend'
- fi
- echo "x - extracting ecufriend/Makefile (Text)"
- sed 's/^X//' << 'SHAR_EOF' > ecufriend/Makefile &&
- X# CHK=0x8D0A
- X#----------------------------------------------------------------
- X# Makefile for sample ecufriend
- X# wht%n4hgf@gatech.edu
- X#----------------------------------------------------------------
- X#+:EDITS:*/
- X#:05-07-1990-21:21-wht@n4hgf-omit fcrc usage in release makes
- X#:01-03-1990-15:30-wht-quit using -Ox --- Oi screws up too much
- X#:11-23-1989-02:37-wht-start support for UNIX V/386
- X#:11-19-1989-18:06-wht-creation
- X
- Xecufriend: ecufriend.c
- X cc -O `sysdep =M_I286 -M2e =M_I386` ecufriend.c -o $@
- SHAR_EOF
- $TOUCH -am 0507233390 ecufriend/Makefile &&
- chmod 0644 ecufriend/Makefile ||
- echo "restore of ecufriend/Makefile failed"
- set `wc -c ecufriend/Makefile`;Wc_c=$1
- if test "$Wc_c" != "502"; then
- echo original size 502, current size $Wc_c
- fi
- # ============= ecufriend/ecufriend.c ==============
- echo "x - extracting ecufriend/ecufriend.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > ecufriend/ecufriend.c &&
- X/* CHK=0xE205 */
- X#define DUMP_SCREEN
- X/*+-------------------------------------------------------------------------
- X ecufriend.c -- example of using ecu shared memory access
- X wht%n4hgf@gatech.edu
- X
- XExecute by ecu procedure command: system -s 'ecufriend '+%itos(%shmid)
- XTo manually execute for perusal, do an ipcs command to find the
- Xshared memory id or HOME pc echo 'shmid='+%itos(%shmid)
- XThen HOME >ecufriend # where # is replaced by the shmid
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:03-25-1990-14:12-wht@n4hgf------- ecu x2.70 -------- */
- X/*:11-11-1989-18:50-wht-creation */
- X
- X#include <stdio.h>
- X#include <signal.h>
- X#include <termio.h>
- X#include <sys/errno.h>
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X#include <time.h>
- X#include <sys/ipc.h>
- X#include <sys/msg.h>
- X#include <sys/shm.h>
- X#include "../ecushm.h"
- X
- XECU_SDS FAR *shm; /* shared segment pointer */
- Xint shmid; /* sharged segment id */
- X
- X/*+-------------------------------------------------------------------------
- X main(argc,argv,envp)
- X--------------------------------------------------------------------------*/
- Xmain(argc,argv,envp)
- Xint argc;
- Xchar **argv;
- Xchar **envp;
- X{
- Xregister itmp;
- X#ifdef DUMP_SCREEN
- Xint row,col;
- Xunsigned char sch;
- X#endif
- X
- X if(argc < 2)
- X {
- X printf("usage: ecufriend <ecu-shmid>\n");
- X exit(255);
- X }
- X shmid = atoi(argv[1]);
- X
- X if((shm = (ECU_SDS FAR *)shmat(shmid,(char FAR *)0,SHM_RDONLY))
- X == (ECU_SDS FAR *)-1)
- X {
- X perror("shmat");
- X exit(1);
- X }
- X
- X printf("ecu shm address = %08lx shmid=%d revision=%08lx\n",
- X shm,shmid,shm->shm_revision);
- X
- X if(shm->shm_revision != SHM_REV)
- X {
- X printf("incompatible shared memory revision (compiled with %08lx)\n",
- X SHM_REV);
- X exit(1);
- X }
- X
- X printf("xmit chars=%lu rcvd chars=%lu\n",
- X shm->xmit_chars,shm->rcvd_chars);
- X printf("The receive cursor position is at column %d row %d\n",
- X shm->cursor_y,shm->cursor_x);
- X
- X printf("If this program was not executed by a shell that closed it,\n");
- X printf("then fd %d is available to us to write and read from the line.\n",
- X shm->Liofd);
- X
- X if(isatty(shm->Liofd))
- X printf("It is available.\n");
- X else
- X printf("It is not available. Even so, we could re-open %s here\n",
- X shm->Lline);
- X
- X if(shm->Lmodem_off_hook)
- X printf("Hmmm.. we seem to be connected to %s at %s\n",
- X shm->Ldescr,shm->Ltelno);
- X
- X#ifdef DUMP_SCREEN
- X printf("screen dump\n");
- X printf("-----------\n");
- X for(row = 0; row < 43; row++)
- X {
- X for(col = 0; col < 79; col++)
- X {
- X sch = shm->screen[row][col];
- X if((sch < 0x20) && (sch > 0x7E))
- X putc('.',stdout);
- X else
- X putc(sch,stdout);
- X }
- X putc('\n',stdout);
- X }
- X#endif
- X
- X exit(0);
- X} /* end of main */
- X
- X/* vi: set tabstop=4 shiftwidth=4: */
- X/* end of ecufriend.c */
- SHAR_EOF
- $TOUCH -am 0507233390 ecufriend/ecufriend.c &&
- chmod 0644 ecufriend/ecufriend.c ||
- echo "restore of ecufriend/ecufriend.c failed"
- set `wc -c ecufriend/ecufriend.c`;Wc_c=$1
- if test "$Wc_c" != "2713"; then
- echo original size 2713, current size $Wc_c
- fi
- # ============= ecuungetty/Makefile ==============
- if test ! -d 'ecuungetty'; then
- echo "x - creating directory ecuungetty"
- mkdir 'ecuungetty'
- fi
- echo "x - extracting ecuungetty/Makefile (Text)"
- sed 's/^X//' << 'SHAR_EOF' > ecuungetty/Makefile &&
- X# CHK=0xC221
- X#+---------------------------------------------------------------
- X# makefile for ecuungetty
- X# must be root to run make install
- X# this make file should be run only by the master ecu Makefile,
- X# or else you must define LCRYPT as needed herein
- X#----------------------------------------------------------------
- X#+:EDITS:*/
- X#:05-07-1990-21:21-wht@n4hgf-omit fcrc usage in release makes
- X#:01-03-1990-15:30-wht-quit using -Ox --- Oi screws up too much
- X#:11-23-1989-02:37-wht-start support for UNIX V/386
- X#:11-02-1989-16:00-wht-unet2 release
- X
- XCFLAGS = `sysdep =M_I386 -O =M_I286 -O -M2le`
- X
- XOBJ = \
- X ../ecuuclc.o\
- X ../ecuLCK.o\
- X ../utmpstat.o\
- X ../bamboozle.o\
- X ecuungetty.o
- X
- Xall: ecuungetty
- X
- Xecuungetty: $(OBJ)
- X cc $(CFLAGS) $(OBJ) -o ecuungetty $(LCRYPT) -lx
- X
- Xinstall: ecuungetty
- X -mkdir /usr/lib/ecu
- X cp ecuungetty /usr/lib/ecu
- X chown root /usr/lib/ecu/ecuungetty
- X chmod u+s /usr/lib/ecu/ecuungetty
- X
- X../bamboozle.o: ../bamboozle.c
- X cd ..;make bamboozle.o
- X
- X../utmpstat.o: ../utmpstat.c
- X cd ..;make utmpstat.o
- X
- X../ecuuclc.o: ../ecuuclc.c
- X cd ..;make ecuuclc.o
- X
- X../ecuLCK.o: ../ecuLCK.c
- X cd ..;make ecuLCK.o
- X
- SHAR_EOF
- $TOUCH -am 0507232890 ecuungetty/Makefile &&
- chmod 0644 ecuungetty/Makefile ||
- echo "restore of ecuungetty/Makefile failed"
- set `wc -c ecuungetty/Makefile`;Wc_c=$1
- if test "$Wc_c" != "1114"; then
- echo original size 1114, current size $Wc_c
- fi
- # ============= ecuungetty/ecuungetty.c ==============
- echo "x - extracting ecuungetty/ecuungetty.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > ecuungetty/ecuungetty.c &&
- X/* CHK=0xDA53 */
- X/*+-------------------------------------------------------------------------
- X ecuungetty.c - ecu "ungetty" program
- X wht%n4hgf@gatech.edu
- X
- Xecuungetty /dev/ttyxx <bamboozle-str>
- Xecuungetty -t /dev/ttyxx <bamboozle-str>
- Xecuungetty -r /dev/ttyxx <bamboozle-str>
- X
- X Defined functions:
- X ecu_log_event(logstr)
- X errno_text(errnum)
- X hangup()
- X main(argc,argv,envp)
- X
- X--------------------------------------------------------------------------*/
- X/*+:EDITS:*/
- X/*:03-27-1990-14:05-wht@n4hgf-retry kill SIGUSR2 up to five times */
- X/*:03-25-1990-14:12-wht@n4hgf------- ecu x2.70 -------- */
- X/*:11-24-1989-21:18-wht-use common utmpstat.c - UNIX upgrade */
- X/*:07-03-1989-22:58-wht------ x2.00 ----- */
- X/*:06-29-1989-17:19-wht-creation */
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X#include <fcntl.h>
- X#include <errno.h>
- X#include <signal.h>
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X#include <utmp.h>
- X#include "../stdio_lint.h"
- X#include "../ecuungetty.h"
- X#include "../utmpstatus.h"
- X
- Xextern struct utmp last_utmp;
- X
- X/*+-------------------------------------------------------------------------
- X ecu_log_event(logstr) - dummy procedure for utmpstat.o
- X--------------------------------------------------------------------------*/
- Xvoid
- Xecu_log_event(logstr)
- Xchar *logstr;
- X{
- X ;
- X} /* end of ecu_log_event */
- X
- X/*+-------------------------------------------------------------------------
- X hangup() - "dummy" for utmpstat.c
- XThis particular incantation will only be called if utmp is non-existent
- Xor not readable.......
- X--------------------------------------------------------------------------*/
- Xhangup()
- X{
- X exit(UGE_NOTROOT);
- X} /* end of hangup */
- X
- X/*+-------------------------------------------------------------------------
- X errno_text(errnum)
- X--------------------------------------------------------------------------*/
- Xchar *
- Xerrno_text(errnum)
- Xint errnum;
- X{
- Xstatic char errstr[12];
- X sprintf(errstr,"E%d\n",errnum);
- X return(errstr);
- X} /* end of errno_text */
- X
- X/*+-------------------------------------------------------------------------
- X main(argc,argv,envp)
- X--------------------------------------------------------------------------*/
- Xmain(argc,argv,envp)
- Xint argc;
- Xchar **argv;
- Xchar **envp;
- X{
- Xint op = 'g'; /* assume "get" operation */
- Xint status;
- Xint itmp;
- Xchar *tty = argv[1];
- Xchar *bamboozlement = argv[2];
- Xchar *bamboozle();
- X
- X if(geteuid() != 0)
- X exit(UGE_NOTROOT);
- X
- X if(*argv[1] == '-')
- X {
- X switch(op = *(argv[1] + 1))
- X {
- X case 'r':
- X case 't':
- X break;
- X default:
- X exit(UGE_BADSWITCH);
- X }
- X if(argc < 3)
- X exit(UGE_BADARGC);
- X tty = argv[2];
- X bamboozlement = argv[3];
- X }
- X else if(argc <= 2)
- X exit(UGE_BADARGC);
- X
- X if(getuid() != 0)
- X {
- X if(strcmp(bamboozlement,bamboozle(getppid())))
- X exit(UGE_CALLER);
- X }
- X
- X status = utmp_status(tty);
- X
- X switch(op)
- X {
- X case 'g':
- X switch(status)
- X {
- X case US_NOTFOUND: /* not in utmp, or getty dead */
- X exit(UG_NOTENAB);
- X case US_LOGIN: /* enabled for login, idle */
- X kill(last_utmp.ut_pid,SIGUSR1);
- X nap(200L);
- X exit(UG_ENAB);
- X case US_DIALOUT: /* enabled for login, currently dialout */
- X case US_LOGGEDIN: /* enabled for login, in use */
- X exit(UG_FAIL);
- X }
- X break;
- X
- X case 't':
- X switch(status)
- X {
- X case US_NOTFOUND: /* not in utmp, or getty dead */
- X exit(UGE_T_NOTFOUND);
- X case US_LOGIN: /* enabled for login, idle */
- X exit(UGE_T_LOGIN);
- X case US_LOGGEDIN: /* enabled for login, in use */
- X exit(UGE_T_LOGGEDIN);
- X case US_DIALOUT: /* enabled for login, currently dialout */
- X exit(UG_RESTART);
- X }
- X break;
- X
- X case 'r':
- X switch(status)
- X {
- X case US_NOTFOUND: /* not in utmp, or getty dead */
- X case US_LOGIN: /* enabled for login, idle */
- X case US_LOGGEDIN: /* enabled for login, in use */
- X exit(0);
- X case US_DIALOUT: /* enabled for login, currently dialout */
- X itmp = 5;
- X while(itmp--)
- X {
- X if(kill(last_utmp.ut_pid,SIGUSR2))
- X break;
- X nap(100L);
- X }
- X exit(0);
- X }
- X break;
- X }
- X exit(0);
- X} /* end of main */
- X
- X/* vi: set tabstop=4 shiftwidth=4: */
- X/* end of ecuungetty.c */
- SHAR_EOF
- $TOUCH -am 0507233390 ecuungetty/ecuungetty.c &&
- chmod 0644 ecuungetty/ecuungetty.c ||
- echo "restore of ecuungetty/ecuungetty.c failed"
- set `wc -c ecuungetty/ecuungetty.c`;Wc_c=$1
- if test "$Wc_c" != "4048"; then
- echo original size 4048, current size $Wc_c
- fi
- # ============= mapkey/README ==============
- if test ! -d 'mapkey'; then
- echo "x - creating directory mapkey"
- mkdir 'mapkey'
- fi
- echo "x - extracting mapkey/README (Text)"
- sed 's/^X//' << 'SHAR_EOF' > mapkey/README &&
- XThis file contains information necessary to map ALT-A through ALT-Z
- Xin accordance with ecuxkey.h to produce unique codes so that
- XALT-[A-Z] can cause ECU to execute procedures with a single keystroke.
- X
- XModify your /usr/lib/keyboard/keys value for the ALT values for
- Xkey codes matching keys [a-z] as follows:
- X
- X ALT-unshifted
- X |
- X V
- X
- X 16 'q' 'Q' dc1 dc1 144 'Q' dc1 dc1 C
- X 17 'w' 'W' etb etb 150 'W' etb etb C
- X 18 'e' 'E' enq enq 132 'E' enq enq C
- X 19 'r' 'R' dc2 dc2 145 'R' dc2 dc2 C
- X 20 't' 'T' dc4 dc4 147 'T' dc4 dc4 C
- X 21 'y' 'Y' em em 152 'Y' em em C
- X 22 'u' 'U' nak nak 148 'U' nak nak C
- X 23 'i' 'I' ht ht 136 'I' ht ht C
- X 24 'o' 'O' si si 142 'O' si si C
- X 25 'p' 'P' dle dle 143 'P' dle dle C
- X 30 'a' 'A' soh soh 128 'A' soh soh C
- X 31 's' 'S' dc3 dc3 146 'S' dc3 dc3 C
- X 32 'd' 'D' eot eot 131 'D' eot eot C
- X 33 'f' 'F' ack ack 133 'F' ack ack C
- X 34 'g' 'G' bel bel 134 'G' bel bel C
- X 35 'h' 'H' bs bs 135 'H' bs bs C
- X 36 'j' 'J' nl nl 137 'J' nl nl C
- X 37 'k' 'K' vt vt 138 'K' vt vt C
- X 38 'l' 'L' np np 139 'L' np np C
- X 44 'z' 'Z' sub sub 153 'Z' sub sub C
- X 45 'x' 'X' can can 151 'X' can can C
- X 46 'c' 'C' etx etx 130 'C' etx etx C
- X 47 'v' 'V' syn syn 149 'V' syn syn C
- X 48 'b' 'B' stx stx 129 'B' stx stx C
- X 49 'n' 'N' so so 141 'N' so so C
- X 50 'm' 'M' cr cr 140 'M' cr cr C
- X
- X
- XA diff file for at.ibm.usa is supplied in keys.usa.ecu.d
- X
- X
- Xvi fodder:
- Xvi:set ts=8:
- SHAR_EOF
- $TOUCH -am 0509094590 mapkey/README &&
- chmod 0644 mapkey/README ||
- echo "restore of mapkey/README failed"
- set `wc -c mapkey/README`;Wc_c=$1
- if test "$Wc_c" != "2060"; then
- echo original size 2060, current size $Wc_c
- fi
- # ============= mapkey/keys.usa.ecu.d ==============
- echo "x - extracting mapkey/keys.usa.ecu.d (Text)"
- sed 's/^X//' << 'SHAR_EOF' > mapkey/keys.usa.ecu.d &&
- XThe mapkey files are marked Confidential :-/, so diffs are supplied.
- X
- X*** /usr/lib/keyboard/at.ibm.usa Sat Jun 17 00:23:55 1989
- X--- keys.usa.ecu Wed May 9 09:42:18 1990
- X***************
- X*** 39,54
- X 13 '=' '+' nop nop '=' '+' nop nop O
- X 14 bs bs del del bs bs del del O
- X 15 ht btab nop nop ht btab nop nop O
- X! 16 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
- X! 17 'w' 'W' etb etb 'w' 'W' etb etb C
- X! 18 'e' 'E' enq enq 'e' 'E' enq enq C
- X! 19 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
- X! 20 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
- X! 21 'y' 'Y' em em 'y' 'Y' em em C
- X! 22 'u' 'U' nak nak 'u' 'U' nak nak C
- X! 23 'i' 'I' ht ht 'i' 'I' ht ht C
- X! 24 'o' 'O' si si 'o' 'O' si si C
- X! 25 'p' 'P' dle dle 'p' 'P' dle dle C
- X 26 '[' '{' esc esc '[' '{' esc esc O
- X 27 ']' '}' gs gs ']' '}' gs gs O
- X 28 cr cr nl nl cr cr nl nl O
- X
- X--- 39,54 -----
- X 13 '=' '+' nop nop '=' '+' nop nop O
- X 14 bs bs del del bs bs del del O
- X 15 ht btab nop nop ht btab nop nop O
- X! 16 'q' 'Q' dc1 dc1 144 'Q' dc1 dc1 C
- X! 17 'w' 'W' etb etb 150 'W' etb etb C
- X! 18 'e' 'E' enq enq 132 'E' enq enq C
- X! 19 'r' 'R' dc2 dc2 145 'R' dc2 dc2 C
- X! 20 't' 'T' dc4 dc4 147 'T' dc4 dc4 C
- X! 21 'y' 'Y' em em 152 'Y' em em C
- X! 22 'u' 'U' nak nak 148 'U' nak nak C
- X! 23 'i' 'I' ht ht 136 'I' ht ht C
- X! 24 'o' 'O' si si 142 'O' si si C
- X! 25 'p' 'P' dle dle 143 'P' dle dle C
- X 26 '[' '{' esc esc '[' '{' esc esc O
- X 27 ']' '}' gs gs ']' '}' gs gs O
- X 28 cr cr nl nl cr cr nl nl O
- X***************
- X*** 53,67
- X 27 ']' '}' gs gs ']' '}' gs gs O
- X 28 cr cr nl nl cr cr nl nl O
- X 29 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- X! 30 'a' 'A' soh soh 'a' 'A' soh soh C
- X! 31 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
- X! 32 'd' 'D' eot eot 'd' 'D' eot eot C
- X! 33 'f' 'F' ack ack 'f' 'F' ack ack C
- X! 34 'g' 'G' bel bel 'g' 'G' bel bel C
- X! 35 'h' 'H' bs bs 'h' 'H' bs bs C
- X! 36 'j' 'J' nl nl 'j' 'J' nl nl C
- X! 37 'k' 'K' vt vt 'k' 'K' vt vt C
- X! 38 'l' 'L' np np 'l' 'L' np np C
- X 39 ';' ':' nop nop ';' ':' nop nop O
- X 40 '\'' '"' nop nop '\'' '"' nop nop O
- X 41 '`' '~' nop nop '`' '~' nop nop O
- X
- X--- 53,67 -----
- X 27 ']' '}' gs gs ']' '}' gs gs O
- X 28 cr cr nl nl cr cr nl nl O
- X 29 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
- X! 30 'a' 'A' soh soh 128 'A' soh soh C
- X! 31 's' 'S' dc3 dc3 146 'S' dc3 dc3 C
- X! 32 'd' 'D' eot eot 131 'D' eot eot C
- X! 33 'f' 'F' ack ack 133 'F' ack ack C
- X! 34 'g' 'G' bel bel 134 'G' bel bel C
- X! 35 'h' 'H' bs bs 135 'H' bs bs C
- X! 36 'j' 'J' nl nl 137 'J' nl nl C
- X! 37 'k' 'K' vt vt 138 'K' vt vt C
- X! 38 'l' 'L' np np 139 'L' np np C
- X 39 ';' ':' nop nop ';' ':' nop nop O
- X 40 '\'' '"' nop nop '\'' '"' nop nop O
- X 41 '`' '~' nop nop '`' '~' nop nop O
- X***************
- X*** 67,79
- X 41 '`' '~' nop nop '`' '~' nop nop O
- X 42 lshift lshift lshift lshift lshift lshift lshift lshift O
- X 43 '\\' '|' fs fs '\\' '|' fs fs O
- X! 44 'z' 'Z' sub sub 'z' 'Z' sub sub C
- X! 45 'x' 'X' can can 'x' 'X' can can C
- X! 46 'c' 'C' etx etx 'c' 'C' etx etx C
- X! 47 'v' 'V' syn syn 'v' 'V' syn syn C
- X! 48 'b' 'B' stx stx 'b' 'B' stx stx C
- X! 49 'n' 'N' so so 'n' 'N' so so C
- X! 50 'm' 'M' cr cr 'm' 'M' cr cr C
- X 51 ',' '<' nop nop ',' '<' nop nop O
- X 52 '.' '>' nop nop '.' '>' nop nop O
- X 53 '/' '?' nop nop '/' '?' nop nop O
- X
- X--- 67,79 -----
- X 41 '`' '~' nop nop '`' '~' nop nop O
- X 42 lshift lshift lshift lshift lshift lshift lshift lshift O
- X 43 '\\' '|' fs fs '\\' '|' fs fs O
- X! 44 'z' 'Z' sub sub 153 'Z' sub sub C
- X! 45 'x' 'X' can can 151 'X' can can C
- X! 46 'c' 'C' etx etx 130 'C' etx etx C
- X! 47 'v' 'V' syn syn 149 'V' syn syn C
- X! 48 'b' 'B' stx stx 129 'B' stx stx C
- X! 49 'n' 'N' so so 141 'N' so so C
- X! 50 'm' 'M' cr cr 140 'M' cr cr C
- X 51 ',' '<' nop nop ',' '<' nop nop O
- X 52 '.' '>' nop nop '.' '>' nop nop O
- X 53 '/' '?' nop nop '/' '?' nop nop O
- SHAR_EOF
- $TOUCH -am 0509094390 mapkey/keys.usa.ecu.d &&
- chmod 0644 mapkey/keys.usa.ecu.d ||
- echo "restore of mapkey/keys.usa.ecu.d failed"
- set `wc -c mapkey/keys.usa.ecu.d`;Wc_c=$1
- if test "$Wc_c" != "5709"; then
- echo original size 5709, current size $Wc_c
- fi
- echo "End of part 17, continue with part 18"
- exit 0
-
-