aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h1
-rw-r--r--src/string.c19
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..37fe42e6 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[ssh_string_len(s)] = '\0';
+
+ return (const char *) s->data;
+}
+
+/**
* @brief Convert a SSH string to a C nul-terminated string.
*
* @param[in] s The SSH input string.