karld@chinet.UUCP (Karl Denninger) (05/29/87)
May 19, 1987 For Immediate Release MACRO COMPUTER SOLUTIONS, Inc. is proud to announce a new tool in user-friendliness for Unix (tm) systems. MENU is the answer for those users on your system who are unwilling (or unable!) to deal with the intricacies of the Unix operating system. Now your users can enjoy a completely menu-driven command environment, with the option of a full-page display. Ideal for use on public access Unix systems, as well as those systems accessible by customers. MENU is available NOW for Microport UNIX System V, soon to be available for other systems and configurations. Call today for more information on availability for YOUR hardware. As always, MCS stands behind their products, offering low-cost upgrades for one full year on all software (free if you perform the transfer via the phone on your dime). We're ready and willing to serve you -- call anytime! The man page from the MENU product is reproduced below. Permission is hereby granted to reproduce or distribute this entire posting as desired. MENU(1) UNIX 5.0 (Macro Computer Solutions) MENU(1) NAME menu - provide a menu-driven command environment for UNIX SYNOPSIS menu [menufile] DESCRIPTION Menu takes the name of the file specified as "menufile", if any, and reads it in for use as a menu definition. If the name does not begin with a "/", then the path "/etc/menus/" is prepended to the name. If no file is specified on the command line, then a file called "main" is searched for. While using the menu system, you may execute any command in the menu definition by typing the unique portion, in either upper or lower case, and pressing <Return>. Menu will execute the appropriate command if it can be determined from your line. In addition, if the command's definition permits it, you may pass parameters to the command at the time of invocation, and some commands will prompt specifically for parameters. If "menu" is running as your login shell, signals to the menu program are ignored. This is done so you don't accidentally disconnect yourself with ^D, for example. If not a login shell, then menu will respond to interrupts, permitting you to exit with your normal 'interrupt' key (usually either <Delete> or ^C). USER OPTIONS The default mode of the program is a text display, with the menu re-displayed only when the level changes or a user enters a "null" command. If the environment variable VERBMENU is defined, then the menu will always be redisplayed. If the environment variable EXPMENU (expert) is defined, then the menu will never be displayed. If the environment variable CURSMENU (curses) is defined, then the menu system will use curses to present a full- screen display. Very nice, but probably not too useful at slower baud rates; also requires that the maker have included the "curses" fields in the menu definitions. (VERBMENU and EXPMENU can be defined as well, but are not needed and may cause unnecessary re-writing of the screen). MENU FORMAT All menu files have the following format: Page 1 (printed 5/20/87) MENU(1) UNIX 5.0 (Macro Computer Solutions) MENU(1) {Prompt} flags:description:name:command:option/display:r1:c1:r2:c2:wait Prompt - An ascii string, which is to be displayed at the end of the menu. This string is only entered on the very first line of the menu, and is the sole exception to the line format shown below the "{Prompt}" line. flags - One or more flags which specifiy actions, must be specified in the order shown below if there is more than one letter present. * - Normal command (pass command and any options indicated on command line by the user). If an abbreviation command is typed, all options will be concatenated with the full command name and that passed to the system for execution. C - The "desc" field is a comment, and should be displayed without any attempt at interpretation. (Note that if the "desc" field is completely empty TWO blank lines will be output. A space will cause ONE blank line to be printed). D - The "desc" field is comment which should only be displayed if the system is in CURSES mode. If menu is not using CURSES then this item is ignored. Q - If this command is executed, it will cause the menu program to terminate. X - Invisibility flag, keeps menu from displaying the command. N - No parameters are to be passed from the command line. M - "command" field is actually another menu file to be replace the current one. O - An option is present. The "option/display" string is printed, and a line of input accepted from the user. This line is appended to the command which has been executed. desc - An ASCII description of the command. Should fit in 40 characters. name - What the user must type to execute the command. command - The actual path to the command, be it a shell procedure or executable file. option - An optional string to be displayed if the user selects this command. If the "O" flag is specified, this Page 2 (printed 5/20/87) MENU(1) UNIX 5.0 (Macro Computer Solutions) MENU(1) string is a prompt, and the system will display it without a terminating N/L and wait for a response from the user. If the "O" flag is NOT specified, then the string is simply displayed, terminated with a N/L. The following fields are only relavent if CURSMENU is defined for a user. r1 - The row number to display the "name" field at. c1 - The column number to display the "name" field at. r2 - The row to display the "desc" field at. c2 - The column to display the "desc" field at. wait - If this field is a "*", then the system will wait after executing this command for the user to strike a key. A beep will be issued if possible to alert the user to the pause. If the field is blank or not present then the menu will be immediately re-displayed. NOTES The options "Q" and "C" are mutually exclusive, and prohibit scanning of other options which may be present. Both take effect immediately. You may leave a field null (undefined), and even leave off non-required parts of a line. Be aware, though, that CURSMENU will behave strangely if you have not defined lines and columns for the menus (everything will come up in the top left corner). INSTALLATION Menu only needs to run SGID or SUID if you wish to prevent people from viewing the menu structures. If there is no requirement for this, then menu can run as a normal program. In this event, /etc/menus must be "rx" for all. If you wish to set menu up as a SGID program, it is recommended that you create a group especially for it. The /etc/menus directory should then be "rx" for group, and "-- -" for others, this will insure that menu can read the files but users running under their own UID/GID cannot. Menu should be placed in /usr/lbin. A compile-time option is available to change this if needed. LIMITATIONS Menus are limited to 100 items each. If CURSMENU is defined in the environment but the menus have not been set up for curses use then all items will appear in Page 3 (printed 5/20/87) MENU(1) UNIX 5.0 (Macro Computer Solutions) MENU(1) the top right corner of the screen. Remedy is to undefine CURSMENU until the administrator can correct the problem. If CURSMENU is defined but the terminal type you have set doesn't support the "curses" functions, the results are undefined. Moral: Test CURSMENU before making menu a login shell, or you may find yourself unable to sign on! DIAGNOSTICS Various complaints if you menu cannot allocate memory for internal tables, and if required parameter information is missing or files cannot be found. Should be self- explanatory. BUGS None yet! AVAILABILITY Available for SYSV Release 2.0 and up systems as well as some other Unices. Contact MCS using the infomation below if you desire to obtain a copy of this utility for your Unix system. AUTHOR Created May 13, 1987 by Karl Denninger @ Macro Computer Solutions, Inc. Copyright 1987 Macro Computer Solutions, Inc. & Karl Denninger. All rights reserved. Macro Computer Solutions, Inc. 415 S.E. Garfield Mundelein, IL 60060 (312) 566-8910 (Voice) Page 4 (printed 5/20/87) -- Karl Denninger UUCP : ...ihnp4!ddsw1!karl Macro Computer Solutions Dial : +1 (312) 566-8912 (300-2400) "Quality systems at a fair price" Voice: +1 (312) 566-8910 (24 hrs)