Print this page
Whoops!  Wrong file modified!

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man3c/getline.3c
          +++ new/usr/src/man/man3c/getline.3c
   1      -'\" t
   2    1  .\"
   3    2  .\" This file and its contents are supplied under the terms of the
   4    3  .\" Common Development and Distribution License ("CDDL"), version 1.0.
   5    4  .\" You may only use this file in accordance with the terms of version
   6    5  .\" 1.0 of the CDDL.
   7    6  .\"
   8    7  .\" A full copy of the text of the CDDL should have accompanied this
   9    8  .\" source.  A copy of the CDDL is also available via the Internet at
  10    9  .\" http://www.illumos.org/license/CDDL.
  11   10  .\"
  12   11  .\"
  13   12  .\" Copyright (c) 2013, Joyent, Inc. All rights reserved.
       13 +.\" Copyright 2014 Garrett D'Amore <garrett@damore.org>
  14   14  .\"
  15      -.TH GETLINE 3C "Apr 24, 2013"
  16      -.SH NAME
  17      -getline, getdelim \- read delimited input from streams
  18      -.SH SYNOPSIS
  19      -.LP
  20      -.nf
  21      -#include <stdio.h>
  22      -.fi
  23      -
  24      -.LP
  25      -.nf
  26      -\fBssize_t\fR \fBgetline\fR(\fBchar **restrict\fR \fIptr\fR, \
  27      -\fBsize_t *restrict\fR \fIcap\fR,
  28      -    \fBFILE *restrict\fR \fIstream\fR);
  29      -.fi
  30      -
  31      -.LP
  32      -.nf
  33      -\fBssize_t\fR \fBgetdelim\fR(\fBchar **restrict\fR \fIptr\fR, \
  34      -\fBsize_t *restrict\fR \fIcap\fR,
  35      -    \fBint\fR \fIdelimiter\fR, \fBFILE *restrict\fR \fIstream\fR);
  36      -.fi
  37      -
  38      -.SH DESCRIPTION
  39      -The \fBgetdelim\fR() function reads bytes from the \fIstream\fR into the the
  40      -array pointed to by \fIptr\fR, until the \fIdelimiter\fR byte or an end-of-file
  41      -condition is encountered.  The \fBgetline\fR() function is identical in
       15 +.Dd "Apr 24, 2013"
       16 +.Dt GETLINE 3C
       17 +.Os
       18 +.Sh NAME
       19 +.Nm getline ,
       20 +.Nm getdelim
       21 +.Nd read delimited input from streams
       22 +.Sh SYNOPSIS
       23 +.In stdio.h
       24 +.Ft ssize_t
       25 +.Fo getline
       26 +.Fa "char **restrict ptr"
       27 +.Fa "size_t *restrict cap"
       28 +.Fa "FILE *restrict stream"
       29 +.Fc
       30 +.
       31 +.Ft ssize_t
       32 +.Fo getdelim
       33 +.Fa "char **restrict ptr"
       34 +.Fa "size_t *restrict cap"
       35 +.Fa "int delimiter"
       36 +.Fa "FILE *restrict stream"
       37 +.Fc
       38 +.
       39 +.Sh DESCRIPTION
       40 +The
       41 +.Fn getdelim
       42 +function reads bytes from the
       43 +.Fa stream
       44 +into the the
       45 +array pointed to by
       46 +.Fa ptr ,
       47 +until the
       48 +.Fa delimiter
       49 +byte or an end-of-file condition is encountered. The
       50 +.Fa getline
       51 +function is identical in
  42   52  behaviour, but uses the newline character as the delimiter.  The delimiter
  43   53  character is included in the string (unless end-of-file was reached first) and
  44   54  the string is terminated with a null byte.
  45      -
  46      -The caller may pass a pre-allocated \fBmalloc\fR(3C) buffer as \fI*ptr\fR,
  47      -along with the capacity of that buffer as \fI*cap\fR.  It is also valid to pass
  48      -\fBNULL\fR for \fI*ptr\fR and \fB0\fR for \fI*cap\fR, at which point memory
       55 +.Lp
       56 +The caller may pass a buffer pre-allocated with
       57 +.Xr malloc 3C
       58 +as
       59 +.Fa *ptr ,
       60 +along with the capacity of that buffer as
       61 +.Fa *cap .
       62 +It is also valid to pass
       63 +.Dv NULL
       64 +for
       65 +.Fa *ptr
       66 +and 0 for
       67 +.Fa *cap ,
       68 +at which point memory
  49   69  will be allocated automatically.  If the buffer provided is not large enough to
  50      -hold the string it will be expanded, as if via \fBrealloc(3C)\fR.  The caller
  51      -must \fBfree(3C)\fR the buffer when it is no longer required.
  52      -
  53      -.SH RETURN VALUES
  54      -.sp
  55      -.LP
  56      -If successful, \fBgetdelim\fR() and \fBgetline\fR() return the number of bytes
       70 +hold the string it will be expanded, as if via
       71 +.Xr realloc 3C .
       72 +The caller should
       73 +.Xr free 3C
       74 +the buffer when it is no longer required.
       75 +.Sh RETURN VALUES
       76 +If successful,
       77 +.Fn getdelim
       78 +and
       79 +.Fn getline
       80 +return the number of bytes
  57   81  written into the buffer, excluding the terminating null byte.  If an error
  58   82  occurs, or if end-of-file is reached prior to reading any bytes, the value
  59      -\fB\(mi1\fR is returned and \fIerrno\fR is set to indicate the error.
  60      -
  61      -.SH ERRORS
  62      -.sp
  63      -.LP
  64      -The \fBgetline\fR() and \fBgetdelim\fR() functions may fail due to the
  65      -following errors:
  66      -
  67      -.sp
  68      -.ne 2
  69      -.na
  70      -\fBEINVAL\fR
  71      -.ad
  72      -.RS 13n
  73      -Either \fIptr\fR or \fIcap\fR are \fBNULL\fR, or the \fIdelimiter\fR is
  74      -not a valid character.
  75      -.RE
  76      -
  77      -.sp
  78      -.ne 2
  79      -.na
  80      -\fBEOVERFLOW\fR
  81      -.ad
  82      -.RS 13n
  83      -More than \fBSSIZE_MAX\fR characters were read from the stream without
  84      -encountering the \fIdelimiter\fR.
  85      -.RE
  86      -
  87      -.sp
  88      -.LP
  89      -The \fBgetline\fR() and \fBgetdelim\fR() functions may also fail and set
  90      -\fIerrno\fR for any of the errors specified for the library routines
  91      -\fBrealloc\fR(3C) or \fBfgetc\fR(3C).
  92      -
  93      -.SH EXAMPLES
  94      -.LP
  95      -\fBExample 1\fR Read a line from \fBstdin\fR.
  96      -.sp
  97      -.LP
  98      -The following example uses \fBgetline\fR to read a line from stdin.
  99      -
 100      -.sp
 101      -.in +2
 102      -.nf
       83 +\(mi1 is returned and
       84 +.Va errno
       85 +is set to indicate the error.
       86 +.Sh EXAMPLES
       87 +.Ss Example 1 Read a line from Va stdin
       88 +The following example uses
       89 +.Fn getline
       90 +to read a line from
       91 +.Va stdin .
       92 +.Bd -literal -offset indent
 103   93  #include <stdio.h>
 104   94  \&...
 105   95  char *ptr = NULL;
 106   96  size_t cap = 0;
 107   97  
 108   98  if (getline(&ptr, &cap, stdin) == -1) {
 109   99      perror("getline");
 110  100      exit(1);
 111  101  }
 112  102  fprintf(stdout, "input line: %s", ptr);
 113  103  
 114  104  free(ptr);
 115      -.
 116      -.fi
 117      -.in -2
 118      -
 119      -.SH ATTRIBUTES
 120      -.sp
 121      -.TS
 122      -box;
 123      -c | c
 124      -l | l .
 125      -ATTRIBUTE TYPE  ATTRIBUTE VALUE
 126      -_
 127      -Interface Stability     Committed
 128      -_
 129      -MT-Level        MT-Safe
 130      -.TE
 131      -
 132      -.SH SEE ALSO
 133      -.sp
 134      -.LP
 135      -\fBfgetc\fR(3C), \fBfgets\fR(3C), \fBfree\fR(3C), \fBmalloc\fR(3C),
 136      -\fBrealloc\fR(3C), \fBattributes\fR(5)
      105 +.Ed
      106 +.Sh ERRORS
      107 +The
      108 +.Fn getline
      109 +and
      110 +.Fn getdelim
      111 +functions may fail due to the following errors:
      112 +.Bl -tag -width Er
      113 +.It Er EINVAL
      114 +Either
      115 +.Fa ptr
      116 +or
      117 +.Fa cap are
      118 +.Dv NULL , or th
      119 +.Fa delimiter
      120 +is not a valid character.
      121 +.It Er EOVERFLOW
      122 +More than
      123 +.Dv SSIZE_MAX
      124 +characters were read from the stream without
      125 +encountering the
      126 +.Fa delimiter .
      127 +.El
      128 +.Lp
      129 +The
      130 +.Fn getline
      131 +and
      132 +.Fn getdelim
      133 +functions may also fail and set
      134 +.Va errno
      135 +for any of the errors specified for the library routines
      136 +.Xr realloc 3C
      137 +or
      138 +.Xr fgetc 3C .
      139 +.Sh INTERFACE STABILITY
      140 +.Sy Standard .
      141 +.Sh MT-LEVEL
      142 +.Sy MT-Safe .
      143 +.Sh SEE ALSO
      144 +.Xr fgetc 3C ,
      145 +.Xr fgets 3C ,
      146 +.Xr free 3C ,
      147 +.Xr malloc 3C ,
      148 +.Xr realloc 3C ,
      149 +.Xr standards 5
      150 +.Sh STANDARDS
      151 +These functions were introduced in
      152 +.St -p1003.1-2008 .
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX