From c1f8b38b7817383cd06413f4c0e9ddf1414e8597 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 8 Sep 2011 15:27:45 +0200 Subject: string: Add ssh_string_get_char(). --- include/libssh/libssh.h | 1 + src/string.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 52bfc17..4dd84e2 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 70764a5..37fe42e 100644 --- a/src/string.c +++ b/src/string.c @@ -130,6 +130,25 @@ size_t ssh_string_len(struct ssh_string_struct *s) { return ntohl(s->size); } +/** + * @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[ssh_string_len(s)] = '\0'; + + return (const char *) s->data; +} + /** * @brief Convert a SSH string to a C nul-terminated string. * -- cgit