Skip to content

Commit

Permalink
obstack: Fix portability issues
Browse files Browse the repository at this point in the history
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1, SunOS 5.10, and possibly
others do not have exit.h and exitfail.h. Remove the use of these in
obstack.c.

The __block variable was renamed to block to avoid a gcc error:

compat/obstack.h:190: error: __block attribute can be specified on variables only

Initial-patch-by: David Aguilar <davvid@gmail.com>
Reported-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Fredrik Kuivinen <frekui@gmail.com>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Fredrik Kuivinen authored and Junio C Hamano committed Aug 29, 2011
1 parent 9ecedde commit d190a08
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 36 deletions.
35 changes: 4 additions & 31 deletions compat/obstack.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,9 @@
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */


#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#ifdef _LIBC
# include <obstack.h>
# include <shlib-compat.h>
#else
# include "obstack.h"
#endif
#include "git-compat-util.h"
#include <gettext.h>
#include "obstack.h"

/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
incremented whenever callers compiled using an old obstack.h can no
Expand Down Expand Up @@ -103,15 +95,6 @@ enum
static void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort;

/* Exit value used when `print_and_abort' is used. */
# include <stdlib.h>
# ifdef _LIBC
int obstack_exit_failure = EXIT_FAILURE;
# else
# include "exitfail.h"
# define obstack_exit_failure exit_failure
# endif

# ifdef _LIBC
# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
/* A looong time ago (before 1994, anyway; we're not sure) this global variable
Expand Down Expand Up @@ -400,16 +383,6 @@ _obstack_memory_used (struct obstack *h)
return nbytes;
}

/* Define the error handler. */
# ifdef _LIBC
# include <libintl.h>
# else
# include "gettext.h"
# endif
# ifndef _
# define _(msgid) gettext (msgid)
# endif

# ifdef _LIBC
# include <libio/iolibio.h>
# endif
Expand All @@ -435,7 +408,7 @@ print_and_abort (void)
# else
fprintf (stderr, "%s\n", _("memory exhausted"));
# endif
exit (obstack_exit_failure);
exit (1);
}

#endif /* !ELIDE_CODE */
5 changes: 1 addition & 4 deletions compat/obstack.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,17 +187,14 @@ extern int _obstack_begin_1 (struct obstack *, int, int,
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);

void obstack_free (struct obstack *__obstack, void *__block);
void obstack_free (struct obstack *, void *);


/* Error handler called when `obstack_chunk_alloc' failed to allocate
more memory. This can be set to a user defined function which
should either abort gracefully or use longjump - but shouldn't
return. The default action is to print a message and abort. */
extern void (*obstack_alloc_failed_handler) (void);

/* Exit value used when `print_and_abort' is used. */
extern int obstack_exit_failure;

/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
Expand Down
2 changes: 1 addition & 1 deletion kwset.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "cache.h"

#include "kwset.h"
#include "obstack.h"
#include "compat/obstack.h"

#define NCHAR (UCHAR_MAX + 1)
#define obstack_chunk_alloc xmalloc
Expand Down

0 comments on commit d190a08

Please sign in to comment.