summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/man/man3c/Makefile4
-rw-r--r--usr/src/man/man3c/getline.3c136
2 files changed, 140 insertions, 0 deletions
diff --git a/usr/src/man/man3c/Makefile b/usr/src/man/man3c/Makefile
index 4f16272ed2..ed669e9a40 100644
--- a/usr/src/man/man3c/Makefile
+++ b/usr/src/man/man3c/Makefile
@@ -149,6 +149,7 @@ MANFILES = __fbufsize.3c \
gethostid.3c \
gethostname.3c \
gethrtime.3c \
+ getline.3c \
getloadavg.3c \
getlogin.3c \
getmntent.3c \
@@ -747,6 +748,7 @@ MANSOFILES = FD_CLR.3c \
getc_unlocked.3c \
getchar.3c \
getchar_unlocked.3c \
+ getdelim.3c \
getextmntent.3c \
getgrent.3c \
getgrent_r.3c \
@@ -1507,6 +1509,8 @@ sethostname.3c := SOSRC = man3c/gethostname.3c
gethrvtime.3c := SOSRC = man3c/gethrtime.3c
+getdelim.3c := SOSRC = man3c/getline.3c
+
getlogin_r.3c := SOSRC = man3c/getlogin.3c
getextmntent.3c := SOSRC = man3c/getmntent.3c
diff --git a/usr/src/man/man3c/getline.3c b/usr/src/man/man3c/getline.3c
new file mode 100644
index 0000000000..a8db7df218
--- /dev/null
+++ b/usr/src/man/man3c/getline.3c
@@ -0,0 +1,136 @@
+'\" t
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2013, Joyent, Inc. All rights reserved.
+.\"
+.TH GETLINE 3C "Apr 24, 2013"
+.SH NAME
+getline, getdelim \- read delimited input from streams
+.SH SYNOPSIS
+.LP
+.nf
+#include <stdio.h>
+.fi
+
+.LP
+.nf
+\fBssize_t\fR \fBgetline\fR(\fBchar **restrict\fR \fIptr\fR, \
+\fBsize_t *restrict\fR \fIcap\fR,
+ \fBFILE *restrict\fR \fIstream\fR);
+.fi
+
+.LP
+.nf
+\fBssize_t\fR \fBgetdelim\fR(\fBchar **restrict\fR \fIptr\fR, \
+\fBsize_t *restrict\fR \fIcap\fR,
+ \fBint\fR \fIdelimiter\fR, \fBFILE *restrict\fR \fIstream\fR);
+.fi
+
+.SH DESCRIPTION
+The \fBgetdelim\fR() function reads bytes from the \fIstream\fR into the the
+array pointed to by \fIptr\fR, until the \fIdelimiter\fR byte or an end-of-file
+condition is encountered. The \fBgetline\fR() function is identical in
+behaviour, but uses the newline character as the delimiter. The delimiter
+character is included in the string (unless end-of-file was reached first) and
+the string is terminated with a null byte.
+
+The caller may pass a pre-allocated \fBmalloc\fR(3C) buffer as \fI*ptr\fR,
+along with the capacity of that buffer as \fI*cap\fR. It is also valid to pass
+\fBNULL\fR for \fI*ptr\fR and \fB0\fR for \fI*cap\fR, at which point memory
+will be allocated automatically. If the buffer provided is not large enough to
+hold the string it will be expanded, as if via \fBrealloc(3C)\fR. The caller
+must \fBfree(3C)\fR the buffer when it is no longer required.
+
+.SH RETURN VALUES
+.sp
+.LP
+If successful, \fBgetdelim\fR() and \fBgetline\fR() return the number of bytes
+written into the buffer, excluding the terminating null byte. If an error
+occurs, or if end-of-file is reached prior to reading any bytes, the value
+\fB\(mi1\fR is returned and \fIerrno\fR is set to indicate the error.
+
+.SH ERRORS
+.sp
+.LP
+The \fBgetline\fR() and \fBgetdelim\fR() functions may fail due to the
+following errors:
+
+.sp
+.ne 2
+.na
+\fBEINVAL\fR
+.ad
+.RS 13n
+Either \fIptr\fR or \fIcap\fR are \fBNULL\fR, or the \fIdelimiter\fR is
+not a valid character.
+.RE
+
+.sp
+.ne 2
+.na
+\fBEOVERFLOW\fR
+.ad
+.RS 13n
+More than \fBSSIZE_MAX\fR characters were read from the stream without
+encountering the \fIdelimiter\fR.
+.RE
+
+.sp
+.LP
+The \fBgetline\fR() and \fBgetdelim\fR() functions may also fail and set
+\fIerrno\fR for any of the errors specified for the library routines
+\fBrealloc\fR(3C) or \fBfgetc\fR(3C).
+
+.SH EXAMPLES
+.LP
+\fBExample 1\fR Read a line from \fBstdin\fR.
+.sp
+.LP
+The following example uses \fBgetline\fR to read a line from stdin.
+
+.sp
+.in +2
+.nf
+#include <stdio.h>
+\&...
+char *ptr = NULL;
+size_t cap = 0;
+
+if (getline(&ptr, &cap, stdin) == -1) {
+ perror("getline");
+ exit(1);
+}
+fprintf(stdout, "input line: %s", ptr);
+
+free(ptr);
+.
+.fi
+.in -2
+
+.SH ATTRIBUTES
+.sp
+.TS
+box;
+c | c
+l | l .
+ATTRIBUTE TYPE ATTRIBUTE VALUE
+_
+Interface Stability Committed
+_
+MT-Level MT-Safe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBfgetc\fR(3C), \fBfgets\fR(3C), \fBfree\fR(3C), \fBmalloc\fR(3C),
+\fBrealloc\fR(3C), \fBattributes\fR(5)