diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index 0aaa89b60..cd6d2cb1f 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -2051,6 +2051,17 @@ extern "C" FREERDP_API BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* param); + /** \brief Takes a string settings value. The \b param is assumed to be malloced (same runtime + * as freerdp library!). + * + * \param settings A pointer to the settings to query, must not be NULL. + * \param id The key to query + * \param param The value to set. Old values are freed up, the value is set as the new one. + * + * \return \b TRUE for success, \b FALSE for failure + */ + FREERDP_API BOOL freerdp_settings_take_string(rdpSettings* settings, size_t id, char* param); + /** \brief Sets a string settings value. The \b param is converted to UTF-8 and the copy stored. * * \param settings A pointer to the settings to query, must not be NULL. diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index ea1d78ed2..c3b361b4f 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -2038,6 +2038,14 @@ const char* freerdp_rdp_version_string(UINT32 version) } } +BOOL freerdp_settings_take_string(rdpSettings* settings, size_t id, char* param) +{ + size_t len = 0; + if (param) + len = strlen(param); + return freerdp_settings_set_string_(settings, id, param, len); +} + BOOL freerdp_settings_set_string_from_utf16(rdpSettings* settings, size_t id, const WCHAR* param) { WINPR_ASSERT(settings);