mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 02:33:03 +00:00
Sync with fileutils, except use
PROTOTYPES to check for prototypes, and "defined __STDC__" to check for void *.
This commit is contained in:
@@ -1,22 +1,24 @@
|
|||||||
/* obstack.c - subroutines used implicitly by object stack macros
|
/* obstack.c - subroutines used implicitly by object stack macros
|
||||||
Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
|
|
||||||
|
Copyright (C) 1988-1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of the GNU C Library. Its master source is NOT part of
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
the C library, however. The master source lives in /gd/gnu/lib.
|
the C library, however. The master source lives in /gd/gnu/lib.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or modify
|
||||||
modify it under the terms of the GNU Lesser General Public
|
it under the terms of the GNU General Public License as published by
|
||||||
License as published by the Free Software Foundation; either
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
any later version.
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
Lesser General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with the GNU C Library; if not, write to the Free
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
02111-1307 USA. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
# include <config.h>
|
# include <config.h>
|
||||||
@@ -53,7 +55,7 @@
|
|||||||
#ifndef ELIDE_CODE
|
#ifndef ELIDE_CODE
|
||||||
|
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# ifdef __STDC__
|
||||||
# define POINTER void *
|
# define POINTER void *
|
||||||
# else
|
# else
|
||||||
# define POINTER char *
|
# define POINTER char *
|
||||||
@@ -84,7 +86,7 @@ union fooround {long x; double d;};
|
|||||||
abort gracefully or use longjump - but shouldn't return. This
|
abort gracefully or use longjump - but shouldn't return. This
|
||||||
variable by default points to the internal function
|
variable by default points to the internal function
|
||||||
`print_and_abort'. */
|
`print_and_abort'. */
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
static void print_and_abort (void);
|
static void print_and_abort (void);
|
||||||
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
|
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
|
||||||
# else
|
# else
|
||||||
@@ -112,7 +114,7 @@ struct obstack *_obstack;
|
|||||||
For free, do not use ?:, since some compilers, like the MIPS compilers,
|
For free, do not use ?:, since some compilers, like the MIPS compilers,
|
||||||
do not allow (expr) ? void : void. */
|
do not allow (expr) ? void : void. */
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
# define CALL_CHUNKFUN(h, size) \
|
# define CALL_CHUNKFUN(h, size) \
|
||||||
(((h) -> use_extra_arg) \
|
(((h) -> use_extra_arg) \
|
||||||
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
|
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
|
||||||
@@ -154,7 +156,7 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
|
|||||||
struct obstack *h;
|
struct obstack *h;
|
||||||
int size;
|
int size;
|
||||||
int alignment;
|
int alignment;
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
POINTER (*chunkfun) (long);
|
POINTER (*chunkfun) (long);
|
||||||
void (*freefun) (void *);
|
void (*freefun) (void *);
|
||||||
# else
|
# else
|
||||||
@@ -183,7 +185,7 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
|
|||||||
size = 4096 - extra;
|
size = 4096 - extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
|
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
|
||||||
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||||
# else
|
# else
|
||||||
@@ -212,7 +214,7 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
|
|||||||
struct obstack *h;
|
struct obstack *h;
|
||||||
int size;
|
int size;
|
||||||
int alignment;
|
int alignment;
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
POINTER (*chunkfun) (POINTER, long);
|
POINTER (*chunkfun) (POINTER, long);
|
||||||
void (*freefun) (POINTER, POINTER);
|
void (*freefun) (POINTER, POINTER);
|
||||||
# else
|
# else
|
||||||
@@ -242,7 +244,7 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
|
|||||||
size = 4096 - extra;
|
size = 4096 - extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
|
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
|
||||||
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||||
# else
|
# else
|
||||||
@@ -343,7 +345,7 @@ _obstack_newchunk (h, length)
|
|||||||
This is here for debugging.
|
This is here for debugging.
|
||||||
If you use it in a program, you are probably losing. */
|
If you use it in a program, you are probably losing. */
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
/* Suppress -Wmissing-prototypes warning. We don't want to declare this in
|
/* Suppress -Wmissing-prototypes warning. We don't want to declare this in
|
||||||
obstack.h because it is just for debugging. */
|
obstack.h because it is just for debugging. */
|
||||||
int _obstack_allocated_p (struct obstack *h, POINTER obj);
|
int _obstack_allocated_p (struct obstack *h, POINTER obj);
|
||||||
@@ -505,7 +507,7 @@ print_and_abort ()
|
|||||||
/* Now define the functional versions of the obstack macros.
|
/* Now define the functional versions of the obstack macros.
|
||||||
Define them to simply use the corresponding macros to do the job. */
|
Define them to simply use the corresponding macros to do the job. */
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
/* These function definitions do not work with non-ANSI preprocessors;
|
/* These function definitions do not work with non-ANSI preprocessors;
|
||||||
they won't pass through the macro names in parentheses. */
|
they won't pass through the macro names in parentheses. */
|
||||||
|
|
||||||
@@ -616,7 +618,7 @@ POINTER (obstack_copy0) (obstack, address, length)
|
|||||||
return obstack_copy0 (obstack, address, length);
|
return obstack_copy0 (obstack, address, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
# endif /* __STDC__ */
|
# endif /* PROTOTYPES || (defined __STDC__ && __STDC__) */
|
||||||
|
|
||||||
# endif /* 0 */
|
# endif /* 0 */
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
/* obstack.h - object stack macros
|
/* obstack.h - object stack macros
|
||||||
Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
|
|
||||||
|
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
|
||||||
|
1998, 1999, 2002 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of the GNU C Library. Its master source is NOT part of
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
the C library, however. The master source lives in /gd/gnu/lib.
|
the C library, however. The master source lives in /gd/gnu/lib.
|
||||||
@@ -7,20 +9,19 @@
|
|||||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||||
Bugs can be reported to bug-glibc@gnu.org.
|
Bugs can be reported to bug-glibc@gnu.org.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
This program is free software; you can redistribute it and/or modify
|
||||||
under the terms of the GNU General Public License as published by the
|
it under the terms of the GNU General Public License as published by
|
||||||
Free Software Foundation; either version 2, or (at your option) any
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
later version.
|
any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
Library General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU General Public License
|
||||||
License along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
USA. */
|
|
||||||
|
|
||||||
/* Summary:
|
/* Summary:
|
||||||
|
|
||||||
@@ -123,7 +124,11 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __INT_TO_PTR
|
#ifndef __INT_TO_PTR
|
||||||
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
# ifdef __STDC__
|
||||||
|
# define __INT_TO_PTR(P) ((void *) ((P) + (char *) 0))
|
||||||
|
# else
|
||||||
|
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
||||||
@@ -170,7 +175,7 @@ struct obstack /* control current object in current chunk */
|
|||||||
char *chunk_limit; /* address of char after current chunk */
|
char *chunk_limit; /* address of char after current chunk */
|
||||||
PTR_INT_TYPE temp; /* Temporary for some macros. */
|
PTR_INT_TYPE temp; /* Temporary for some macros. */
|
||||||
int alignment_mask; /* Mask of alignment for each object. */
|
int alignment_mask; /* Mask of alignment for each object. */
|
||||||
#if defined __STDC__ && __STDC__
|
#if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
/* These prototypes vary based on `use_extra_arg', and we use
|
/* These prototypes vary based on `use_extra_arg', and we use
|
||||||
casts to the prototypeless function type in all assignments,
|
casts to the prototypeless function type in all assignments,
|
||||||
but having prototypes here quiets -Wstrict-prototypes. */
|
but having prototypes here quiets -Wstrict-prototypes. */
|
||||||
@@ -194,7 +199,7 @@ struct obstack /* control current object in current chunk */
|
|||||||
|
|
||||||
/* Declare the external functions we use; they are in obstack.c. */
|
/* Declare the external functions we use; they are in obstack.c. */
|
||||||
|
|
||||||
#if defined __STDC__ && __STDC__
|
#if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
extern void _obstack_newchunk (struct obstack *, int);
|
extern void _obstack_newchunk (struct obstack *, int);
|
||||||
extern void _obstack_free (struct obstack *, void *);
|
extern void _obstack_free (struct obstack *, void *);
|
||||||
extern int _obstack_begin (struct obstack *, int, int,
|
extern int _obstack_begin (struct obstack *, int, int,
|
||||||
@@ -211,7 +216,7 @@ extern int _obstack_begin_1 ();
|
|||||||
extern int _obstack_memory_used ();
|
extern int _obstack_memory_used ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined __STDC__ && __STDC__
|
#if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
|
|
||||||
/* Do the function-declarations after the structs
|
/* Do the function-declarations after the structs
|
||||||
but before defining the macros. */
|
but before defining the macros. */
|
||||||
@@ -251,7 +256,7 @@ int obstack_alignment_mask (struct obstack *obstack);
|
|||||||
int obstack_chunk_size (struct obstack *obstack);
|
int obstack_chunk_size (struct obstack *obstack);
|
||||||
int obstack_memory_used (struct obstack *obstack);
|
int obstack_memory_used (struct obstack *obstack);
|
||||||
|
|
||||||
#endif /* __STDC__ */
|
#endif /* PROTOTYPES || (defined __STDC__ && __STDC__) */
|
||||||
|
|
||||||
/* Non-ANSI C cannot really support alternative functions for these macros,
|
/* Non-ANSI C cannot really support alternative functions for these macros,
|
||||||
so we do not declare them. */
|
so we do not declare them. */
|
||||||
@@ -260,7 +265,7 @@ int obstack_memory_used (struct obstack *obstack);
|
|||||||
more memory. This can be set to a user defined function which
|
more memory. This can be set to a user defined function which
|
||||||
should either abort gracefully or use longjump - but shouldn't
|
should either abort gracefully or use longjump - but shouldn't
|
||||||
return. The default action is to print a message and abort. */
|
return. The default action is to print a message and abort. */
|
||||||
#if defined __STDC__ && __STDC__
|
#if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
extern void (*obstack_alloc_failed_handler) (void);
|
extern void (*obstack_alloc_failed_handler) (void);
|
||||||
#else
|
#else
|
||||||
extern void (*obstack_alloc_failed_handler) ();
|
extern void (*obstack_alloc_failed_handler) ();
|
||||||
@@ -289,7 +294,7 @@ extern int obstack_exit_failure;
|
|||||||
|
|
||||||
/* To prevent prototype warnings provide complete argument list in
|
/* To prevent prototype warnings provide complete argument list in
|
||||||
standard C version. */
|
standard C version. */
|
||||||
#if defined __STDC__ && __STDC__
|
#if PROTOYPES || (defined __STDC__ && __STDC__)
|
||||||
|
|
||||||
# define obstack_init(h) \
|
# define obstack_init(h) \
|
||||||
_obstack_begin ((h), 0, 0, \
|
_obstack_begin ((h), 0, 0, \
|
||||||
@@ -584,7 +589,7 @@ __extension__ \
|
|||||||
(h)->object_base = (h)->next_free, \
|
(h)->object_base = (h)->next_free, \
|
||||||
__INT_TO_PTR ((h)->temp))
|
__INT_TO_PTR ((h)->temp))
|
||||||
|
|
||||||
# if defined __STDC__ && __STDC__
|
# if PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
# define obstack_free(h,obj) \
|
# define obstack_free(h,obj) \
|
||||||
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
|
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
|
||||||
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
|
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
|
||||||
|
|||||||
Reference in New Issue
Block a user