1.\" $NetBSD: msgc.1,v 1.17 2002/09/26 01:26:53 wiz Exp $ 2.\" 3.\" Copyright 1997 Piermont Information Systems Inc. 4.\" All rights reserved. 5.\" 6.\" Written by Philip A. Nelson for Piermont Information Systems Inc. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. All advertising materials mentioning features or use of this software 17.\" must display the following acknowledgement: 18.\" This product includes software developed for the NetBSD Project by 19.\" Piermont Information Systems Inc. 20.\" 4. The name of Piermont Information Systems Inc. may not be used to endorse 21.\" or promote products derived from this software without specific prior 22.\" written permission. 23.\" 24.\" THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 25.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27.\" ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 28.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 34.\" THE POSSIBILITY OF SUCH DAMAGE. 35.\" 36.Dd September 26, 1997 37.Os 38.Dt MSGC 1 39.Sh NAME 40.Nm msgc , 41.Nm msg_window , 42.Nm msg_string , 43.Nm msg_clear , 44.Nm msg_standout , 45.Nm msg_standend , 46.Nm msg_display , 47.Nm msg_display_add , 48.Nm msg_prompt , 49.Nm msg_prompt_add , 50.Nm msg_prompt_noecho , 51.Nm msg_table_add 52.Nd simple message list compiler 53.Sh SYNOPSIS 54msgc 55.Op Fl o Ar name 56.Ar file 57.Pp 58.Fd #include \b'"'msg_defs.h\b'"' 59.Ft void 60.Fn msg_window "WINDOW *window" 61.Ft const char * 62.Fn msg_string "msg msg_no" 63.Ft void 64.Fn msg_clear "void" 65.Ft void 66.Fn msg_standout "void" 67.Ft void 68.Fn msg_standend "void" 69.Ft void 70.Fn msg_display "msg msg_no" ... 71.Ft void 72.Fn msg_display_add "msg msg_no" ... 73.Ft void 74.Fn msg_prompt "msg msg_no" "const char *def" "char *val" "int max_chars" ... 75.Ft void 76.Fn msg_prompt_add "msg msg_no" "const char *def" "char *val" "int max_chars" ... 77.Ft void 78.Fn msg_prompt_noecho "msg msg_no" "const char *def" "char *val" "int max_chars" ... 79.Ft void 80.Fn msg_table_add "msg msg_no" ... 81.Sh DESCRIPTION 82This implements a curses based message display system. 83A source file that lists messages with associated names is given to 84.Nm 85and produces both a .c and a .h file that implement the menu system. 86The standard root name of the files is 87.Pa msg_defs . 88The 89.Fl o Ar name 90can be used to specify a different root name. 91.Sh ENVIRONMENT 92.Bl -tag -width MSGDEF 93.It Ev MSGDEF 94Can be set to point to a different set of 95definition files for 96.Nm msgc . 97The current location defaults to 98.Pa /usr/share/misc . 99.El 100.Sh FILES 101.Bl -item -width /usr/share/misc/msg_sys.def 102.It 103.Pa /usr/share/misc/msg_sys.def 104.El 105.Sh SOURCE DESCRIPTION 106The format is very simple. 107Each message is started with the word 108.Sq message 109followed by the name of the message. 110The body of the message is next and is started by a { and closed by a }. 111The braces are not part of the message. 112Everything, including newlines between the braces are part of the message. 113.Sh MESSAGE FUNCTIONS 114The defined messages are used through calls routines that manipulate 115the messages. 116You first need to set the 117.Xr curses 3 118environment up and then tell the message system which window to use 119for displaying message by calling the function 120.Fn msg_window . 121.Pp 122All variable argument lists in the functions are used as 123are arguments to 124.Xr sprintf 3 . 125The messages may have 126.Xr sprintf 3 127conversions in them and the corresponding parameters should match. 128Messages are identified by name using the notation 129.Sq MENU_name 130where 131.Dq name 132is the name in the message source file. 133(The definitions are accessed by including the generated .h file into a 134source file wanting to use the message routines.) 135.Pp 136The function 137.Fn msg_string 138just returns a pointer to the actual message string. 139The functions 140.Fn msg_clear , 141.Fn msg_standout 142and 143.Fn msg_standend 144respectively clear the message window, set standout mode and clear standout 145mode. 146.Pp 147The functions 148.Fn msg_display 149and 150.Fn msg_display_add 151cause a defined message to be displayed in the message window and does 152the requested conversions before printing. 153The difference is that 154.Fn msg_display 155clears the window before displaying the message. 156These functions fill paragraphs for readability. 157The 158.Fn msg_table_add 159function behaves like 160.Fn msg_display_add 161but does not fill text. 162.Pp 163The remaining functions deal with a prompt facility. 164A prompt message is either taken from the message directory or from a 165given string. 166The message is processed with 167.Xr sprintf 3 168and then displayed. 169If the parameter 170.Ar def 171is 172.No non- Ns Dv NULL 173and not a string of zero length, a default value is printed 174in brackets. 175The user is allowed to type in a response. 176If the user types just the newline character, the default is returned 177in the value. 178The parameter 179.Ar max_chars 180is the length of the parameter 181.Ar val , 182where the results are stored. 183The parameters 184.Ar def 185and 186.Ar val 187may point to the same character array. 188If the default is chosen, the character array is not changed. 189The functions 190.Fn msg_echo 191and 192.Fn msg_noecho 193control whether the prompt routine echo or don't echo the input that 194is typed by the user. 195.Sh AUTHORS 196Philip A. Nelson for Piermont Information Systems Inc. 197