Require: #657 ([compare](https://git.kolibrios.org/Egor00f/kolibrios/compare/update-shell-api...shell-api-implement-return-value)) Implement a return value for shell API functions. required for updating libc streams. The return value is declared after `data` for consistency with older programs. # Changes: ## [`shell`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-9e9982c0c3e401531fcfbc1f9dd5f1f3d85452fd) + `SHELL_PUTS` and `SHELL_GETS` return the number of bytes written + `SHELL_GETC` write full `int` value ## `libshell` + [`shell_gets`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-8840a9f9a5e28f05f5f46e1b5106caf3ce6c470e) returns `NULL` or `EOF`, or a pointer to a string and returns the number of bytes received + [`shell_getc`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-955a257b2a02cfc5ee9879b7efc50d0644ad179c) return `int` + [`shell_printf`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-4ffb653a63ef098530e336370053615fee66be03) returns the number of bytes written + [`shell_puts`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-ee4df9617f16bc52153701c0edc6c2947dd877a8) returns the number of bytes written + [`shell_write_string`](https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660/files#diff-cebe23f17158adc73d20c5f9096862c209732598) returns the number of bytes written Reviewed-on: https://git.kolibrios.org/KolibriOS/kolibrios/pulls/660 Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
29 lines
536 B
C
29 lines
536 B
C
#include <shell_api.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
char *shell_gets(char *str, int n)
|
|
{
|
|
__shell_init();
|
|
|
|
char *ptr = NULL;
|
|
if (__shell_is_init == __SHELL_INIT_OK)
|
|
{
|
|
__shell_shm->cmd = SHELL_GETS;
|
|
__SHELL_WAIT();
|
|
|
|
strncpy(str, __shell_shm->data, n);
|
|
|
|
if (__shell_shm->return_value.str == EOF || !__shell_shm->return_value.str)
|
|
{
|
|
ptr = __shell_shm->return_value.str;
|
|
}
|
|
else
|
|
{
|
|
ptr = str;
|
|
}
|
|
}
|
|
|
|
return ptr;
|
|
}
|