# sd_bus_message_new_method_error

## NAME



           sd_bus_message_new_method_error, sd_bus_message_new_method_errorf,
           sd_bus_message_new_method_errno, sd_bus_message_new_method_errnof
           - Create an error reply for a method call
    


## SYNOPSIS



           **#include <systemd/sd-bus.h>**
    
           **int sd_bus_message_new_method_error(sd_bus_message ***_call_**,**
                                               **sd_bus_message ****_m_**,**
                                               **const sd_bus_error ***_e_**);**
    
           **int sd_bus_message_new_method_errorf(sd_bus_message ***_call_**,**
                                                **sd_bus_message ****_m_**,**
                                                **const char ***_name_**,**
                                                **const char ***_format_**, ...);**
    
           **int sd_bus_message_new_method_errno(sd_bus_message ***_call_**,**
                                               **sd_bus_message ****_m_**, int** _error_**,**
                                               **const sd_bus_error ***_p_**);**
    
           **int sd_bus_message_new_method_errnof(sd_bus_message ***_call_**,**
                                                **sd_bus_message ****_m_**,**
                                                **int** _error_**,**
                                                **const char ***_format_**, ...);**
    


## DESCRIPTION



           The **sd_bus_message_new_method_error()** function creates a new bus
           message object that is an error reply to the _call_ message, and
           returns it in the _m_ output parameter. The error information from
           error _e_ is appended: the _name_ field of _e_ is used as the error
           identifier in the reply header (for example an error name such as
           "org.freedesktop.DBus.Error.NotSupported" or the equivalent
           symbolic **SD_BUS_ERROR_NOT_SUPPORTED**), and the _message_ field is set
           as the human-readable error message string if present. The error _e_
           must have the _name_ field set, see sd_bus_error_is_set(3).
    
           The **sd_bus_message_new_method_errorf()** function creates an error
           reply similarly to **sd_bus_message_new_method_error()** , but instead
           of a ready error structure, it takes an error identifier string
           _name_ , plus a printf(3) format string _format_ and corresponding
           arguments. An error reply is sent with the error identifier _name_
           and the formatted string as the message.  _name_ and _format_ must not
           be **NULL**.
    
           The **sd_bus_message_new_method_errno()** function creates an error
           reply similarly to **sd_bus_message_new_method_error()** , but in
           addition to the error structure _p_ , it takes an errno(3) error
           value in parameter _error_. If the error _p_ is set (see
           sd_bus_error_is_set(3)), it is used in the reply. Otherwise, _error_
           is translated to an error identifier and used to create a new
           error structure using sd_bus_error_set_errno(3) and that is used
           in the reply. (If _error_ is zero, no error is actually set, and an
           error reply with no information is created.)
    
           The **sd_bus_message_new_method_errnof()** function creates an error
           reply similarly to **sd_bus_message_new_method_error()**. It takes an
           errno(3) error value in parameter _error_ , plus a printf(3) format
           string _format_ and corresponding arguments.  "%m" may be used in
           the format string to refer to the error string corresponding to
           the specified errno code. The error message is initialized using
           the error identifier generated from **error** and the formatted
           string. (If _error_ is zero, no error is actually set, and an error
           reply with no information is created.)
    


## RETURN VALUE



           These functions return 0 if the error reply was successfully
           created, and a negative errno-style error code otherwise.
    
       **Errors**
           Returned errors may indicate the following problems:
    
           **-EINVAL**
               The call message _call_ or the output parameter _m_ are **NULL**.
    
               Message _call_ is not a method call message.
    
               The error _e_ parameter to **sd_bus_message_new_method_error()** is
               not set, see sd_bus_error_is_set(3).
    
           **-EPERM**
               Message _call_ has been sealed.
    
           **-ENOTCONN**
               The bus to which message _call_ is attached is not connected.
    
           **-ENOMEM**
               Memory allocation failed.
    


## NOTES



           Functions described here are available as a shared library, which
           can be compiled against and linked to with the
           **libsystemd pkg-config**(1) file.
    
           The code described here uses getenv(3), which is declared to be
           not multi-thread-safe. This means that the code calling the
           functions described here must not call setenv(3) from a parallel
           thread. It is recommended to only do calls to **setenv()** from an
           early phase of the program when no other threads have been
           started.
    


* * *