getttyent(3) fixes from FreeBSD:
authorPeter Avalos <pavalos@theshell.com>
Sun, 15 Mar 2009 01:40:26 +0000 (15:40 -1000)
committerPeter Avalos <pavalos@theshell.com>
Tue, 7 Apr 2009 07:09:39 +0000 (21:09 -1000)
* In getttyent(3), if /etc/ttys doesn't end in a newline, don't
freak out and keep trying to expand the buffer until realloc()
fails.

* Move initialization above point of first possible reference to
avoid overwriting ty_status values set from the 'type' field.

* Fix the NAME section making whatis(1) happy in particular.

lib/libc/gen/getttyent.3
lib/libc/gen/getttyent.c

index 84dd1b3..2dfb01e 100644 (file)
@@ -9,10 +9,6 @@
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
 .\" 4. Neither the name of the University nor the names of its contributors
 .\"    may be used to endorse or promote products derived from this software
 .\"    without specific prior written permission.
@@ -30,7 +26,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)getttyent.3        8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/gen/getttyent.3,v 1.9.2.4 2003/03/13 18:05:37 trhodes Exp $
+.\" $FreeBSD: src/lib/libc/gen/getttyent.3,v 1.15 2007/01/09 00:27:54 imp Exp $
 .\" $DragonFly: src/lib/libc/gen/getttyent.3,v 1.2 2003/06/17 04:26:42 dillon Exp $
 .\"
 .Dd November 17, 1996
 .Nm getttyent ,
 .Nm getttynam ,
 .Nm setttyent ,
-.Nm endttyent
-.Nd get ttys file entry
+.Nm endttyent ,
 .Nm isdialuptty ,
 .Nm isnettty
-.Nd determine tty type from ttys file entry
+.Nd
+.Xr ttys 5
+file routines
 .Sh LIBRARY
 .Lb libc
 .Sh SYNOPSIS
index 4f606e8..418f6a9 100644 (file)
@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libc/gen/getttyent.c,v 1.11 1999/11/04 04:16:27 ache Exp $
+ * $FreeBSD: src/lib/libc/gen/getttyent.c,v 1.13 2005/07/25 17:57:15 mdodd Exp $
  * $DragonFly: src/lib/libc/gen/getttyent.c,v 1.5 2005/11/13 00:07:42 swildner Exp $
  *
  * @(#)getttyent.c     8.1 (Berkeley) 6/4/93
@@ -81,7 +81,7 @@ getttyent(void)
                if (!fgets(p = line, lbsize, tf))
                        return (NULL);
                /* extend buffer if line was too big, and retry */
-               while (!index(p, '\n')) {
+               while (!index(p, '\n') && !feof(tf)) {
                        i = strlen(p);
                        lbsize += MALLOCCHUNK;
                        if ((p = realloc(line, lbsize)) == NULL) {
@@ -103,6 +103,10 @@ getttyent(void)
 
        zapchar = 0;
        tty.ty_name = p;
+       tty.ty_status = 0;
+       tty.ty_window = NULL;
+       tty.ty_group  = _TTYS_NOGROUP;
+
        p = skip(p);
        if (!*(tty.ty_getty = p))
                tty.ty_getty = tty.ty_type = NULL;
@@ -119,9 +123,6 @@ getttyent(void)
                        p = skip(p);
                }
        }
-       tty.ty_status = 0;
-       tty.ty_window = NULL;
-       tty.ty_group  = _TTYS_NOGROUP;
 
        for (; *p; p = skip(p)) {
                if (scmp(_TTYS_OFF))