2003-02-17 Marcel Telka <marcel@telka.sk>
* configure.ac (AC_CHECK_FUNCS): Added getdelim and getline. (AC_CONFIG_FILES): Added src/lib/Makefile. * src/Makefile.am (SUBDIRS): Added lib. (jtag_DEPENDENCIES): Added libjtaglib.a. (jtag_LDADD): Ditto. * src/jtag.c: Added portable getline() declaration. * src/lib/Makefile.am: New file. * src/lib/getdelim.c: Ditto. * src/lib/getline.c: Ditto. git-svn-id: https://urjtag.svn.sourceforge.net/svnroot/urjtag/trunk@361 b68d4a1b-bc3d-0410-92ed-d4ac073336b7master
parent
eb99256e68
commit
4e5cbded38
@ -0,0 +1,3 @@
|
||||
.deps
|
||||
Makefile
|
||||
Makefile.in
|
@ -0,0 +1,28 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Copyright (C) 2003 ETC s.r.o.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
#
|
||||
# Written by Marcel Telka <marcel@telka.sk>, 2003.
|
||||
#
|
||||
|
||||
noinst_LIBRARIES = libjtaglib.a
|
||||
|
||||
libjtaglib_a_SOURCES = \
|
||||
getdelim.c \
|
||||
getline.c
|
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2003 ETC s.r.o.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Written by Marcel Telka <marcel@telka.sk>, 2003.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GETDELIM
|
||||
|
||||
#define GETDELIM_BUFFER 128
|
||||
|
||||
ssize_t
|
||||
getdelim( char **lineptr, size_t *n, int delimiter, FILE *stream )
|
||||
{
|
||||
char *p;
|
||||
int c;
|
||||
size_t len = 0;
|
||||
|
||||
if (!lineptr || !n || (!*lineptr && *n))
|
||||
return -1;
|
||||
|
||||
/* allocate initial buffer */
|
||||
if (!*lineptr || !*n) {
|
||||
char *np;
|
||||
np = realloc( *lineptr, GETDELIM_BUFFER );
|
||||
if (!np)
|
||||
return -1;
|
||||
*n = GETDELIM_BUFFER;
|
||||
*lineptr = np;
|
||||
}
|
||||
|
||||
p = *lineptr;
|
||||
|
||||
/* read characters from stream */
|
||||
while ((c = fgetc( stream )) != EOF) {
|
||||
if (len >= *n) {
|
||||
char *np = realloc( *lineptr, *n * 2 );
|
||||
if (!np)
|
||||
return -1;
|
||||
p = np + (p - *lineptr);
|
||||
*lineptr = np;
|
||||
*n *= 2;
|
||||
}
|
||||
*p++ = (char) c;
|
||||
len++;
|
||||
if (delimiter == c)
|
||||
break;
|
||||
}
|
||||
|
||||
/* end of file without any bytes read */
|
||||
if ((c == EOF) && (len == 0))
|
||||
return -1;
|
||||
|
||||
/* trailing '\0' */
|
||||
if (len >= *n) {
|
||||
char *np = realloc( *lineptr, *n + 1 );
|
||||
if (!np)
|
||||
return -1;
|
||||
p = np + (p - *lineptr);
|
||||
*lineptr = np;
|
||||
*n += 1;
|
||||
}
|
||||
*p = '\0';
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
#endif /* HAVE_GETDELIM */
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2003 ETC s.r.o.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Written by Marcel Telka <marcel@telka.sk>, 2003.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GETLINE
|
||||
|
||||
#ifndef HAVE_GETDELIM
|
||||
ssize_t getdelim( char **lineptr, size_t *n, int delimiter, FILE *stream );
|
||||
#endif /* HAVE_GETDELIM */
|
||||
|
||||
ssize_t
|
||||
getline( char **lineptr, size_t *n, FILE *stream )
|
||||
{
|
||||
return getdelim( lineptr, n, '\n', stream );
|
||||
}
|
||||
|
||||
#endif /* HAVE_GETLINE */
|
Loading…
Reference in New Issue