From decwrl!elroy.jpl.nasa.gov!ncar!zaphod.mps.ohio-state.edu!swrinde!cs.utexas.edu!uunet!allbery Wed May 16 10:13:05 PDT 1990 Article 1550 of comp.sources.misc: Path: decwrl!elroy.jpl.nasa.gov!ncar!zaphod.mps.ohio-state.edu!swrinde!cs.utexas.edu!uunet!allbery From: wht%n4hgf@gatech.edu (Warren Tucker) Newsgroups: comp.sources.misc Subject: v12i070: ECU 2.80 part 17/29 Message-ID: <88373@uunet.UU.NET> Date: 12 May 90 02:01:32 GMT Sender: allbery@uunet.UU.NET Lines: 1633 Approved: 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 [] X X 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 [] X X 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 [] X X 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 [] X X 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 [] X X, 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 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 [] X XThis command allows you to change the working directory of the ecu Xprocess. If is supplied, the previous working directory is Xdisplayed, and 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 [] X X 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 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 [ ... ] X XPerform ecu procedure. Ecu searches for .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 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 [] 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 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 [] 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. 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 [] 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 [] 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 causes the current setting to be Xdisplayed. The format of is flexible: 'y' or '1' enables Xappending NL to CR, 'n' or '0' causes the feature to be disabled. X#-------------------------------------------------------------------- X%nlout XUsage: nlout [] 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 causes the current setting to be Xdisplayed. The format of 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 [ []] X XThis command redials a number previously dialed with the 'dial' command. XModem status is tested and multiple retries may be made. Xspecifies how many retries are to be made. specifies Xhow many seconds the program pauses after a failure to connect. You Xmust specify in order to specify . The Xdefault value for is 10, for 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 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 [] 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 [] 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 [] 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 [] 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 [] 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 ! 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 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 X#include 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 X#include X#include X#include X#include X#include X#include X#include X#include X#include 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 \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 Xecuungetty -t /dev/ttyxx Xecuungetty -r /dev/ttyxx 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 X#include X#include X#include X#include X#include X#include X#include 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