NAME
stdin_get_line - Reads a line from stdin into a null terminated string.
SYNOPSIS
#include "l/l_sys_io.h"
Example compile flags (system dependent):
-DLINUX_X86_64 -DLINUX_X86_64_OPTERON -DGNU_COMPILER
-I/home/kobus/include
-L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
-lKJB -lfftw3 -lgsl -lgslcblas -ljpeg -lSVM -lstdc++ -lpthread -lSLATEC -lg2c -lacml -lacml_mv -lblas -lg2c -lncursesw
long stdin_get_line
(
const char *prompt_str,
char *line,
size_t max_len
);
DESCRIPTION
This routine is convenent for reading from stdin. If stdin is a terminal, it
calls term_get_line, in which case the prompt is used (if it is not NULL).
If stdin is not a terminal, then the prompt is ignored, and this routine
works just like get_line (i.e., like calling fget-line with stdin as the
first argument.
RETURNS
On success fget_line returns the number of bytes placed in the buffer,
excluding the NULL. Since the new line chracter is consumed but not
copied, zero is returned for null lines. Alternate return values are all
negative. In the case of end of file, EOF returned. If the line was
truncated, then TRUNCATED is returned. Depending on the signal traps and
options in place, INTERRUPTED is an additional possible return value. In
the case of non-blocking reads WOULD_BLOCK is returned unless a complete
line can be returned. ERROR is returned for unexpected problems and an
error message is set.
MACROS
BUFF_STDIN_GET_LINE(const char* prompt, char line[])
The max_len parameter is set to sizeof(line) with the appropriate cast.
Using sizeof to set the buffer size is recomended where applicable, as
the code will not be broken if the buffer size changes. HOWEVER, neither
this method, nor the macro, is applicable if line is NOT a character
array. If line is declared by "char* line", then the size of line is the
number of bytes in a character pointer (usually 8), which is NOT what is
normally intended. You have been WARNED!
DISCLAIMER
This software is not adequatedly tested. It is recomended that
results are checked independantly where appropriate.
AUTHOR
Kobus Barnard
DOCUMENTER
Kobus Barnard
SEE ALSO
set_low_level_io_options
,
kjb_read_exact
,
kjb_read
,
kjb_read_2
,
safe_pipe_write
,
kjb_write
,
kjb_write_2
,
kjb_fread_exact
,
kjb_fread
,
kjb_fread_2
,
kjb_fwrite
,
kjb_fwrite_2
,
kjb_safe_fflush
,
kjb_fflush
,
kjb_ioctl
,
set_blocking
,
set_no_blocking
,
fget_line
,
dget_line
,
fput_line
,
kjb_mkdir
,
kjb_mkdir_2
,
kjb_unlink
,
kjb_unlink_2
,
kjb_rmdir
,
kjb_fopen
,
kjb_freopen
,
kjb_fdopen
,
kjb_fclose
,
kjb_realpath
,
get_fd_name
,
get_user_fd_name
,
kjb_fseek
,
kjb_ftell
,
kjb_fputs
,
kjb_fgetc
,
kjb_fputc
,
pso
,
p_stderr
,
kjb_fprintf
,
pdo
,
kjb_vfprintf
,
is_file
,
is_directory
,
fp_get_path_type
,
get_path_type
,
get_file_size
,
fp_get_byte_size
,
get_file_age
,
stream_younger
,
stream_older
,
get_file_mod_time
,
kjb_isatty
,
print_underlined
,
start_stdout_shadow
,
stop_stdout_shadow
,
start_stderr_shadow
,
stop_stderr_shadow
,
enable_stdout
,
disable_stdout
,
kjb_glob
,
kjb_simple_glob