17,20 → 17,31 |
|
/* |
FUNCTION |
<<fgets>>---get character string from a file or stream |
<<fgets>>, <<fgets_unlocked>>---get character string from a file or stream |
|
INDEX |
fgets |
INDEX |
fgets_unlocked |
INDEX |
_fgets_r |
INDEX |
_fgets_unlocked_r |
|
ANSI_SYNOPSIS |
#include <stdio.h> |
char *fgets(char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); |
|
#define _GNU_SOURCE |
#include <stdio.h> |
char *fgets_unlocked(char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); |
|
#include <stdio.h> |
char *_fgets_r(struct _reent *<[ptr]>, char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); |
|
#include <stdio.h> |
char *_fgets_unlocked_r(struct _reent *<[ptr]>, char *restrict <[buf]>, int <[n]>, FILE *restrict <[fp]>); |
|
TRAD_SYNOPSIS |
#include <stdio.h> |
char *fgets(<[buf]>,<[n]>,<[fp]>) |
38,7 → 49,14 |
int <[n]>; |
FILE *<[fp]>; |
|
#define _GNU_SOURCE |
#include <stdio.h> |
char *fgets_unlocked(<[buf]>,<[n]>,<[fp]>) |
char *<[buf]>; |
int <[n]>; |
FILE *<[fp]>; |
|
#include <stdio.h> |
char *_fgets_r(<[ptr]>, <[buf]>,<[n]>,<[fp]>) |
struct _reent *<[ptr]>; |
char *<[buf]>; |
45,15 → 63,31 |
int <[n]>; |
FILE *<[fp]>; |
|
#include <stdio.h> |
char *_fgets_unlocked_r(<[ptr]>, <[buf]>,<[n]>,<[fp]>) |
struct _reent *<[ptr]>; |
char *<[buf]>; |
int <[n]>; |
FILE *<[fp]>; |
|
DESCRIPTION |
Reads at most <[n-1]> characters from <[fp]> until a newline |
is found. The characters including to the newline are stored |
in <[buf]>. The buffer is terminated with a 0. |
|
The <<_fgets_r>> function is simply the reentrant version of |
<<fgets>> and is passed an additional reentrancy structure |
pointer: <[ptr]>. |
<<fgets_unlocked>> is a non-thread-safe version of <<fgets>>. |
<<fgets_unlocked>> may only safely be used within a scope |
protected by flockfile() (or ftrylockfile()) and funlockfile(). This |
function may safely be used in a multi-threaded program if and only |
if they are called while the invoking thread owns the (FILE *) |
object, as is the case after a successful call to the flockfile() or |
ftrylockfile() functions. If threads are disabled, then |
<<fgets_unlocked>> is equivalent to <<fgets>>. |
|
The functions <<_fgets_r>> and <<_fgets_unlocked_r>> are simply |
reentrant versions that are passed the additional reentrant structure |
pointer argument: <[ptr]>. |
|
RETURNS |
<<fgets>> returns the buffer passed to it, with the data |
filled in. If end of file occurs with some data already |
65,6 → 99,8 |
that <<fgets>> returns all of the data, while <<gets>> removes |
the trailing newline (with no indication that it has done so.) |
|
<<fgets_unlocked>> is a GNU extension. |
|
Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>, |
<<lseek>>, <<read>>, <<sbrk>>, <<write>>. |
*/ |
74,6 → 110,11 |
#include <string.h> |
#include "local.h" |
|
#ifdef __IMPL_UNLOCKED__ |
#define _fgets_r _fgets_unlocked_r |
#define fgets fgets_unlocked |
#endif |
|
/* |
* Read at most n-1 characters from the given file. |
* Stop when a newline has been read, or the count runs out. |