diff options
-rw-r--r-- | payloads/libpayload/include/libpayload.h | 3 | ||||
-rw-r--r-- | payloads/libpayload/libc/readline.c | 30 |
2 files changed, 29 insertions, 4 deletions
diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 8ec052cbec..3351fd4927 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -418,6 +418,9 @@ void fatal(const char* msg) __attribute__ ((noreturn)); /** * @defgroup readline Readline Functions + * This interface provides a simple implementation of the standard + * readline and getline functions. They are suitable for reading a + * line of input from the console. * @{ */ char * readline(const char * prompt); diff --git a/payloads/libpayload/libc/readline.c b/payloads/libpayload/libc/readline.c index 9c6a6a651d..4faf3d7895 100644 --- a/payloads/libpayload/libc/readline.c +++ b/payloads/libpayload/libc/readline.c @@ -27,16 +27,26 @@ * SUCH DAMAGE. */ +/** @file libc/readline.c + * @brief Simple readline implementation + */ + #include <libpayload.h> static char * readline_buffer; static int readline_bufferlen; /** - * This readline implementation is rather simple, but it does more than the - * original readline() because it allows us to have a pre-filled buffer. To - * pre-fill the buffer, use the getline() function. + * @brief Read a line from the terminal and return it + * @param prompt A prompt to display on the line + * @return A pointer to the input string + * + * Read a line from the terminal and return it. This readline implementation + * is rather simple, but it does more than the original readline() because + * it allows us to have a pre-filled buffer. To pre-fill the buffer, use the + * getline() function. */ + char * readline(const char * prompt) { char *buffer; @@ -50,7 +60,7 @@ char * readline(const char * prompt) } buffer = readline_buffer; - + /* print prompt */ if (prompt) { current = 0; @@ -140,6 +150,18 @@ out: return buffer; } +/** + * @brief Read a line from the input and store it in a buffer + * @param prompt A buffer to store the line in + * @param len Length of the buffer + * @return The final length of the string + * This function allows the user to pass a predefined buffer to + * readline(). The buffer may be filled with a default value + * which will be displayed by readline and can be edited as normal. + * The final input string returned by readline will be returned in + * the buffer and the function will return the length of the string. + */ + int getline(char *buffer, int len) { readline_buffer = buffer; |