mirror of
https://git.savannah.gnu.org/git/gperf.git
synced 2025-12-02 13:09:22 +00:00
build: Use more gnulib modules.
* autogen.sh (GNULIB_MODULES): Add read-file. Copy also config.guess and config.sub. * lib/Makefile.am (BUILT_SOURCES, MOSTLYCLEANDIRS): New variables. (libgp_a_SOURCES): Remove getline.h, getline.cc. * lib/getline.h: Remove file. * lib/getline.cc: Remove file. * src/configure.ac: Change config.h to also include ../lib/config.h. * src/output.cc: Include <config.h> first. * src/search.cc: Likewise. * src/bool-array.cc: Include <config.h>. * src/keyword.cc: Likewise. * src/keyword-list.cc: Likewise. * src/hash-table.cc: Likewise. * src/main.cc: Likewise. * src/options.cc: Likewise. * src/positions.cc: Likewise. * src/version.cc: Likewise. * src/input.cc: Likewise. Include read-file.h instead of getline.h. (Input<KT>::read_input): Use fread_file instead of get_delim.
This commit is contained in:
63
lib/.gitignore
vendored
63
lib/.gitignore
vendored
@@ -1,8 +1,69 @@
|
||||
# Files brought in by gnulib-tool:
|
||||
/gnulib-m4/
|
||||
/Makefile.gnulib
|
||||
/dummy.c
|
||||
/_Noreturn.h
|
||||
/alloca.in.h
|
||||
/arg-nonnull.h
|
||||
/assert.in.h
|
||||
/c++defs.h
|
||||
/cloexec.c
|
||||
/cloexec.h
|
||||
/close.c
|
||||
/dup2.c
|
||||
/errno.in.h
|
||||
/fcntl.c
|
||||
/fcntl.in.h
|
||||
/fd-hook.c
|
||||
/fd-hook.h
|
||||
/filename.h
|
||||
/fopen.c
|
||||
/free.c
|
||||
/fstat.c
|
||||
/ftell.c
|
||||
/ftello.c
|
||||
/getdtablesize.c
|
||||
/idx.h
|
||||
/intprops-internal.h
|
||||
/inttypes.in.h
|
||||
/limits.in.h
|
||||
/lseek.c
|
||||
/malloc.c
|
||||
/malloca.c
|
||||
/malloca.h
|
||||
/memset_explicit.c
|
||||
/msvc-inval.c
|
||||
/msvc-inval.h
|
||||
/msvc-nothrow.c
|
||||
/msvc-nothrow.h
|
||||
/open.c
|
||||
/pathmax.h
|
||||
/read-file.c
|
||||
/read-file.h
|
||||
/realloc.c
|
||||
/stat-time.c
|
||||
/stat-time.h
|
||||
/stat-w32.c
|
||||
/stat-w32.h
|
||||
/stat.c
|
||||
/stdckdint.in.h
|
||||
/stddef.in.h
|
||||
/stdint.in.h
|
||||
/stdio-impl.h
|
||||
/stdio-read.c
|
||||
/stdio-write.c
|
||||
/stdio.in.h
|
||||
/stdlib.c
|
||||
/stdlib.in.h
|
||||
/string.in.h
|
||||
/sys_stat.in.h
|
||||
/sys_types.in.h
|
||||
/time.in.h
|
||||
/unistd.c
|
||||
/unistd.in.h
|
||||
/verify.h
|
||||
/warn-on-use.h
|
||||
/wchar.in.h
|
||||
/xalloc-oversized.h
|
||||
|
||||
# Files generated by the autotools:
|
||||
/aclocal.m4
|
||||
|
||||
@@ -17,8 +17,10 @@
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.11 foreign
|
||||
BUILT_SOURCES =
|
||||
EXTRA_DIST =
|
||||
MOSTLYCLEANFILES = core *.stackdump
|
||||
MOSTLYCLEANDIRS =
|
||||
|
||||
noinst_LIBRARIES = libgp.a
|
||||
|
||||
@@ -27,7 +29,6 @@ include Makefile.gnulib
|
||||
|
||||
libgp_a_SOURCES += \
|
||||
getopt.h getopt.c getopt1.c \
|
||||
getline.h getline.cc \
|
||||
hash.h hash.cc
|
||||
|
||||
# Allow users to use "gnulib-tool --update".
|
||||
|
||||
117
lib/getline.cc
117
lib/getline.cc
@@ -1,117 +0,0 @@
|
||||
/* getline.c -- Replacement for GNU C library function getline
|
||||
|
||||
Copyright (C) 1993, 1996, 2001-2003, 2020 Free Software Foundation, Inc.
|
||||
|
||||
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 3 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, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */
|
||||
|
||||
/* Specification. */
|
||||
#include "getline.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
||||
/* Always add at least this many bytes when extending the buffer. */
|
||||
#define MIN_CHUNK 64
|
||||
|
||||
/* Reads up to (and including) a TERMINATOR from STREAM into *LINEPTR + OFFSET
|
||||
(and null-terminate it). *LINEPTR is a pointer returned from new [] (or
|
||||
NULL), pointing to *N characters of space. It is realloc'd as
|
||||
necessary. Returns the number of characters read (not including the
|
||||
null terminator), or -1 on error or immediate EOF.
|
||||
NOTE: There is another getstr() function declared in <curses.h>. */
|
||||
|
||||
static int
|
||||
getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset)
|
||||
{
|
||||
size_t nchars_avail; /* Allocated but unused chars in *LINEPTR. */
|
||||
char *read_pos; /* Where we're reading into *LINEPTR. */
|
||||
|
||||
if (!lineptr || !n || !stream)
|
||||
return -1;
|
||||
|
||||
if (!*lineptr)
|
||||
{
|
||||
*n = MIN_CHUNK;
|
||||
*lineptr = new char[*n];
|
||||
}
|
||||
|
||||
nchars_avail = *n - offset;
|
||||
read_pos = *lineptr + offset;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
int c = getc (stream);
|
||||
|
||||
/* We always want at least one char left in the buffer, since we
|
||||
always (unless we get an error while reading the first char)
|
||||
NUL-terminate the line buffer. */
|
||||
|
||||
assert (*n - nchars_avail == (size_t) (read_pos - *lineptr));
|
||||
if (nchars_avail < 2)
|
||||
{
|
||||
if (*n > MIN_CHUNK)
|
||||
*n *= 2;
|
||||
else
|
||||
*n += MIN_CHUNK;
|
||||
|
||||
nchars_avail = *n + *lineptr - read_pos;
|
||||
char *new_line = new char[*n];
|
||||
if (*lineptr)
|
||||
{
|
||||
memcpy (new_line, *lineptr, read_pos - *lineptr);
|
||||
delete[] *lineptr;
|
||||
}
|
||||
*lineptr = new_line;
|
||||
read_pos = *n - nchars_avail + *lineptr;
|
||||
assert (*n - nchars_avail == (size_t) (read_pos - *lineptr));
|
||||
}
|
||||
|
||||
if (c == EOF || ferror (stream))
|
||||
{
|
||||
/* Return partial line, if any. */
|
||||
if (read_pos == *lineptr)
|
||||
return -1;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
*read_pos++ = c;
|
||||
nchars_avail--;
|
||||
|
||||
if (c == terminator)
|
||||
/* Return the line. */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Done - NUL terminate and return the number of chars read. */
|
||||
*read_pos = '\0';
|
||||
|
||||
return read_pos - (*lineptr + offset);
|
||||
}
|
||||
|
||||
int
|
||||
get_line (char **lineptr, size_t *n, FILE *stream)
|
||||
{
|
||||
return getstr (lineptr, n, stream, '\n', 0);
|
||||
}
|
||||
|
||||
int
|
||||
get_delim (char **lineptr, size_t *n, int delimiter, FILE *stream)
|
||||
{
|
||||
return getstr (lineptr, n, stream, delimiter, 0);
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/* Copyright (C) 1995, 2000-2003 Free Software Foundation, Inc.
|
||||
|
||||
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 3 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, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GETLINE_H_
|
||||
# define GETLINE_H_ 1
|
||||
|
||||
# include <stddef.h>
|
||||
# include <stdio.h>
|
||||
|
||||
/* Like the glibc functions get_line and get_delim, except that the result
|
||||
must be freed using delete[], not free(). */
|
||||
|
||||
/* Reads up to (and including) a newline from STREAM into *LINEPTR
|
||||
(and null-terminate it). *LINEPTR is a pointer returned from new [] (or
|
||||
NULL), pointing to *N characters of space. It is realloc'd as
|
||||
necessary. Returns the number of characters read (not including the
|
||||
null terminator), or -1 on error or immediate EOF. */
|
||||
extern int get_line (char **lineptr, size_t *n, FILE *stream);
|
||||
|
||||
/* Reads up to (and including) a DELIMITER from STREAM into *LINEPTR
|
||||
(and null-terminate it). *LINEPTR is a pointer returned from new [] (or
|
||||
NULL), pointing to *N characters of space. It is realloc'd as
|
||||
necessary. Returns the number of characters read (not including the
|
||||
null terminator), or -1 on error or immediate EOF. */
|
||||
extern int get_delim (char **lineptr, size_t *n, int delimiter, FILE *stream);
|
||||
|
||||
#endif /* not GETLINE_H_ */
|
||||
Reference in New Issue
Block a user