Add a local implementation of hstrerror for the system which do not have it
The function converts the value of h_errno (last error of name resolver library, see netdb.h). One of systems which supposedly do not have the function is SunOS. POSIX does not mandate its presence. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
18a936805e
commit
fa0c87c344
5
Makefile
5
Makefile
@ -410,6 +410,7 @@ ifeq ($(uname_S),SunOS)
|
|||||||
NEEDS_NSL = YesPlease
|
NEEDS_NSL = YesPlease
|
||||||
SHELL_PATH = /bin/bash
|
SHELL_PATH = /bin/bash
|
||||||
NO_STRCASESTR = YesPlease
|
NO_STRCASESTR = YesPlease
|
||||||
|
NO_HSTRERROR = YesPlease
|
||||||
ifeq ($(uname_R),5.8)
|
ifeq ($(uname_R),5.8)
|
||||||
NEEDS_LIBICONV = YesPlease
|
NEEDS_LIBICONV = YesPlease
|
||||||
NO_UNSETENV = YesPlease
|
NO_UNSETENV = YesPlease
|
||||||
@ -654,6 +655,10 @@ endif
|
|||||||
ifdef NO_PERL_MAKEMAKER
|
ifdef NO_PERL_MAKEMAKER
|
||||||
export NO_PERL_MAKEMAKER
|
export NO_PERL_MAKEMAKER
|
||||||
endif
|
endif
|
||||||
|
ifdef NO_HSTRERROR
|
||||||
|
COMPAT_CFLAGS += -DNO_HSTRERROR
|
||||||
|
COMPAT_OBJS += compat/hstrerror.o
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(TCLTK_PATH),)
|
ifeq ($(TCLTK_PATH),)
|
||||||
NO_TCLTK=NoThanks
|
NO_TCLTK=NoThanks
|
||||||
|
21
compat/hstrerror.c
Normal file
21
compat/hstrerror.c
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
|
||||||
|
const char *githstrerror(int err)
|
||||||
|
{
|
||||||
|
static char buffer[48];
|
||||||
|
switch (err)
|
||||||
|
{
|
||||||
|
case HOST_NOT_FOUND:
|
||||||
|
return "Authoritative answer: host not found";
|
||||||
|
case NO_DATA:
|
||||||
|
return "Valid name, no data record of requested type";
|
||||||
|
case NO_RECOVERY:
|
||||||
|
return "Non recoverable errors, FORMERR, REFUSED, NOTIMP";
|
||||||
|
case TRY_AGAIN:
|
||||||
|
return "Non-authoritative \"host not found\", or SERVERFAIL";
|
||||||
|
}
|
||||||
|
sprintf(buffer, "Name resolution error %d", err);
|
||||||
|
return buffer;
|
||||||
|
}
|
@ -167,6 +167,11 @@ extern size_t gitstrlcpy(char *, const char *, size_t);
|
|||||||
extern uintmax_t gitstrtoumax(const char *, char **, int);
|
extern uintmax_t gitstrtoumax(const char *, char **, int);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NO_HSTRERROR
|
||||||
|
#define hstrerror githstrerror
|
||||||
|
extern const char *githstrerror(int herror);
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void release_pack_memory(size_t, int);
|
extern void release_pack_memory(size_t, int);
|
||||||
|
|
||||||
static inline char* xstrdup(const char *str)
|
static inline char* xstrdup(const char *str)
|
||||||
|
Loading…
Reference in New Issue
Block a user