compat: add a basename() compatibility function
Some systems such as Windows lack libgen.h so provide a basename() implementation for cross-platform use. This introduces the NO_LIBGEN_H construct to the Makefile and autoconf scripts. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0620b39b3b
commit
e1c0688692
8
Makefile
8
Makefile
@ -54,6 +54,8 @@ all::
|
|||||||
#
|
#
|
||||||
# Define NO_MKSTEMPS if you don't have mkstemps in the C library.
|
# Define NO_MKSTEMPS if you don't have mkstemps in the C library.
|
||||||
#
|
#
|
||||||
|
# Define NO_LIBGEN_H if you don't have libgen.h.
|
||||||
|
#
|
||||||
# Define NO_SYS_SELECT_H if you don't have sys/select.h.
|
# Define NO_SYS_SELECT_H if you don't have sys/select.h.
|
||||||
#
|
#
|
||||||
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
|
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
|
||||||
@ -834,6 +836,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
|
|||||||
NO_PREAD = YesPlease
|
NO_PREAD = YesPlease
|
||||||
NO_OPENSSL = YesPlease
|
NO_OPENSSL = YesPlease
|
||||||
NO_CURL = YesPlease
|
NO_CURL = YesPlease
|
||||||
|
NO_LIBGEN_H = YesPlease
|
||||||
NO_SYMLINK_HEAD = YesPlease
|
NO_SYMLINK_HEAD = YesPlease
|
||||||
NO_IPV6 = YesPlease
|
NO_IPV6 = YesPlease
|
||||||
NO_SETENV = YesPlease
|
NO_SETENV = YesPlease
|
||||||
@ -899,6 +902,11 @@ ifndef CC_LD_DYNPATH
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef NO_LIBGEN_H
|
||||||
|
COMPAT_CFLAGS += -DNO_LIBGEN_H
|
||||||
|
COMPAT_OBJS += compat/basename.o
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef NO_CURL
|
ifdef NO_CURL
|
||||||
BASIC_CFLAGS += -DNO_CURL
|
BASIC_CFLAGS += -DNO_CURL
|
||||||
else
|
else
|
||||||
|
15
compat/basename.c
Normal file
15
compat/basename.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "../git-compat-util.h"
|
||||||
|
|
||||||
|
/* Adapted from libiberty's basename.c. */
|
||||||
|
char *gitbasename (char *path)
|
||||||
|
{
|
||||||
|
const char *base;
|
||||||
|
/* Skip over the disk name in MSDOS pathnames. */
|
||||||
|
if (has_dos_drive_prefix(path))
|
||||||
|
path += 2;
|
||||||
|
for (base = path; *path; path++) {
|
||||||
|
if (is_dir_sep(*path))
|
||||||
|
base = path + 1;
|
||||||
|
}
|
||||||
|
return (char *)base;
|
||||||
|
}
|
@ -30,6 +30,7 @@ NEEDS_SSL_WITH_CRYPTO=@NEEDS_SSL_WITH_CRYPTO@
|
|||||||
NO_OPENSSL=@NO_OPENSSL@
|
NO_OPENSSL=@NO_OPENSSL@
|
||||||
NO_CURL=@NO_CURL@
|
NO_CURL=@NO_CURL@
|
||||||
NO_EXPAT=@NO_EXPAT@
|
NO_EXPAT=@NO_EXPAT@
|
||||||
|
NO_LIBGEN_H=@NO_LIBGEN_H@
|
||||||
NEEDS_LIBICONV=@NEEDS_LIBICONV@
|
NEEDS_LIBICONV=@NEEDS_LIBICONV@
|
||||||
NEEDS_SOCKET=@NEEDS_SOCKET@
|
NEEDS_SOCKET=@NEEDS_SOCKET@
|
||||||
NO_SYS_SELECT_H=@NO_SYS_SELECT_H@
|
NO_SYS_SELECT_H=@NO_SYS_SELECT_H@
|
||||||
|
@ -627,6 +627,12 @@ AC_SUBST(SNPRINTF_RETURNS_BOGUS)
|
|||||||
## (in default C library and libraries checked by AC_CHECK_LIB)
|
## (in default C library and libraries checked by AC_CHECK_LIB)
|
||||||
AC_MSG_NOTICE([CHECKS for library functions])
|
AC_MSG_NOTICE([CHECKS for library functions])
|
||||||
#
|
#
|
||||||
|
# Define NO_LIBGEN_H if you don't have libgen.h.
|
||||||
|
AC_CHECK_HEADER([libgen.h],
|
||||||
|
[NO_LIBGEN_H=],
|
||||||
|
[NO_LIBGEN_H=YesPlease])
|
||||||
|
AC_SUBST(NO_LIBGEN_H)
|
||||||
|
#
|
||||||
# Define NO_STRCASESTR if you don't have strcasestr.
|
# Define NO_STRCASESTR if you don't have strcasestr.
|
||||||
GIT_CHECK_FUNC(strcasestr,
|
GIT_CHECK_FUNC(strcasestr,
|
||||||
[NO_STRCASESTR=],
|
[NO_STRCASESTR=],
|
||||||
|
@ -97,6 +97,13 @@
|
|||||||
#include "compat/mingw.h"
|
#include "compat/mingw.h"
|
||||||
#endif /* __MINGW32__ */
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
|
#ifndef NO_LIBGEN_H
|
||||||
|
#include <libgen.h>
|
||||||
|
#else
|
||||||
|
#define basename gitbasename
|
||||||
|
extern char *gitbasename(char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NO_ICONV
|
#ifndef NO_ICONV
|
||||||
#include <iconv.h>
|
#include <iconv.h>
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user