Copyright (C) 2000-2012 |
GNU Info (libc.info)ExampleHow to use `fmtmsg' and `addseverity' ------------------------------------- Here is a simple example program to illustrate the use of the both functions described in this section. #include <fmtmsg.h> int main (void) { addseverity (5, "NOTE2"); fmtmsg (MM_PRINT, "only1field", MM_INFO, "text2", "action2", "tag2"); fmtmsg (MM_PRINT, "UX:cat", 5, "invalid syntax", "refer to manual", "UX:cat:001"); fmtmsg (MM_PRINT, "label:foo", 6, "text", "action", "tag"); return 0; } The second call to `fmtmsg' illustrates a use of this function as it usually occurs on System V systems, which heavily use this function. It seems worthwhile to give a short explanation here of how this system works on System V. The value of the LABEL field (`UX:cat') says that the error occurred in the Unix program `cat'. The explanation of the error follows and the value for the ACTION parameter is `"refer to manual"'. One could be more specific here, if necessary. The TAG field contains, as proposed above, the value of the string given for the LABEL parameter, and additionally a unique ID (`001' in this case). For a GNU environment this string could contain a reference to the corresponding node in the Info page for the program. Running this program without specifying the `MSGVERB' and `SEV_LEVEL' function produces the following output: UX:cat: NOTE2: invalid syntax TO FIX: refer to manual UX:cat:001 We see the different fields of the message and how the extra glue (the colons and the `TO FIX' string) are printed. But only one of the three calls to `fmtmsg' produced output. The first call does not print anything because the LABEL parameter is not in the correct form. The string must contain two fields, separated by a colon (Note: Printing Formatted Messages). The third `fmtmsg' call produced no output since the class with the numeric value `6' is not defined. Although a class with numeric value `5' is also not defined by default, the call to `addseverity' introduces it and the second call to `fmtmsg' produces the above output. When we change the environment of the program to contain `SEV_LEVEL=XXX,6,NOTE' when running it we get a different result: UX:cat: NOTE2: invalid syntax TO FIX: refer to manual UX:cat:001 label:foo: NOTE: text TO FIX: action tag Now the third call to `fmtmsg' produced some output and we see how the string `NOTE' from the environment variable appears in the message. Now we can reduce the output by specifying which fields we are interested in. If we additionally set the environment variable `MSGVERB' to the value `severity:label:action' we get the following output: UX:cat: NOTE2 TO FIX: refer to manual label:foo: NOTE TO FIX: action I.e., the output produced by the TEXT and the TAG parameters to `fmtmsg' vanished. Please also note that now there is no colon after the `NOTE' and `NOTE2' strings in the output. This is not necessary since there is no more output on this line because the text is missing. automatically generated by info2www version 1.2.2.9 |