Update copyright year to 2014 by running admin/update-copyright.
[bpt/emacs.git] / lwlib / lwlib.c
index 9d8ec33..f3e8016 100644 (file)
@@ -1,7 +1,7 @@
 /* A general interface to the widgets of different toolkits.
 
 Copyright (C) 1992, 1993 Lucid, Inc.
-Copyright (C) 1994-1996, 1999-201 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2014 Free Software Foundation, Inc.
 
 This file is part of the Lucid Widget Library.
 
@@ -16,20 +16,16 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.  */
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <setjmp.h>
 #include <lisp.h>
+#include <c-strcase.h>
 
 #include <sys/types.h>
 #include <stdio.h>
-#include <ctype.h>
 #include "lwlib-int.h"
 #include "lwlib-utils.h"
 #include <X11/StringDefs.h>
@@ -75,7 +71,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 *,
@@ -108,37 +103,13 @@ static void show_one_widget_busy (Widget, Boolean);
 char *
 safe_strdup (const char *s)
 {
-  char *result;
-  if (! s) return 0;
-  result = (char *) xmalloc (strlen (s) + 1);
-  strcpy (result, s);
-  return result;
-}
-
-/* Like strcmp but ignore differences in case.  */
-
-static int
-my_strcasecmp (const char *s1, const char *s2)
-{
-  while (1)
-    {
-      int c1 = *s1++;
-      int c2 = *s2++;
-      if (isupper (c1))
-       c1 = tolower (c1);
-      if (isupper (c2))
-       c2 = tolower (c2);
-      if (c1 != c2)
-       return (c1 > c2 ? 1 : -1);
-      if (c1 == 0)
-       return 0;
-    }
+  return s ? xstrdup (s) : 0;
 }
 
 static void
 safe_free_str (char *s)
 {
-  free (s);
+  xfree (s);
 }
 
 static widget_value *widget_value_free_list = 0;
@@ -176,7 +147,7 @@ free_widget_value (widget_value *wv)
     {
       /* When the number of already allocated cells is too big,
         We free it.  */
-      free (wv);
+      xfree (wv);
       malloc_cpt--;
     }
   else
@@ -192,9 +163,9 @@ free_widget_value_tree (widget_value *wv)
   if (!wv)
     return;
 
-  free (wv->name);
-  free (wv->value);
-  free (wv->key);
+  xfree (wv->name);
+  xfree (wv->value);
+  xfree (wv->key);
 
   wv->name = wv->value = wv->key = (char *) 0xDEADBEEF;
 
@@ -281,7 +252,7 @@ free_widget_info (widget_info *info)
   safe_free_str (info->name);
   free_widget_value_tree (info->val);
   memset ((void*)info, 0xDEADBEEF, sizeof (widget_info));
-  free (info);
+  xfree (info);
 }
 
 static void
@@ -317,7 +288,7 @@ static void
 free_widget_instance (widget_instance *instance)
 {
   memset ((void*)instance, 0xDEADBEEF, sizeof (widget_instance));
-  free (instance);
+  xfree (instance);
 }
 
 static widget_info *
@@ -602,7 +573,7 @@ name_to_widget (widget_instance *instance, const char *name)
 
       widget = XtNameToWidget (instance->widget, real_name);
 
-      free (real_name);
+      xfree (real_name);
     }
   return widget;
 }
@@ -731,7 +702,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 (!c_strcasecmp (type, cur->type))
       return cur->function;
   return NULL;
 }
@@ -1156,9 +1127,9 @@ lw_get_widget_value_for_widget (widget_instance *instance, Widget w)
 /* To forbid recursive calls */
 static Boolean lwlib_updating;
 
-/* This function can be used as a an XtCallback for the widgets that get
-  modified to update other instances of the widgets.  Closure should be the
-  widget_instance. */
+/* This function can be used as an XtCallback for the widgets that get
+   modified to update other instances of the widgets.  Closure should be the
+   widget_instance. */
 void
 lw_internal_update_other_instances (Widget widget,
                                     XtPointer closure,