Annotation of embedaddon/coova-chilli/src/util.c, revision 1.1
1.1 ! misho 1: /* This file is free software; you can redistribute it and/or modify */
! 2: /* it under the terms of the GNU General Public License as published by */
! 3: /* the Free Software Foundation; either version 2, or (at your option) */
! 4: /* any later version. */
! 5:
! 6: /* This file is distributed in the hope that it will be useful, */
! 7: /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
! 8: /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
! 9: /* GNU General Public License for more details. */
! 10:
! 11: /* You should have received a copy of the GNU General Public License */
! 12: /* along with GNU Emacs; see the file COPYING. If not, write to */
! 13: /* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, */
! 14: /* Boston, MA 02111-1307, USA. */
! 15:
! 16: /* Copyright (C) 2004 Ian Zimmerman */
! 17:
! 18: /* $Id: getline.c,v 1.3 2004/05/18 22:45:18 summerisle Exp $ */
! 19:
! 20: #include "../config.h"
! 21: #ifndef HAVE_GETLINE
! 22: #include <stdio.h>
! 23: #include <sys/types.h>
! 24: #include <stdlib.h>
! 25:
! 26:
! 27: #define GETLINE_BUFSIZE 4096
! 28:
! 29: ssize_t
! 30: getline (char** lineptr, size_t* n, FILE* stream)
! 31: {
! 32: char* lptr1;
! 33: size_t nn;
! 34: int c;
! 35:
! 36: if (*lineptr == NULL && n == NULL)
! 37: {
! 38: lptr1 = malloc (GETLINE_BUFSIZE);
! 39: if (lptr1 == NULL) return EOF;
! 40: nn = GETLINE_BUFSIZE;
! 41: }
! 42: else
! 43: {
! 44: lptr1 = *lineptr;
! 45: nn = *n;
! 46: }
! 47: c = fgetc (stream);
! 48: if (c == EOF) return EOF;
! 49: {
! 50: size_t offset;
! 51:
! 52: offset = 0;
! 53: while (c != EOF)
! 54: {
! 55: if (offset >= nn - 1)
! 56: {
! 57: char* lptr2;
! 58: lptr2 = realloc (lptr1, 2 * nn);
! 59: if (lptr2 == NULL) return EOF;
! 60: lptr1 = lptr2;
! 61: nn *= 2;
! 62: }
! 63: lptr1[offset++] = (char)c;
! 64: if (c == '\n') break;
! 65: c = fgetc (stream);
! 66: }
! 67: lptr1[offset] = '\0';
! 68: *lineptr = lptr1;
! 69: *n = nn;
! 70: return offset;
! 71: }
! 72: }
! 73: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>