From: Dmitry Antipov Date: Mon, 25 Jun 2012 14:07:04 +0000 (+0400) Subject: * configure.in (AC_CHECK_FUNCS): Detect library functions X-Git-Tag: emacs-24.2.90~1199^2~352 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3511c7847949ea1d53a32cf9327c0e02d2191f3d;p=emacs.git * configure.in (AC_CHECK_FUNCS): Detect library functions strcasecmp and strncasecmp. * lib-src/etags.c (etags_strcasecmp, etags_strncasecmp): Define to library functions strcasecmp and strncasecmp if available. * lwlib/lwlib.c (my_strcasecmp): Rename to lwlib_strcasecmp, which may be defined to library function strcasecmp if available. * src/dispextern.c (xstrcasecmp): Define to library function strcasecmp if available. * src/xfaces.c: Do not use xstrcasecmp if strcasecmp is available. --- diff --git a/ChangeLog b/ChangeLog index 667634cd1bd..ecbfaa502a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-06-25 Dmitry Antipov + + * configure.in (AC_CHECK_FUNCS): Detect library functions + strcasecmp and strncasecmp. + 2012-06-24 Paul Eggert Switch from NO_RETURN to C11's _Noreturn (Bug#11750). diff --git a/configure.in b/configure.in index 1115486b2ef..d85a64aa749 100644 --- a/configure.in +++ b/configure.in @@ -2671,6 +2671,7 @@ gai_strerror mkstemp getline getdelim fsync sync \ difftime posix_memalign \ getpwent endpwent getgrent endgrent \ touchlock \ +strcasecmp strncasecmp \ cfmakeraw cfsetspeed copysign __executable_start) dnl Cannot use AC_CHECK_FUNCS diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index a573cd88d10..a04fe215f99 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2012-06-25 Dmitry Antipov + + * etags.c (etags_strcasecmp, etags_strncasecmp): Define to + library functions strcasecmp and strncasecmp if available. + 2012-06-24 Paul Eggert Switch from NO_RETURN to C11's _Noreturn (Bug#11750). diff --git a/lib-src/etags.c b/lib-src/etags.c index 71f153163ef..f44c1c05393 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -389,8 +389,16 @@ static char *savenstr (const char *, int); static char *savestr (const char *); static char *etags_strchr (const char *, int); static char *etags_strrchr (const char *, int); +#ifdef HAVE_STRCASECMP +#define etags_strcasecmp(x,y) strcasecmp ((x), (y)) +#else static int etags_strcasecmp (const char *, const char *); +#endif +#ifdef HAVE_STRNCASECMP +#define etags_strncasecmp(x,y,z) strncasecmp ((x), (y), (z)) +#else static int etags_strncasecmp (const char *, const char *, int); +#endif static char *etags_getcwd (void); static char *relative_filename (char *, char *); static char *absolute_filename (char *, char *); @@ -6320,6 +6328,7 @@ etags_strchr (register const char *sp, register int c) return NULL; } +#ifndef HAVE_STRCASECMP /* * Compare two strings, ignoring case for alphabetic characters. * @@ -6338,7 +6347,9 @@ etags_strcasecmp (register const char *s1, register const char *s2) ? lowcase (*s1) - lowcase (*s2) : *s1 - *s2); } +#endif /* HAVE_STRCASECMP */ +#ifndef HAVE_STRNCASECMP /* * Compare two strings, ignoring case for alphabetic characters. * Stop after a given number of characters @@ -6361,6 +6372,7 @@ etags_strncasecmp (register const char *s1, register const char *s2, register in ? lowcase (*s1) - lowcase (*s2) : *s1 - *s2); } +#endif /* HAVE_STRCASECMP */ /* Skip spaces (end of string is not space), return new pointer. */ static char * diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index a6445f3ed56..13b4b3bb351 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,8 @@ +2012-06-25 Dmitry Antipov + + * lwlib.c (my_strcasecmp): Rename to lwlib_strcasecmp, which + may be defined to library function strcasecmp if available. + 2012-06-24 Paul Eggert Switch from NO_RETURN to C11's _Noreturn (Bug#11750). diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index 49c1b8df2e6..d1686ecd048 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -75,7 +75,6 @@ static widget_value *merge_widget_value (widget_value *, widget_value *, int, int *); static void instantiate_widget_instance (widget_instance *); -static int my_strcasecmp (const char *, const char *); static void safe_free_str (char *); static void free_widget_value_tree (widget_value *); static widget_value *copy_widget_value_tree (widget_value *, @@ -115,10 +114,14 @@ safe_strdup (const char *s) return result; } +#ifdef HAVE_STRCASECMP +#define lwlib_strcasecmp(x,y) strcasecmp ((x), (y)) +#else + /* Like strcmp but ignore differences in case. */ static int -my_strcasecmp (const char *s1, const char *s2) +lwlib_strcasecmp (const char *s1, const char *s2) { while (1) { @@ -134,6 +137,7 @@ my_strcasecmp (const char *s1, const char *s2) return 0; } } +#endif /* HAVE_STRCASECMP */ static void safe_free_str (char *s) @@ -731,7 +735,7 @@ find_in_table (const char *type, const widget_creation_entry *table) { const widget_creation_entry* cur; for (cur = table; cur->type; cur++) - if (!my_strcasecmp (type, cur->type)) + if (!lwlib_strcasecmp (type, cur->type)) return cur->function; return NULL; } diff --git a/src/ChangeLog b/src/ChangeLog index 48eb04ca50d..a8c8b84b34a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-06-25 Dmitry Antipov + + * dispextern.c (xstrcasecmp): Define to library function + strcasecmp if available. + * xfaces.c: Do not use xstrcasecmp if strcasecmp is available. + 2012-06-25 Andreas Schwab * keyboard.c (menu_bar_items, menu_bar_item, read_key_sequence): diff --git a/src/dispextern.h b/src/dispextern.h index 63c23b8962f..d541d181fbf 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3216,7 +3216,11 @@ void unload_color (struct frame *, unsigned long); char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object, int *); void prepare_face_for_display (struct frame *, struct face *); +#ifdef HAVE_STRCASECMP +#define xstrcasecmp(x,y) strcasecmp ((x), (y)) +#else int xstrcasecmp (const char *, const char *); +#endif int lookup_named_face (struct frame *, Lisp_Object, int); int lookup_basic_face (struct frame *, int); int smaller_face (struct frame *, int, int); diff --git a/src/xfaces.c b/src/xfaces.c index 32d1499b85a..f2cd0eb6af8 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -716,6 +716,7 @@ x_free_gc (struct frame *f, GC gc) } #endif /* HAVE_NS */ +#ifndef HAVE_STRCASECMP /* Like strcasecmp/stricmp. Used to compare parts of font names which are in ISO8859-1. */ @@ -737,7 +738,7 @@ xstrcasecmp (const char *s1, const char *s2) return *s2 == 0 ? 0 : -1; return 1; } - +#endif /* HAVE_STRCASECMP */ /* If FRAME is nil, return a pointer to the selected frame. Otherwise, check that FRAME is a live frame, and return a pointer