Merge pull request #2831 from firewave/wdoc

mitigated `-Wdocumentation` and `-Wdocumentation-unknown-command` Clang compiler warnings
This commit is contained in:
matt335672
2025-11-06 11:21:40 +00:00
committed by GitHub
48 changed files with 95 additions and 152 deletions
-1
View File
@@ -117,7 +117,6 @@ split_string_append_fragment(const char **start, const char *end,
* *
* @param str String to split. * @param str String to split.
* @param character Character used as the delimiter between strings. * @param character Character used as the delimiter between strings.
* @param start_index Index to start on the source list (zero based)
* *
* @result 0 if a memory allocation failure occurred. * @result 0 if a memory allocation failure occurred.
* *
+2 -9
View File
@@ -84,7 +84,7 @@ internal_log_file_open(const char *fname)
/** /**
* *
* @brief Converts xrdp log level to syslog logging level * @brief Converts xrdp log level to syslog logging level
* @param xrdp logging level * @param lvl logging level
* @return syslog equivalent logging level * @return syslog equivalent logging level
* *
*/ */
@@ -114,7 +114,6 @@ internal_log_xrdp2syslog(const enum logLevels lvl)
* @brief Converts xrdp log levels to textual logging levels * @brief Converts xrdp log levels to textual logging levels
* @param lvl logging level * @param lvl logging level
* @param str pointer to a string, must be allocated before * @param str pointer to a string, must be allocated before
* @return The log string in str pointer.
* *
*/ */
void void
@@ -232,8 +231,6 @@ internal_log_end(struct log_config *l_cfg)
/** /**
* Converts a string representing the log level to a value * Converts a string representing the log level to a value
* @param buf
* @return
*/ */
enum logLevels enum logLevels
internal_log_text2level(const char *buf) internal_log_text2level(const char *buf)
@@ -828,8 +825,7 @@ log_start_from_param(const struct log_config *src_log_config)
/** /**
* This function initialize the log facilities according to the configuration * This function initialize the log facilities according to the configuration
* file, that is described by the in parameter. * file, that is described by the in parameter.
* @param iniFile * @param applicationName the name that is used in the log for the running application
* @param applicationName, the name that is used in the log for the running application
* @return 0 on success * @return 0 on success
*/ */
enum logReturns enum logReturns
@@ -873,7 +869,6 @@ log_start(const char *iniFile, const char *applicationName,
/** /**
* Function that terminates all logging * Function that terminates all logging
* @return
*/ */
enum logReturns enum logReturns
log_end(void) log_end(void)
@@ -1121,7 +1116,6 @@ internal_log_message(const enum logLevels lvl,
/** /**
* Return the configured log file name * Return the configured log file name
* @return
*/ */
char * char *
getLogFile(char *replybuf, int bufsize) getLogFile(char *replybuf, int bufsize)
@@ -1147,7 +1141,6 @@ getLogFile(char *replybuf, int bufsize)
/** /**
* Returns formatted datetime for log * Returns formatted datetime for log
* @return
*/ */
char * char *
getFormattedDateTime(char *replybuf, int bufsize) getFormattedDateTime(char *replybuf, int bufsize)
+24 -38
View File
@@ -224,7 +224,6 @@ struct log_config
* *
* @brief Starts the logging subsystem * @brief Starts the logging subsystem
* @param l_cfg logging system configuration * @param l_cfg logging system configuration
* @return
* *
*/ */
enum logReturns enum logReturns
@@ -241,7 +240,7 @@ internal_log_end(struct log_config *l_cfg);
/** /**
* Converts a log level to a string * Converts a log level to a string
* @param lvl, the loglevel * @param lvl the loglevel
* @param str pointer where the string will be stored. * @param str pointer where the string will be stored.
*/ */
void void
@@ -250,7 +249,7 @@ internal_log_lvl2str(const enum logLevels lvl, char *str);
/** /**
* *
* @brief Converts a string to a log level * @brief Converts a string to a log level
* @param s The string to convert * @param buf The string to convert
* @return The corresponding level or LOG_LEVEL_DEBUG if error * @return The corresponding level or LOG_LEVEL_DEBUG if error
* *
*/ */
@@ -273,12 +272,11 @@ internal_log_config_dump(struct log_config *config);
/** /**
* the log function that all files use to log an event. * the log function that all files use to log an event.
* @param lvl, the loglevel * @param lvl the loglevel
* @param override_destination_level, if true then the destination log level is not used * @param override_destination_level if true then the destination log level is not used
* @param override_log_level, the loglevel instead of the destination log level if override_destination_level is true * @param override_log_level the loglevel instead of the destination log level if override_destination_level is true
* @param msg, the logtext. * @param msg the logtext.
* @param ap, the values for the message format arguments * @param ap the values for the message format arguments
* @return
*/ */
enum logReturns enum logReturns
internal_log_message(const enum logLevels lvl, internal_log_message(const enum logLevels lvl,
@@ -288,9 +286,9 @@ internal_log_message(const enum logLevels lvl,
va_list ap); va_list ap);
/** /**
* @param log_level, the log level * @param log_level the log level
* @param override_destination_level, if true then the destination log level is ignored. * @param override_destination_level if true then the destination log level is ignored.
* @param override_log_level, the log level to use instead of the destination log level * @param override_log_level the log level to use instead of the destination log level
* if override_destination_level is true * if override_destination_level is true
* @return true if at least one log destination will accept a message logged at the given level. * @return true if at least one log destination will accept a message logged at the given level.
*/ */
@@ -300,9 +298,9 @@ internal_log_is_enabled_for_level(const enum logLevels log_level,
const enum logLevels override_log_level); const enum logLevels override_log_level);
/** /**
* @param function_name, the function name (typically the __func__ macro) * @param function_name the function name (typically the __func__ macro)
* @param file_name, the file name (typically the __FILE__ macro) * @param file_name the file name (typically the __FILE__ macro)
* @param[out] log_level_return, the log level to use instead of the destination log level * @param[out] log_level_return the log level to use instead of the destination log level
* @return true if the logger location overrides the destination log levels * @return true if the logger location overrides the destination log levels
*/ */
bool_t bool_t
@@ -316,7 +314,6 @@ internal_log_location_overrides_level(const char *function_name,
/** /**
* This function initialize the log facilities according to the configuration * This function initialize the log facilities according to the configuration
* file, that is described by the in parameter. * file, that is described by the in parameter.
* @param iniFile
* @param applicationName the name that is used in the log for the running * @param applicationName the name that is used in the log for the running
* application * application
* @param flags Flags to affect the operation of the call * @param flags Flags to affect the operation of the call
@@ -328,8 +325,6 @@ log_start(const char *iniFile, const char *applicationName,
/** /**
* An alternative log_start where the caller gives the params directly. * An alternative log_start where the caller gives the params directly.
* @param config
* @return
* *
* @post to avoid memory leaks, the config argument must be free'ed using * @post to avoid memory leaks, the config argument must be free'ed using
* `log_config_free()` * `log_config_free()`
@@ -344,8 +339,8 @@ log_start_from_param(const struct log_config *src_log_config);
* The config can be customised by the caller before calling * The config can be customised by the caller before calling
* log_start_from_param() * log_start_from_param()
* *
* @param Default log level * @param lvl log level
* @param Log level name, or NULL. This can be used to provide an * @param override_name level name, or NULL. This can be used to provide an
* override to the default log level, by environment variable or * override to the default log level, by environment variable or
* argument. * argument.
* *
@@ -357,10 +352,8 @@ log_config_init_for_console(enum logLevels lvl, const char *override_name);
/** /**
* Read configuration from a file and store the values in the returned * Read configuration from a file and store the values in the returned
* log_config. * log_config.
* @param file * @param applicationName the application name used in the log events.
* @param applicationName, the application name used in the log events. * @param section_prefix prefix for the logging sections to parse
* @param section_prefix, prefix for the logging sections to parse
* @return
*/ */
struct log_config * struct log_config *
log_config_init_from_config(const char *iniFilename, log_config_init_from_config(const char *iniFilename,
@@ -375,7 +368,6 @@ log_config_free(struct log_config *config);
/** /**
* Function that terminates all logging * Function that terminates all logging
* @return
*/ */
enum logReturns enum logReturns
log_end(void); log_end(void);
@@ -385,10 +377,8 @@ log_end(void);
* *
* Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly. * Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly.
* *
* @param lvl, the loglevel * @param lvl the loglevel
* @param msg, the logtext. * @param msg the logtext.
* @param ...
* @return
*/ */
enum logReturns enum logReturns
log_message(const enum logLevels lvl, const char *msg, ...) printflike(2, 3); log_message(const enum logLevels lvl, const char *msg, ...) printflike(2, 3);
@@ -405,13 +395,11 @@ log_hexdump(const enum logLevels log_level,
* *
* Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly. * Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly.
* *
* @param function_name, the function name (typically the __func__ macro) * @param function_name the function name (typically the __func__ macro)
* @param file_name, the file name (typically the __FILE__ macro) * @param file_name the file name (typically the __FILE__ macro)
* @param line_number, the line number in the file (typically the __LINE__ macro) * @param line_number the line number in the file (typically the __LINE__ macro)
* @param lvl, the loglevel * @param lvl the loglevel
* @param msg, the logtext. * @param msg the logtext.
* @param ...
* @return
*/ */
enum logReturns enum logReturns
log_message_with_location(const char *function_name, log_message_with_location(const char *function_name,
@@ -434,13 +422,11 @@ log_hexdump_with_location(const char *function_name,
* This function returns the configured file name for the logfile * This function returns the configured file name for the logfile
* @param replybuf the buffer where the reply is stored * @param replybuf the buffer where the reply is stored
* @param bufsize how big is the reply buffer. * @param bufsize how big is the reply buffer.
* @return
*/ */
char *getLogFile(char *replybuf, int bufsize); char *getLogFile(char *replybuf, int bufsize);
/** /**
* Returns formatted datetime for log * Returns formatted datetime for log
* @return
*/ */
char *getFormattedDateTime(char *replybuf, int bufsize); char *getFormattedDateTime(char *replybuf, int bufsize);
+3 -3
View File
@@ -163,7 +163,7 @@ int g_sck_select(int sck1, int sck2);
* @param sck File descriptor for peer * @param sck File descriptor for peer
* @param ip buffer to write IP address to * @param ip buffer to write IP address to
* @param bytes Size of ip buffer. Should be at least MAX_IP_ADDRSTRLEN * @param bytes Size of ip buffer. Should be at least MAX_IP_ADDRSTRLEN
* @param[out] portptr Optional variable to receive the port number * @param[out] port Optional variable to receive the port number
* @return Pointer to IP for convenience * @return Pointer to IP for convenience
* *
* If the peer has no IP address (for example, it is a Unix Domain Socket), * If the peer has no IP address (for example, it is a Unix Domain Socket),
@@ -214,7 +214,7 @@ int g_delete_wait_obj(tintptr obj);
* @param read_objs Array of read objects * @param read_objs Array of read objects
* @param rcount Number of elements in read_objs * @param rcount Number of elements in read_objs
* @param write_objs Array of write objects * @param write_objs Array of write objects
* @param rcount Number of elements in write_objs * @param wcount Number of elements in write_objs
* @param mstimeout Timeout in milliseconds. < 0 means an infinite timeout. * @param mstimeout Timeout in milliseconds. < 0 means an infinite timeout.
* *
* @return 0 for success. The objects will need to be polled to * @return 0 for success. The objects will need to be polled to
@@ -503,7 +503,7 @@ g_malloc_nofail(size_t size);
/** Allocate memory with error-checking /** Allocate memory with error-checking
* *
* @param Number of elements to allocate * @param nmemb Number of elements to allocate
* @param size Size of each element * @param size Size of each element
* @return Allocated memory * @return Allocated memory
* *
+1 -2
View File
@@ -192,7 +192,7 @@ g_bytes_to_hexdump(const char *src, int len);
/** /**
* Extracts the display number from an X11 display string * Extracts the display number from an X11 display string
* *
* @param Display string (i.e. g_getenv("DISPLAY")) * @param display_text Display string (i.e. g_getenv("DISPLAY"))
* *
* @result <0 if the string could not be parsed, or >=0 for a display number * @result <0 if the string could not be parsed, or >=0 for a display number
*/ */
@@ -270,7 +270,6 @@ g_bitmask_to_charstr(int bitmask, const struct bitmask_char bitdefs[],
* *
* @param str Input string * @param str Input string
* @param bitdefs Array mapping tokens to bitmask values * @param bitdefs Array mapping tokens to bitmask values
* @param delim Delimiter for tokens in str
* @param[out] unrecognised Buffer for any unrecognised tokens * @param[out] unrecognised Buffer for any unrecognised tokens
* @param unrecognised_len Length of unrecognised including '\0'; * @param unrecognised_len Length of unrecognised including '\0';
* @return bitmask value for recognised tokens * @return bitmask value for recognised tokens
+1 -1
View File
@@ -62,7 +62,7 @@ timers_oneshot_get_remaining(struct timers_oneshot *timer,
* Variant of timers_oneshot_get_remaining() for g_obj_wait() * Variant of timers_oneshot_get_remaining() for g_obj_wait()
* @param timer pointer to timer (or NULL) * @param timer pointer to timer (or NULL)
* @param now Value of g_get_elapsed_ms() * @param now Value of g_get_elapsed_ms()
* @param[in,out] poll timeout * @param[in,out] timeout timeout
* *
* Use this to update a timeout passed to g_obj_wait() (or poll()). The * Use this to update a timeout passed to g_obj_wait() (or poll()). The
* timeout is updated if the timer will fire before the current timeout. * timeout is updated if the timer will fire before the current timeout.
+1 -1
View File
@@ -350,7 +350,7 @@ case "$with_freetype2" in
fi fi
if test -f $with_freetype2/include/freetype2/ft2build.h; then if test -f $with_freetype2/include/freetype2/ft2build.h; then
FREETYPE2_CFLAGS="-I $with_freetype2/include/freetype2" FREETYPE2_CFLAGS="-isystem $with_freetype2/include/freetype2"
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
AC_MSG_ERROR([Can't find $with_freetype2/include/freetype2/ft2build.h]) AC_MSG_ERROR([Can't find $with_freetype2/include/freetype2/ft2build.h])
+1 -1
View File
@@ -57,7 +57,7 @@ struct program_args
* Parses the program args * Parses the program args
* *
* @param argc Passed to main * @param argc Passed to main
* @param @argv Passed to main * @param argv Passed to main
* @param pa program_pargs structure for resulting values * @param pa program_pargs structure for resulting values
* @return !=0 for success * @return !=0 for success
*/ */
+2 -2
View File
@@ -239,7 +239,7 @@ output_setxkbmap_comment(FILE *outf, const struct kbd_info *kbd_info)
* Output a section of the keymap file * Output a section of the keymap file
* @param outf Output file * @param outf Output file
* @param dpy X display * @param dpy X display
* @param section name Section name (e.g. 'shift') * @param section_name name Section name (e.g. 'shift')
* @param event_state Modifier state needed for XKeyPressedEvent * @param event_state Modifier state needed for XKeyPressedEvent
*/ */
static void static void
@@ -323,7 +323,7 @@ output_file_section(FILE *outf,
* support this key. * support this key.
* *
* @param dpy X display * @param dpy X display
* @reurn boolean * @return boolean
*/ */
static int static int
is_caps_lock_supported(Display *dpy) is_caps_lock_supported(Display *dpy)
+2 -2
View File
@@ -154,7 +154,7 @@ libipm_msg_out_init(struct trans *trans, unsigned short msgno,
* *
* @param trans libipm transport * @param trans libipm transport
* @param format a description of any arguments to add to the buffer. * @param format a description of any arguments to add to the buffer.
* @param != 0 if an error occurs * @return != 0 if an error occurs
* *
* The format string is followed immediately by the arguments it * The format string is followed immediately by the arguments it
* describes. The format string may contain these characters (from the * describes. The format string may contain these characters (from the
@@ -299,7 +299,7 @@ libipm_msg_in_peek_type(struct trans *trans);
* *
* @param trans libipm transport * @param trans libipm transport
* @param format a description of the arguments to read from the buffer. * @param format a description of the arguments to read from the buffer.
* @param != 0 if an error occurs * @return != 0 if an error occurs
* *
* The format string is followed immediately by the arguments it * The format string is followed immediately by the arguments it
* describes. The format string may contain these characters (from the * describes. The format string may contain these characters (from the
-1
View File
@@ -471,7 +471,6 @@ libipm_msg_out_appendv(struct trans *trans, const char *format, va_list *argptr)
* Prepare the transport to build an output message * Prepare the transport to build an output message
* @param trans libipm trans * @param trans libipm trans
* @param msgno Number of message * @param msgno Number of message
* @return != 0 for error
*/ */
static void static void
init_output_buffer(struct trans *trans, unsigned short msgno) init_output_buffer(struct trans *trans, unsigned short msgno)
+1 -1
View File
@@ -70,7 +70,7 @@ struct scp_session_info
enum scp_login_status enum scp_login_status
{ {
E_SCP_LOGIN_OK = 0, ///< The connection is now loggned in E_SCP_LOGIN_OK = 0, ///< The connection is now loggned in
E_SCP_LOGIN_ALREADY_LOGGED_IN, //< A user is currently logged in E_SCP_LOGIN_ALREADY_LOGGED_IN, ///< A user is currently logged in
E_SCP_LOGIN_NO_MEMORY, ///< Memory allocation failure E_SCP_LOGIN_NO_MEMORY, ///< Memory allocation failure
/** /**
* User couldn't be authenticated, or user doesn't exist */ * User couldn't be authenticated, or user doesn't exist */
+1 -1
View File
@@ -38,7 +38,7 @@
* Waits on a single transport for a specific SCP message to be available for * Waits on a single transport for a specific SCP message to be available for
* parsing * parsing
* *
* @param trans libipm transport * @param t libipm transport
* @param wait_msgno Message number to wait for * @param wait_msgno Message number to wait for
* @return != 0 for error * @return != 0 for error
* *
+1 -1
View File
@@ -154,7 +154,7 @@ xrdp_fastpath_send(struct xrdp_fastpath *self, struct stream *s)
/*****************************************************************************/ /*****************************************************************************/
/** /**
* Converts the fastpath keyboard event flags to slowpath event flags * Converts the fastpath keyboard event flags to slowpath event flags
* @param Faspath flags * @param fp_flags fastpath flags
* @return slowpath flags * @return slowpath flags
* *
* See [MMS-RDPBCGR] 2.2.8.1.1.3.1.1.1 and 2.2.8.1.2.2.1 * See [MMS-RDPBCGR] 2.2.8.1.1.3.1.1.1 and 2.2.8.1.2.2.1
-1
View File
@@ -283,7 +283,6 @@ xrdp_iso_process_rdp_neg_req(struct xrdp_iso *self, struct stream *s)
* On exit, the TPKT header and the fixed part of the PDU header will have been * On exit, the TPKT header and the fixed part of the PDU header will have been
* removed from the stream. * removed from the stream.
* *
* @param self
* @param s [in] * @param s [in]
* @param code [out] * @param code [out]
* @param len [out] * @param len [out]
-2
View File
@@ -253,7 +253,6 @@ xrdp_mcs_recv(struct xrdp_mcs *self, struct stream *s, int *chan)
* Parse the identifier and length of a [ITU-T X.690] BER (Basic Encoding Rules) * Parse the identifier and length of a [ITU-T X.690] BER (Basic Encoding Rules)
* structure header. * structure header.
* *
* @param self
* @param s [in] - the stream to read from * @param s [in] - the stream to read from
* @param tag_val [in] - the expected tag value * @param tag_val [in] - the expected tag value
* @param len [out] - the length of the structure * @param len [out] - the length of the structure
@@ -1374,7 +1373,6 @@ xrdp_mcs_send(struct xrdp_mcs *self, struct stream *s, int chan)
/** /**
* Internal help function to close the socket * Internal help function to close the socket
* @param self
*/ */
static void static void
close_rdp_socket(struct xrdp_mcs *self) close_rdp_socket(struct xrdp_mcs *self)
-1
View File
@@ -1642,7 +1642,6 @@ xrdp_rdp_send_deactivate(struct xrdp_rdp *self)
/*****************************************************************************/ /*****************************************************************************/
/** Send a [MS-RDPBCGR] TS_SAVE_SESSION_INFO_PDU_DATA message. /** Send a [MS-RDPBCGR] TS_SAVE_SESSION_INFO_PDU_DATA message.
* *
* @param self
* @param data the data to send to the client in the * @param data the data to send to the client in the
* TS_SAVE_SESSION_INFO_PDU_DATA message. The first 4 bytes of the data * TS_SAVE_SESSION_INFO_PDU_DATA message. The first 4 bytes of the data
* buffer MUST by the infoType value as specified in MS-RDPBCGR 2.2.10.1.1 * buffer MUST by the infoType value as specified in MS-RDPBCGR 2.2.10.1.1
+8 -8
View File
@@ -81,8 +81,8 @@ log_to_stdout(const enum logLevels lvl, const char *msg, ...)
* *
* @param logmsg Function to use to log messages * @param logmsg Function to use to log messages
* @param names List of definitions in the section * @param names List of definitions in the section
* @params values List of corresponding values for the names * @param values List of corresponding values for the names
* @params cfg Pointer to structure we're filling in * @param cfg Pointer to structure we're filling in
* *
* @return 0 for success * @return 0 for success
*/ */
@@ -136,8 +136,8 @@ read_config_globals(log_func_t logmsg,
* *
* @param logmsg Function to use to log messages * @param logmsg Function to use to log messages
* @param names List of definitions in the section * @param names List of definitions in the section
* @params values List of corresponding values for the names * @param values List of corresponding values for the names
* @params cfg Pointer to structure we're filling in * @param cfg Pointer to structure we're filling in
* *
* @return 0 for success * @return 0 for success
*/ */
@@ -189,8 +189,8 @@ read_config_security(log_func_t logmsg,
* *
* @param logmsg Function to use to log messages * @param logmsg Function to use to log messages
* @param names List of definitions in the section * @param names List of definitions in the section
* @params values List of corresponding values for the names * @param values List of corresponding values for the names
* @params cfg Pointer to structure we're filling in * @param cfg Pointer to structure we're filling in
* *
* @return 0 for success * @return 0 for success
*/ */
@@ -279,8 +279,8 @@ read_config_chansrv(log_func_t logmsg,
* *
* @param logmsg Function to use to log messages * @param logmsg Function to use to log messages
* @param names List of definitions in the section * @param names List of definitions in the section
* @params values List of corresponding values for the names * @param values List of corresponding values for the names
* @params cfg Pointer to structure we're filling in * @param cfg Pointer to structure we're filling in
* *
* @return 0 for success * @return 0 for success
*/ */
+2 -2
View File
@@ -79,7 +79,7 @@ config_read(int use_logger, const char *sesman_ini);
/** /**
* *
* @brief Dumps configuration to stdout * @brief Dumps configuration to stdout
* @param pointer to a config_chansrv struct * @param config pointer to a config_chansrv struct
* *
*/ */
void void
@@ -88,7 +88,7 @@ config_dump(struct config_chansrv *config);
/** /**
* *
* @brief Frees configuration allocated by config_read() * @brief Frees configuration allocated by config_read()
* @param pointer to a config_chansrv struct (may be NULL) * @param cs pointer to a config_chansrv struct (may be NULL)
* *
*/ */
void void
+1 -1
View File
@@ -1,7 +1,7 @@
/** /**
* xrdp: A Remote Desktop Protocol server. * xrdp: A Remote Desktop Protocol server.
* *
* Copyright (C) Laxmikant Rashinkar 2013 LK.Rashinkar@gmail.com * Copyright (C) Laxmikant Rashinkar 2013 LK.Rashinkar\@gmail.com
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
+1 -1
View File
@@ -69,7 +69,7 @@ struct clip_file_desc /* CLIPRDR_FILEDESCRIPTOR */
* Input a terminated UTF-16 string from a stream as UTF-8. * Input a terminated UTF-16 string from a stream as UTF-8.
* @param s stream * @param s stream
* @param text UTF-8 String buffer * @param text UTF-8 String buffer
* @param text_len Length of above * @param num_chars Length of above
* @return number of bytes copied from stream * @return number of bytes copied from stream
*/ */
unsigned int unsigned int
+1 -1
View File
@@ -35,7 +35,7 @@ clipboard_process_file_response(struct stream *s, int clip_msg_status,
* *
* Files in the list are added to the xfs filesystem in the clipboard * Files in the list are added to the xfs filesystem in the clipboard
* directory. The filenames names are added to the 'file_list' for the user. * directory. The filenames names are added to the 'file_list' for the user.
* Files are prefixed with '<fprefix><clipboard_dir>/' and separated by '\n'. * Files are prefixed with '<fprefix><clipboard_dir>/' and separated by '\\n'.
* *
* If the list is not big enough, whole filenames are omitted, and a warning * If the list is not big enough, whole filenames are omitted, and a warning
* message is logged. This is not an error. * message is logged. This is not an error.
-1
View File
@@ -1441,7 +1441,6 @@ devredir_get_dir_listing(struct state_dirscan *fusep, tui32 device_id,
* @param fusep opaque data struct that we just pass back to FUSE when done * @param fusep opaque data struct that we just pass back to FUSE when done
* @param device_id device_id of the redirected share * @param device_id device_id of the redirected share
* @param path the name of the directory containing the file * @param path the name of the directory containing the file
* @param file the filename
* *
* @return 0 on success, -1 on failure * @return 0 on success, -1 on failure
*****************************************************************************/ *****************************************************************************/
-18
View File
@@ -452,7 +452,6 @@ scard_send_list_readers(void *user_data, char *context, int context_bytes,
/** /**
* Send get change in status command * Send get change in status command
* *
* @param con connection to client
* @param wide TRUE if unicode string * @param wide TRUE if unicode string
* @param timeout timeout in milliseconds, -1 for infinity * @param timeout timeout in milliseconds, -1 for infinity
* @param num_readers number of entries in rsa * @param num_readers number of entries in rsa
@@ -488,7 +487,6 @@ scard_send_get_status_change(void *user_data, char *context, int context_bytes,
/** /**
* Open a connection to the smart card located in the reader * Open a connection to the smart card located in the reader
* *
* @param con connection to client
* @param wide TRUE if unicode string * @param wide TRUE if unicode string
*****************************************************************************/ *****************************************************************************/
int int
@@ -520,8 +518,6 @@ scard_send_connect(void *user_data, char *context, int context_bytes,
* The reconnect method re-establishes a smart card reader handle. On success, * The reconnect method re-establishes a smart card reader handle. On success,
* the handle is valid once again. * the handle is valid once again.
* *
* @param con connection to client
* @param sc_handle handle to device
* @param rs reader state where following fields are set * @param rs reader state where following fields are set
* rs.shared_mode_flag * rs.shared_mode_flag
* rs.preferred_protocol * rs.preferred_protocol
@@ -556,7 +552,6 @@ scard_send_reconnect(void *user_data, char *context, int context_bytes,
* Lock smart card reader for exclusive access for specified smart * Lock smart card reader for exclusive access for specified smart
* card reader handle. * card reader handle.
* *
* @param con connection to client
*****************************************************************************/ *****************************************************************************/
int int
scard_send_begin_transaction(void *user_data, char *context, int context_bytes, scard_send_begin_transaction(void *user_data, char *context, int context_bytes,
@@ -587,8 +582,6 @@ scard_send_begin_transaction(void *user_data, char *context, int context_bytes,
* Release a smart card reader after being locked by a previously * Release a smart card reader after being locked by a previously
* successful call to Begin Transaction * successful call to Begin Transaction
* *
* @param con connection to client
* @param sc_handle handle to smartcard
*****************************************************************************/ *****************************************************************************/
int int
scard_send_end_transaction(void *user_data, char *context, int context_bytes, scard_send_end_transaction(void *user_data, char *context, int context_bytes,
@@ -620,7 +613,6 @@ scard_send_end_transaction(void *user_data, char *context, int context_bytes,
/** /**
* Get the status of a connection for a valid smart card reader handle * Get the status of a connection for a valid smart card reader handle
* *
* @param con connection to client
* @param wide TRUE if unicode string * @param wide TRUE if unicode string
*****************************************************************************/ *****************************************************************************/
int int
@@ -653,8 +645,6 @@ scard_send_status(void *user_data, int wide, char *context, int context_bytes,
/** /**
* Release a smart card reader handle that was acquired in ConnectA/ConnectW * Release a smart card reader handle that was acquired in ConnectA/ConnectW
* *
* @param con connection to client
* @param sc_handle handle to smartcard
*****************************************************************************/ *****************************************************************************/
int int
scard_send_disconnect(void *user_data, char *context, int context_bytes, scard_send_disconnect(void *user_data, char *context, int context_bytes,
@@ -1584,8 +1574,6 @@ scard_send_Connect(IRP *irp, char *context, int context_bytes,
* The reconnect method re-establishes a smart card reader handle. On success, * The reconnect method re-establishes a smart card reader handle. On success,
* the handle is valid once again. * the handle is valid once again.
* *
* @param con connection to client
* @param sc_handle handle to device
* @param rs reader state where following fields are set * @param rs reader state where following fields are set
* rs.shared_mode_flag * rs.shared_mode_flag
* rs.preferred_protocol * rs.preferred_protocol
@@ -1660,7 +1648,6 @@ scard_send_Reconnect(IRP *irp, char *context, int context_bytes,
* Lock smart card reader for exclusive access for specified smart * Lock smart card reader for exclusive access for specified smart
* card reader handle. * card reader handle.
* *
* @param con connection to client
*****************************************************************************/ *****************************************************************************/
static void static void
scard_send_BeginTransaction(IRP *irp, char *context, int context_bytes, scard_send_BeginTransaction(IRP *irp, char *context, int context_bytes,
@@ -1726,8 +1713,6 @@ scard_send_BeginTransaction(IRP *irp, char *context, int context_bytes,
* Release a smart card reader after being locked by a previously * Release a smart card reader after being locked by a previously
* successful call to Begin Transaction * successful call to Begin Transaction
* *
* @param con connection to client
* @param sc_handle handle to smartcard
*****************************************************************************/ *****************************************************************************/
static void static void
scard_send_EndTransaction(IRP *irp, char *context, int context_bytes, scard_send_EndTransaction(IRP *irp, char *context, int context_bytes,
@@ -1793,7 +1778,6 @@ scard_send_EndTransaction(IRP *irp, char *context, int context_bytes,
/** /**
* Get the status of a connection for a valid smart card reader handle * Get the status of a connection for a valid smart card reader handle
* *
* @param con connection to client
* @param wide TRUE if unicode string * @param wide TRUE if unicode string
*****************************************************************************/ *****************************************************************************/
static void static void
@@ -1881,8 +1865,6 @@ scard_send_Status(IRP *irp, int wide, char *context, int context_bytes,
/** /**
* Release a smart card reader handle that was acquired in ConnectA/ConnectW * Release a smart card reader handle that was acquired in ConnectA/ConnectW
* *
* @param con connection to client
* @param sc_handle handle to smartcard
*****************************************************************************/ *****************************************************************************/
static void static void
scard_send_Disconnect(IRP *irp, char *context, int context_bytes, scard_send_Disconnect(IRP *irp, char *context, int context_bytes,
+1 -1
View File
@@ -32,7 +32,7 @@ struct set_int;
/** /**
* @brief Gets a free display number * @brief Gets a free display number
* *
* @param Displays already allocated (or being allocated) by sesman * @param alloc_displays Displays already allocated (or being allocated) by sesman
* @return next available display, or -1 if none. * @return next available display, or -1 if none.
*/ */
int int
-1
View File
@@ -32,7 +32,6 @@ struct session_item;
/** /**
* *
* @brief Processes an ERCP message * @brief Processes an ERCP message
* @param sc the sesman connection
* *
*/ */
int int
-1
View File
@@ -41,7 +41,6 @@
/** /**
* user is root * user is root
* *
* @param username
* @return 1 if user is UID 0 * @return 1 if user is UID 0
*/ */
static int static int
+6 -6
View File
@@ -39,7 +39,7 @@ struct auth_info;
* @param user user's login name * @param user user's login name
* @param pass user's password * @param pass user's password
* @param client_ip IP address of connecting client (or ""/NULL if not known) * @param client_ip IP address of connecting client (or ""/NULL if not known)
* @param[out] Error code for the operation. E_SCP_LOGIN_OK on success. * @param[out] errorcode Error code for the operation. E_SCP_LOGIN_OK on success.
* @return auth handle on success, NULL on failure * @return auth handle on success, NULL on failure
* *
*/ */
@@ -51,8 +51,8 @@ auth_userpass(const char *user, const char *pass,
* *
* @brief Gets an auth handle for a UDS login * @brief Gets an auth handle for a UDS login
* *
* @param uid User ID * @param user User ID
* @param[out] Error code for the operation. E_SCP_LOGIN_OK on success. * @param[out] errorcode Error code for the operation. E_SCP_LOGIN_OK on success.
* Can be NULL if this information isn't required. * Can be NULL if this information isn't required.
* @return auth handle on success, NULL on failure * @return auth handle on success, NULL on failure
* *
@@ -63,7 +63,7 @@ auth_uds(const char *user, enum scp_login_status *errorcode);
/** /**
* *
* @brief Starts a session * @brief Starts a session
* @param auth_info. Auth handle created by auth_userpass * @param auth_info Auth handle created by auth_userpass
* @param display_num Display number * @param display_num Display number
* @return 0 on success, 1 on failure * @return 0 on success, 1 on failure
* *
@@ -76,7 +76,7 @@ auth_start_session(struct auth_info *auth_info, int display_num);
/** /**
* *
* @brief Deallocates an auth handle and releases all resources * @brief Deallocates an auth handle and releases all resources
* @param auth_info. Auth handle created by auth_userpass * @param auth_info Auth handle created by auth_userpass
* @return 0 on success, 1 on failure * @return 0 on success, 1 on failure
* *
*/ */
@@ -91,7 +91,7 @@ auth_end(struct auth_info *auth_info);
* This call is only effective for PAM-based environments. It must be made * This call is only effective for PAM-based environments. It must be made
* after the context has been switched to the logged-in user. * after the context has been switched to the logged-in user.
* *
* @param auth_info. Auth handle created by auth_userpass * @param auth_info Auth handle created by auth_userpass
* @return 0 on success, 1 on failure * @return 0 on success, 1 on failure
* *
*/ */
+1 -1
View File
@@ -416,7 +416,7 @@ config_read_security(int file, struct config_security *sc,
* *
* @brief Reads sesman [Sessions] configuration section * @brief Reads sesman [Sessions] configuration section
* @param file configuration file descriptor * @param file configuration file descriptor
* @param ss pointer to a config_sessions struct * @param se pointer to a config_sessions struct
* @param param_n parameter name list * @param param_n parameter name list
* @param param_v parameter value list * @param param_v parameter value list
* @return 0 on success, 1 on failure * @return 0 on success, 1 on failure
+3 -3
View File
@@ -185,7 +185,7 @@ struct config_sessions
* @struct config_sesman * @struct config_sesman
* @brief struct that contains sesman configuration * @brief struct that contains sesman configuration
* *
* This struct contains all of sesman configuration parameters\n * This struct contains all of sesman configuration parameters<br>
* Every parameter in [globals] is a member of this struct, other * Every parameter in [globals] is a member of this struct, other
* sections options are embedded in this struct as member structures * sections options are embedded in this struct as member structures
* *
@@ -289,7 +289,7 @@ config_read(const char *sesman_ini);
/** /**
* *
* @brief Dumps configuration * @brief Dumps configuration
* @param pointer to a config_sesman struct * @param config pointer to a config_sesman struct
* *
*/ */
void void
@@ -298,7 +298,7 @@ config_dump(struct config_sesman *config);
/** /**
* *
* @brief Frees configuration allocated by config_read() * @brief Frees configuration allocated by config_read()
* @param pointer to a config_sesman struct (may be NULL) * @param cs pointer to a config_sesman struct (may be NULL)
* *
*/ */
void void
+1 -1
View File
@@ -141,7 +141,7 @@ scp_list_set_peername(struct scp_list_item *sli, const char *name);
/** /**
* @brief Get the wait objs for the SCP list module * @brief Get the wait objs for the SCP list module
* @param @robjs Objects array to update * @param robjs Objects array to update
* @param robjs_count Elements in robjs (by reference) * @param robjs_count Elements in robjs (by reference)
* @return 0 for success * @return 0 for success
*/ */
+1 -1
View File
@@ -65,7 +65,7 @@ log_authfail_message(const char *username, const char *ip_addr)
/** /**
* Authenticate and authorize the connection * Authenticate and authorize the connection
* *
* @param username Name for user * @param supplied_username Name for user
* @param password Password * @param password Password
* @param ip_addr Remote IP address * @param ip_addr Remote IP address
* @param login_info Structure to fill in for a successful login * @param login_info Structure to fill in for a successful login
-1
View File
@@ -78,7 +78,6 @@ login_info_sys_login_user(struct trans *scp_trans,
* Errors are logged. * Errors are logged.
* *
* @param scp_trans SCP transport for talking to the client * @param scp_trans SCP transport for talking to the client
* @param ip_addr IP address for xrdp client
* *
* @result Allocated login_info struct for a successful login * @result Allocated login_info struct for a successful login
*/ */
+1 -1
View File
@@ -171,7 +171,7 @@ sesexec_is_ecp_active(void);
/** /**
* Terminate an active xrdp process * Terminate an active xrdp process
* *
* @param Reason to pass back to the xrdp process (if connected) * @param reason Reason to pass back to the xrdp process (if connected)
* *
* After this call, g_ccp_trans will be NULL * After this call, g_ccp_trans will be NULL
*/ */
+5 -7
View File
@@ -59,7 +59,7 @@ struct session_data
{ {
pid_t x_server; ///< PID of X server pid_t x_server; ///< PID of X server
pid_t win_mgr; ///< PID of window manager pid_t win_mgr; ///< PID of window manager
pid_t chansrv; //< PID of chansrv pid_t chansrv; ///< PID of chansrv
time_t start_time; time_t start_time;
unsigned int connect_count; unsigned int connect_count;
struct session_parameters params; struct session_parameters params;
@@ -154,10 +154,8 @@ session_data_free(struct session_data *session_data)
/******************************************************************************/ /******************************************************************************/
/** /**
* Creates a string consisting of all parameters that is hosted in the param list * Creates a string consisting of all parameters that is hosted in the param list
* @param self * @param outstr allocate this buffer before you use this function
* @param outstr, allocate this buffer before you use this function
* @param len the allocated len for outstr * @param len the allocated len for outstr
* @return
*/ */
static char * static char *
dumpItemsToString(struct list *self, char *outstr, int len) dumpItemsToString(struct list *self, char *outstr, int len)
@@ -410,9 +408,9 @@ prepare_xorg_xserver_params(const struct session_parameters *s,
/** /**
* Prepare a list of parameters for the Xvnc X server * Prepare a list of parameters for the Xvnc X server
* @param s Session parameters * @param s Session parameters
* @params authfile XAUTHORITY file * @param authfile XAUTHORITY file
* @params passwd_file VNC password file, or NULL * @param passwd_file VNC password file, or NULL
* @params port UDS port to connect to, or NULL * @param port UDS port to connect to, or NULL
* @return parameters list * @return parameters list
* *
* One of passwd_file and port must be set * One of passwd_file and port must be set
+1 -3
View File
@@ -84,8 +84,6 @@ session_start(struct login_info *login_info,
* The PID of a failed child process is removed from the session_data. * The PID of a failed child process is removed from the session_data.
* *
* @param sd session_data for this session * @param sd session_data for this session
* @param pid PID of exited process
* @param e Exit status of the exited process
*/ */
void void
session_process_sigchld_event(struct session_data *sd); session_process_sigchld_event(struct session_data *sd);
@@ -148,7 +146,7 @@ session_send_term(struct session_data *sd, int wait_for_all);
/** /**
* Frees a session_data object * Frees a session_data object
* *
* @param sd session_data for this session * @param session_data session_data for this session
* *
* Do not call this until session_active() returns zero, or you * Do not call this until session_active() returns zero, or you
* lose the ability to track the session PIDs * lose the ability to track the session PIDs
+1 -1
View File
@@ -123,7 +123,7 @@ static int nocase_matches(const char *candidate, ...)
* @brief Command line argument parser * @brief Command line argument parser
* @param[in] argc number of command line arguments * @param[in] argc number of command line arguments
* @param[in] argv pointer array of commandline arguments * @param[in] argv pointer array of commandline arguments
* @param[out] sesman_startup_params Returned startup parameters * @param[out] startup_params Returned startup parameters
* @return 0 on success, n on nth argument is unknown * @return 0 on success, n on nth argument is unknown
* *
*/ */
+1 -1
View File
@@ -178,7 +178,7 @@ free_session_info_list(struct scp_session_info *sesslist, unsigned int cnt);
/** /**
* @brief Get the wait objs for the session list module * @brief Get the wait objs for the session list module
* @param @robjs Objects array to update * @param robjs Objects array to update
* @param robjs_count Elements in robjs (by reference) * @param robjs_count Elements in robjs (by reference)
* @return 0 for success * @return 0 for success
*/ */
+2 -2
View File
@@ -91,7 +91,7 @@ usage(void)
* Read a password from a file descriptor * Read a password from a file descriptor
* *
* @param fd_str string representing file descriptor * @param fd_str string representing file descriptor
* @param sp Authmod parameter structure for resulting password * @param amp Authmod parameter structure for resulting password
* @return !=0 for success * @return !=0 for success
*/ */
static int static int
@@ -122,7 +122,7 @@ read_password_from_fd(const char *fd_str, struct authmod_params *amp)
* Parses the program args * Parses the program args
* *
* @param argc Passed to main * @param argc Passed to main
* @param @argv Passed to main * @param argv Passed to main
* @param amp Authmod parameter structure for resulting values * @param amp Authmod parameter structure for resulting values
* @return !=0 for success * @return !=0 for success
*/ */
+2 -2
View File
@@ -109,7 +109,7 @@ struct session_params
/**************************************************************************//** /**************************************************************************//**
* Maps a string to a session type value * Maps a string to a session type value
* *
* @param string session type string * @param t session type string
* @param[out] value session type value * @param[out] value session type value
* @return 0 for success or != 0 if not found * @return 0 for success or != 0 if not found
*/ */
@@ -276,7 +276,7 @@ read_password_from_fd(const char *fd_str, struct session_params *sp)
* Parses the program args * Parses the program args
* *
* @param argc Passed to main * @param argc Passed to main
* @param @argv Passed to main * @param argv Passed to main
* @param sp Session parameter structure for resulting values * @param sp Session parameter structure for resulting values
* @param sesman_ini Pointer to an alternative config file if one is specified * @param sesman_ini Pointer to an alternative config file if one is specified
* @return !=0 for success * @return !=0 for success
+1 -2
View File
@@ -882,7 +882,7 @@ get_bytes_per_pixel(int bpp)
/**************************************************************************//** /**************************************************************************//**
* Skips the specified number of bytes from the transport * Skips the specified number of bytes from the transport
* *
* @param transport Transport to read * @param trans Transport to read
* @param bytes Bytes to skip * @param bytes Bytes to skip
* @return != 0 for error * @return != 0 for error
*/ */
@@ -2552,7 +2552,6 @@ lib_mod_end(struct vnc *v)
* @param [in] height session height * @param [in] height session height
* @param [in] num_monitors (can be 0, meaning one monitor) * @param [in] num_monitors (can be 0, meaning one monitor)
* @param [in] monitors Monitor definitions for num_monitors > 0 * @param [in] monitors Monitor definitions for num_monitors > 0
* @param [in] multimon_configured Whether multimon is configured
*/ */
static void static void
init_client_layout(struct vnc *v, init_client_layout(struct vnc *v,
+1 -1
View File
@@ -249,7 +249,7 @@ char_count_in(const struct stream *s, char c)
* *
* @param v VNC module * @param v VNC module
* @param msg_flags clipHeader msgFlags field * @param msg_flags clipHeader msgFlags field
* @params s formatListData object. * @param s formatListData object.
* @return Preferred text format, or 0 if not found * @return Preferred text format, or 0 if not found
*/ */
static int static int
+1 -1
View File
@@ -39,7 +39,7 @@ vnc_clip_exit(struct vnc *v);
/** /**
* Process incoming data from the RDP clip channel * Process incoming data from the RDP clip channel
* @param v VNC Object * @param v VNC Object
* @param s Stream object containing data * @param data Stream object containing data
* *
* @return Non-zero if error occurs * @return Non-zero if error occurs
*/ */
+1 -1
View File
@@ -38,7 +38,7 @@ alarm_handler(int signal_num)
* are unsigned numbers * are unsigned numbers
* *
* @param display Display string * @param display Display string
* @param[out] sock_name, or "" * @param[out] sock_name sock_name or ""
* @param sock_name_len Length of sock_name * @param sock_name_len Length of sock_name
* @return !=0 if sock_name is not NULL * @return !=0 if sock_name is not NULL
*/ */
+2 -4
View File
@@ -156,8 +156,7 @@ key_to_scancode_index(const char *key)
/** /**
* Tests a value to see if it's a valid KeySym (decimal number) * Tests a value to see if it's a valid KeySym (decimal number)
* *
* @param val * @param[out] sym Keysym value if 1 is returned
* @param[out] keysym. Keysym value if 1 is returned
* @return Boolean != 0 if the string is valid * @return Boolean != 0 if the string is valid
*/ */
static int static int
@@ -185,7 +184,6 @@ is_valid_keysym(const char *val, int *sym)
/** /**
* Tests a value to see if it's a valid unicode character (U+xxxx) * Tests a value to see if it's a valid unicode character (U+xxxx)
* *
* @param val
* @param[out] chr value if 1 is returned * @param[out] chr value if 1 is returned
* @return Boolean != 0 if the string is valid * @return Boolean != 0 if the string is valid
*/ */
@@ -361,7 +359,7 @@ parse_km_general(toml_table_t *tfile, struct km_general *general)
* Loads the [General] section only from a TOML file * Loads the [General] section only from a TOML file
* @param filename Name of TOML file * @param filename Name of TOML file
* @param quiet Set true to not log errors * @param quiet Set true to not log errors
* @param[out] km_general Contents of [General] section. Defaults are provided. * @param[out] general Contents of [General] section. Defaults are provided.
* @return 0 if the operation was successful * @return 0 if the operation was successful
*/ */
static int static int
+4 -4
View File
@@ -148,9 +148,9 @@ xrdp_sig_no_op(int sig)
/** /**
* *
* @brief Command line argument parser * @brief Command line argument parser
* @param number of command line arguments * @param argc number of command line arguments
* @param pointer array of commandline arguments * @param argv pointer array of commandline arguments
* @param [out] Returned startup parameters * @param startup_params [out] Returned startup parameters
* @return 0 on success, n on nth argument is unknown * @return 0 on success, n on nth argument is unknown
* *
*/ */
@@ -245,7 +245,7 @@ xrdp_process_params(int argc, char **argv,
* *
* @brief Read additional startup parameters from xrdp.ini * @brief Read additional startup parameters from xrdp.ini
* *
* @param [in,out] startup parameters from the command line * @param[in,out] startup_params parameters from the command line
* @return 0 on success * @return 0 on success
* *
*/ */
+1 -1
View File
@@ -156,7 +156,7 @@ xrdp_wm_mouse_click(struct xrdp_wm *self, int x, int y, int but, int down);
/** /**
* Handle a TS_KEYBOARD_EVENT ([MS-RDPBCGR] 2.2.8.1.1.3.1.1.1) * Handle a TS_KEYBOARD_EVENT ([MS-RDPBCGR] 2.2.8.1.1.3.1.1.1)
* *
* @param device_flags keyboardFlags value from PDU * @param keyboard_flags keyboardFlags value from PDU
* @param key_code keyCode value from PDU * @param key_code keyCode value from PDU
*/ */
int int
+5 -5
View File
@@ -182,8 +182,8 @@ swap_pixel_data(struct xrdp_bitmap *a, struct xrdp_bitmap *b)
* Scales a bitmap image * Scales a bitmap image
* *
* @param self Bitmap to scale * @param self Bitmap to scale
* @param target_width target width * @param targ_width target width
* @param target_height target height * @param targ_height target height
* @return 0 for success * @return 0 for success
*/ */
static int static int
@@ -230,8 +230,8 @@ xrdp_bitmap_scale(struct xrdp_bitmap *self, int targ_width, int targ_height)
* Zooms a bitmap image * Zooms a bitmap image
* *
* @param self Bitmap to zoom * @param self Bitmap to zoom
* @param target_width target width * @param targ_width target width
* @param target_height target height * @param targ_height target height
* @return 0 for success * @return 0 for success
* *
* This works the same way as a scaled image, but the aspect ratio is * This works the same way as a scaled image, but the aspect ratio is
@@ -776,7 +776,7 @@ log_imlib2_error(enum logLevels level, const char *filename,
* @param filename Filename we're working on (for error reporting) * @param filename Filename we're working on (for error reporting)
* @param r Background red * @param r Background red
* @param g Background green * @param g Background green
* @param g Background blue * @param b Background blue
* *
* @return 0 for success. On failure the current context image is unchanged. * @return 0 for success. On failure the current context image is unchanged.
*/ */