#### 12.22.2 Adding Severity Classes ¶

There is another possibility to introduce severity classes besides using the environment variable `SEV_LEVEL`. This simplifies the task of introducing new classes in a running program. One could use the `setenv` or `putenv` function to set the environment variable, but this is toilsome.

Function: `int` addseverity `(int severity, const char *string)` ¶

  Preliminary: | MT-Safe | AS-Unsafe heap lock | AC-Unsafe lock mem | See POSIX Safety Concepts.

  This function allows the introduction of new severity classes which can be addressed by the severity parameter of the `fmtmsg` function. The severity parameter of `addseverity` must match the value for the parameter with the same name of `fmtmsg`, and string is the string printed in the actual messages instead of the numeric value.

  If string is `NULL` the severity class with the numeric value according to severity is removed.

  It is not possible to overwrite or remove one of the default severity classes. All calls to `addseverity` with severity set to one of the values for the default classes will fail.

  The return value is `MM_OK` if the task was successfully performed. If the return value is `MM_NOTOK` something went wrong. This could mean that no more memory is available or a class is not available when it has to be removed.

  This function is not specified in the X/Open Portability Guide although the `fmtsmg` function is. It is available on System V systems.