diff options
-rw-r--r-- | include/libssh/libssh.h | 1 | ||||
-rw-r--r-- | src/string.c | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 52bfc178..4dd84e24 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -526,6 +526,7 @@ LIBSSH_API void ssh_string_free(ssh_string str); LIBSSH_API ssh_string ssh_string_from_char(const char *what); LIBSSH_API size_t ssh_string_len(ssh_string str); LIBSSH_API ssh_string ssh_string_new(size_t size); +LIBSSH_API const char *ssh_string_get_char(ssh_string str); LIBSSH_API char *ssh_string_to_char(ssh_string str); LIBSSH_API void ssh_string_free_char(char *s); diff --git a/src/string.c b/src/string.c index 70764a59..5ce2cfc8 100644 --- a/src/string.c +++ b/src/string.c @@ -131,6 +131,25 @@ size_t ssh_string_len(struct ssh_string_struct *s) { } /** + * @brief Get the the string as a C nul-terminated string. + * + * This is only available as long as the SSH string exists. + * + * @param[in] s The SSH string to get the C string from. + * + * @return The char pointer, NULL on error. + */ +const char *ssh_string_get_char(struct ssh_string_struct *s) +{ + if (s == NULL) { + return NULL; + } + s->data[ntohl(s->size)] = '\0'; + + return (const char *) s->data; +} + +/** * @brief Convert a SSH string to a C nul-terminated string. * * @param[in] s The SSH input string. |