1/* 2 * Copyright (c) International Business Machines Corp., 2001 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 12 * the GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19/***************************************************************************** 20 * readline.c 21 ******************************************************************************/ 22 23#include <unistd.h> 24 25/* Read line from a descriptor, byte at a time, return number of 26 characters up to the null */ 27 28int readline(int fd, char *ptr, int maxlen) 29{ 30 int n, rc; 31 char c; 32 /* 33 printf("readline: fd = %d\n", fd); 34 */ 35 for (n = 1; n < maxlen; n++) { 36 if ((rc = read(fd, &c, 1)) == 1) { 37 *ptr++ = c; 38 if (c == '\n') 39 break; 40 } else if (rc == 0) { 41 if (n == 1) 42 return 0; /* EOF no data read */ 43 else 44 break; /* EOF, some data read */ 45 } else 46 return (-1); /* error */ 47 } 48 *ptr = 0; 49 return (n); 50} 51