]> granicus.if.org Git - graphviz/commitdiff
replace in-tree str[n]casecmp implementations with libc
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 2 Aug 2020 01:42:17 +0000 (18:42 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 7 Aug 2020 14:00:28 +0000 (07:00 -0700)
Instead of carrying multiple implementations of these functions in the Graphviz
tree, we now call the built-in support on the current platform. Closes #1775.

32 files changed:
cmd/smyrna/gui/frmobjectui.c
cmd/smyrna/gui/gui.c
cmd/smyrna/smyrna_utils.c
cmd/smyrna/viewport.c
lib/cgraph/write.c
lib/common/Makefile.am
lib/common/colxlate.c
lib/common/htmllex.c
lib/common/htmltable.c
lib/common/input.c
lib/common/mifgen.c
lib/common/psusershape.c
lib/common/strcasecmp.c [deleted file]
lib/common/strncasecmp.c [deleted file]
lib/common/textspan.c
lib/common/utils.c
lib/common/utils.h
lib/common/vtxgen.c
lib/gvc/gvc.def
lib/gvc/gvplugin.c
lib/gvc/gvrender.c
lib/gvpr/actions.c
lib/inkpot/data/xcolors.c
lib/neatogen/adjust.c
lib/neatogen/neatoinit.c
lib/sfdpgen/sfdpinit.c
plugin/core/gvrender_core_mif.c
plugin/core/gvrender_core_svg.c
plugin/core/gvrender_core_vml.c
plugin/gd/gvtextlayout_gd.c
plugin/pango/gvgetfontlist_pango.c
tclpkg/tcldot/tcldot-util.c

index 1d90ddcfc96c3776ce9f0aca2c50de46d3650606..4469dbaf16214e02266fd05ae13acf1bd2916653 100644 (file)
 #include <assert.h>
 #include "sfstr.h"
 #include "gvprpipe.h"
-
-
-
-#ifdef _WIN32
-#define STRCASECMP stricmp
-#else
-#include <strings.h>
-#define STRCASECMP strcasecmp
-#endif
+#include "strcasecmp.h"
 
 static attr_t *binarySearch(attr_list * l, char *searchKey);
 static int sel_node;
@@ -212,7 +204,7 @@ int attr_compare(const void *a, const void *b)
 {
     const attr_t *a1 = *(attr_t *const *) a;
     const attr_t *a2 = *(attr_t *const *) b;
-    return STRCASECMP(a1->name, a2->name);
+    return strcasecmp(a1->name, a2->name);
 }
 
 static void attr_list_sort(attr_list * l)
@@ -298,7 +290,7 @@ static attr_t *binarySearch(attr_list * l, char *searchKey)
 
     while (low <= high) {
        middle = (low + high) / 2;
-       res = STRCASECMP(searchKey, l->attributes[middle]->name);
+       res = strcasecmp(searchKey, l->attributes[middle]->name);
        if (res == 0) {
            return l->attributes[middle];
        } else if (res < 0) {
@@ -326,7 +318,7 @@ static attr_t *pBinarySearch(attr_list * l, char *searchKey)
        middle = (low + high) / 2;
        strncpy(buf, l->attributes[middle]->name, strlen(searchKey));
        buf[strlen(searchKey)] = '\0';
-       res = STRCASECMP(searchKey, buf);
+       res = strcasecmp(searchKey, buf);
        if (res == 0) {
            return l->attributes[middle];
        }
@@ -366,14 +358,14 @@ void create_filtered_list(char *prefix, attr_list * sl, attr_list * tl)
        at = sl->attributes[at->index - 1];
        strncpy(buf, at->name, strlen(prefix));
        buf[strlen(prefix)] = '\0';;
-       res = STRCASECMP(prefix, buf);
+       res = strcasecmp(prefix, buf);
     }
     res = 0;
     while ((at->index < sl->attr_count) && (res == 0)) {
        at = sl->attributes[at->index + 1];
        strncpy(buf, at->name, strlen(prefix));
        buf[strlen(prefix)] = '\0';
-       res = STRCASECMP(prefix, buf);
+       res = strcasecmp(prefix, buf);
        if ((res == 0) && (at->objType[objKind] == 1))
            attr_list_add(tl, new_attr_ref(at));
     }
@@ -434,7 +426,7 @@ void filter_attributes(char *prefix, topview * t)
 
 
     for (ind = 0; ind < fl->attr_count; ind++) {
-       if (STRCASECMP(prefix, fl->attributes[ind]->name) == 0) {       /*an existing attribute */
+       if (strcasecmp(prefix, fl->attributes[ind]->name) == 0) {       /*an existing attribute */
 
            Color_Widget_bg("green", glade_xml_get_widget(xml, "txtAttr"));
 
@@ -488,15 +480,15 @@ _BB void on_txtAttr_changed(GtkWidget * widget, gpointer user_data)
 
 static void set_refresh_filters(ViewInfo * v, int type, char *name)
 {
-    if (STRCASECMP(name, "pos") == 0)
+    if (strcasecmp(name, "pos") == 0)
        v->refresh.pos = 1;
-    if (STRCASECMP(name, "color") == 0)
+    if (strcasecmp(name, "color") == 0)
        v->refresh.color = 1;
-    if ((STRCASECMP(name, "size") == 0) && (type == AGNODE))
+    if ((strcasecmp(name, "size") == 0) && (type == AGNODE))
        v->refresh.nodesize = 1;
-    if (STRCASECMP(name, "selected") == 0)
+    if (strcasecmp(name, "selected") == 0)
        v->refresh.selection = 1;
-    if (STRCASECMP(name, "visible") == 0)
+    if (strcasecmp(name, "visible") == 0)
        v->refresh.visibility = 1;
 
 }
index f68d24cb509e16ba3e00f2dd369d2e3b66a5e2e7..10874409103253021c6cf677c94779a48d52daed 100644 (file)
 #include <gdk/gdk.h>
 #include "viewport.h"
 #include "memory.h"
+#include "strcasecmp.h"
 
 
 static char guibuffer[BUFSIZ]; //general purpose buffer
 
-#ifdef _WIN32
-extern int strcasecmp(const char *s1, const char *s2);
-extern int strncasecmp(const char *s1, const char *s2, unsigned int n);
-#endif
-
 GdkWindow *window1;
 GtkWidget *statusbar1;
 
index bfe3baa314fcf4ab81b5f2df83d4965d7db53672..d4e29a33c6ffa790a1e201e5c7f8466acfe77842 100644 (file)
@@ -12,6 +12,7 @@
  *************************************************************************/
 #include "smyrna_utils.h"
 #include "memory.h"
+#include "strcasecmp.h"
 /* many of these functions are available in libcommon.
  * We cannot use those because dependencies cause a great
  * deal of libcommon to be brought in, which complicates
index 371ebfc3f8670167417e69d85a945ecece2bbbd9..150eaa7f59d5640182234fbd406b92976d4dacbb 100644 (file)
@@ -34,6 +34,7 @@
 #include "arcball.h"
 #include "hotkeymap.h"
 #include "topviewfuncs.h"
+#include "strcasecmp.h"
 
 
   /* Forward declarations */
index b6d56aaa06c69c15fa836e059c2e946757926ff0..5b00304beae86930c424d996c61765d4b6a515fe 100644 (file)
@@ -14,6 +14,7 @@
 #include <stdio.h>             /* need sprintf() */
 #include <ctype.h>
 #include "cghdr.h"
+#include "strcasecmp.h"
 
 #define EMPTY(s)               ((s == 0) || (s)[0] == '\0')
 #define MAX(a,b)     ((a)>(b)?(a):(b))
@@ -43,23 +44,6 @@ static int indent(Agraph_t * g, iochan_t * ofile)
     return 0;
 }
 
-#ifndef HAVE_STRCASECMP
-
-#include <string.h>
-
-static int strcasecmp(const char *s1, const char *s2)
-{
-    while ((*s1 != '\0')
-          && (tolower(*(unsigned char *) s1) ==
-              tolower(*(unsigned char *) s2))) {
-       s1++;
-       s2++;
-    }
-
-    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
-}
-#endif
-
     /* alphanumeric, '.', '-', or non-ascii; basically, chars used in unquoted ids */
 #define is_id_char(c) (isalnum(c) || ((c) == '.') || ((c) == '-') || !isascii(c))
 
index 2b5600d9747784208677c6bfb93f65d426fa0af6..21736da0138c2e44ca9a5111fb6fdff2767d8c0a 100644 (file)
@@ -78,7 +78,7 @@ DISTCLEANFILES = brewer_lib color_lib colortbl.h ps_font_equiv.h \
        y.output y.tab.[ch] htmlparse.[ch]
 
 EXTRA_DIST = README.imap chars.tcl ps_font_equiv.h \
-       strcasecmp.c strncasecmp.c htmlparse.c htmlparse.h \
+       htmlparse.c htmlparse.h \
        y.tab.c y.tab.h y.output entities.html entities.tcl \
        brewer_colors brewer_lib svgcolor_names svgcolor_lib \
        color_names color_lib colortbl.h mksvgfonts.pl
index 4cf3af144c2807ee9611444923930f11fa4a652f..d17e0c5b04929252ecb8729b3e73afe4438d24a8 100644 (file)
 #include "colorprocs.h"
 #include "colortbl.h"
 #include "memory.h"
+#include "strcasecmp.h"
 
 static char* colorscheme;
 
-#ifdef _MSC_VER
-extern int strcasecmp(const char *s1, const char *s2);
-extern int strncasecmp(const char *s1, const char *s2, unsigned int n);
-#endif
-
-
 static void hsv2rgb(double h, double s, double v,
                        double *r, double *g, double *b)
 {
index d276c03b6c2729f2a935509a586abceade026c20..2ad4c558ae819f91da7e012ed9e68f02821f74b2 100644 (file)
@@ -18,6 +18,7 @@
 #include "htmllex.h"
 #include "cdt.h"
 #include <ctype.h>
+#include "strcasecmp.h"
 
 #ifdef HAVE_EXPAT
 #include <expat.h>
index 7fa5b390c83deaa2bf6d84d24f2ac3d76c570332..6775abb2a1def98a5309c05013c31c8bd2777a8b 100644 (file)
@@ -38,6 +38,7 @@
 #include "pointset.h"
 #include "intset.h"
 #include "cdt.h"
+#include "strcasecmp.h"
 
 #define DEFAULT_BORDER    1
 #define DEFAULT_CELLPADDING  2
index 5262a1caddb2f3603c9a35af337ce15befc68301..a2eb4e1f654a9201ab79e82c25af7180bf462d82 100644 (file)
@@ -17,6 +17,7 @@
 #include "gvc.h"
 #include "xdot.h"
 #include "agxbuf.h"
+#include "strcasecmp.h"
 
 static char *usageFmt =
     "Usage: %s [-Vv?] [-(GNE)name=val] [-(KTlso)<val>] <dot files>\n";
index 8d1cfa655d5d26297bd4cb95e49b3e8809aa1140..de017118477735df0426d7bf02c01f6d9f500db9 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include "render.h"
+#include "strcasecmp.h"
 
 #define        NONE    0
 #define        NODE    1
index d1a3d80c7d60d082a702cc475f0a4501feaa8b6c..d33bca46ff96b3ff41bff2c2d74dc3974de6246c 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "render.h"
 #include "gvio.h"
+#include "strcasecmp.h"
 
 static int N_EPSF_files;
 static Dict_t *EPSF_contents;
diff --git a/lib/common/strcasecmp.c b/lib/common/strcasecmp.c
deleted file mode 100644 (file)
index 6bca610..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* $Id$ $Revision$ */
-/* vim:set shiftwidth=4 ts=8: */
-
-/*************************************************************************
- * Copyright (c) 2011 AT&T Intellectual Property 
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: See CVS logs. Details at http://www.graphviz.org/
- *************************************************************************/
-
-#include "config.h"
-
-
-#include <string.h>
-#include <ctype.h>
-
-
-int strcasecmp(const char *s1, const char *s2)
-{
-    while ((*s1 != '\0')
-          && (tolower(*(unsigned char *) s1) ==
-              tolower(*(unsigned char *) s2))) {
-       s1++;
-       s2++;
-    }
-
-    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
-}
-
diff --git a/lib/common/strncasecmp.c b/lib/common/strncasecmp.c
deleted file mode 100644 (file)
index 48983fe..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* $Id$ $Revision$ */
-/* vim:set shiftwidth=4 ts=8: */
-
-/*************************************************************************
- * Copyright (c) 2011 AT&T Intellectual Property 
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: See CVS logs. Details at http://www.graphviz.org/
- *************************************************************************/
-
-#include "config.h"
-
-
-#include <string.h>
-#include <ctype.h>
-
-int strncasecmp(const char *s1, const char *s2, unsigned int n)
-{
-    if (n == 0)
-       return 0;
-
-    while ((n-- != 0)
-          && (tolower(*(unsigned char *) s1) ==
-              tolower(*(unsigned char *) s2))) {
-       if (n == 0 || *s1 == '\0' || *s2 == '\0')
-           return 0;
-       s1++;
-       s2++;
-    }
-
-    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
-}
-
index 3f3f446052d9543d7559b8af59c52f126d6d97af..8e6b0fd57205a0fe1e22f317b44bd2671afd1263 100644 (file)
@@ -16,6 +16,7 @@
 #include <string.h>
 #include "cdt.h"
 #include "render.h"
+#include "strcasecmp.h"
 
 static double timesFontWidth[] = {
     0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.2500, 0.2500,    /*          */
index 75b4763724054e563ef450e538cabb792d38b347..17ba7834c8bb78a5c67b1a097974e4509bf3f111 100644 (file)
@@ -17,6 +17,7 @@
 #include "entities.h"
 #include "logic.h"
 #include "gvc.h"
+#include "strcasecmp.h"
 
 #ifdef _WIN32
 #define R_OK 4
@@ -1888,53 +1889,6 @@ void get_gradient_points(pointf * A, pointf * G, int n, float angle, int flags)
     }
 }
 
-#ifndef WIN32_STATIC
-#ifndef HAVE_STRCASECMP
-
-
-#include <string.h>
-//#include <ctype.h>
-
-
-int strcasecmp(const char *s1, const char *s2)
-{
-    while ((*s1 != '\0')
-          && (tolower(*(unsigned char *) s1) ==
-              tolower(*(unsigned char *) s2))) {
-       s1++;
-       s2++;
-    }
-
-    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
-}
-
-#endif                         /* HAVE_STRCASECMP */
-#endif                         /* WIN32_STATIC */
-
-#ifndef WIN32_STATIC
-#ifndef HAVE_STRNCASECMP
-#include <string.h>
-//#include <ctype.h>
-
-int strncasecmp(const char *s1, const char *s2, unsigned int n)
-{
-    if (n == 0)
-       return 0;
-
-    while ((n-- != 0)
-          && (tolower(*(unsigned char *) s1) ==
-              tolower(*(unsigned char *) s2))) {
-       if (n == 0 || *s1 == '\0' || *s2 == '\0')
-           return 0;
-       s1++;
-       s2++;
-    }
-
-    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2);
-}
-
-#endif                         /* HAVE_STRNCASECMP */
-#endif                          /* WIN32_STATIC */
 void gv_free_splines(edge_t * e)
 {
     int i;
index 242e5d185d7e7de223c883b669678824a8e67d18..4177461a2d21f769990ceb7a7a7ea262d68c656d 100644 (file)
@@ -27,13 +27,6 @@ extern "C" {
 #endif
 /*end visual studio*/
 
-#ifndef HAVE_STRCASECMP
-    extern int strcasecmp(const char *s1, const char *s2);
-#endif
-#ifndef HAVE_STRNCASECMP
-    extern int strncasecmp(const char *s1, const char *s2, size_t n);
-#endif
-
     extern nodequeue *new_queue(int);
     extern void free_queue(nodequeue *);
     extern void enqueue(nodequeue *, Agnode_t *);
index 1538641d34ae777773d345ed62a7a4d9a28d8c1b..09de98b55f8b07eb6174f460e9b1453a6557c495 100644 (file)
@@ -28,6 +28,7 @@
 #ifdef SUPPORT_WRITEDATE
 #include <time.h>
 #endif
+#include "strcasecmp.h"
 
 
 /* VTX font modifiers */
index 30492dd099a45a4b6bdb12990163b686ac0e1997..724d4a250cfeddd6f564a6ecca3e088c81b54d6b 100644 (file)
@@ -306,8 +306,6 @@ xml_url_string
 Y_invert    
 zmalloc    
 zrealloc    
-strcasecmp
-strncasecmp
 colorxlate
 fix_fc
 gvContextPlugins
index e2bb1dd8194dade35e49414690e79be9b5c4409e..51b1f75a37be74404d859167378f9b9bfbe5eb23 100644 (file)
 #include        "gvio.h"
 
 #include       "const.h"
-
-#ifndef HAVE_STRCASECMP
-extern int strcasecmp(const char *s1, const char *s2);
-#endif
+#include "strcasecmp.h"
 
 #ifdef _WIN32
 #define strdup(x) _strdup(x)
index 38d6b09980bda421bef3c43ee303d35b40c65c74..8001cc0a21199c30b11b670fb7f0d0f36218432a 100644 (file)
 #include "geom.h"
 #include "geomprocs.h"
 #include "gvcproc.h"
+#include "strcasecmp.h"
 
 extern int emit_once(char *str);
 extern shape_desc *find_user_shape(char *name);
 extern boolean mapbool(char *s);
 
-#ifndef HAVE_STRCASECMP
-extern int strcasecmp(const char *s1, const char *s2);
-#endif
-
 /* storage for temporary hacks until client API is FP */
 static pointf *AF;
 static int sizeAF;
index 28829f062f92a006e2f951ba6889bd7420d9f684..856feb877b3b51cb866bf39eeb65620d4564fcc1 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <ctype.h>
+#include "strcasecmp.h"
 
 #define KINDS(p) ((AGTYPE(p) == AGRAPH) ? "graph" : (AGTYPE(p) == AGNODE) ? "node" : "edge")
 
@@ -824,12 +825,6 @@ char *canon(Expr_t * pgm, char *arg)
 
 static char* colorscheme;
 
-#ifdef _MSC_VER
-extern int strcasecmp(const char *s1, const char *s2);
-extern int strncasecmp(const char *s1, const char *s2, unsigned int n);
-#endif
-
-
 static void hsv2rgb(double h, double s, double v,
                        double *r, double *g, double *b)
 {
index 64738d3bf29105123176cf7ca518fbe409ca49ab..bdd106ddec9ef3460249593923222a6564ab26e7 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <tkInt.h>
+#include "strcasecmp.h"
 
 /*
  * This value will be set to the number of colors in the color table
index a83a26c7b8b23d4258494a54215c8f2c927a91cc..a42c24f735d3ec617001fdf2d1b3e4e07b3629eb 100644 (file)
@@ -34,6 +34,7 @@
 #include "csolve_VPSC.h"
 #include "quad_prog_vpsc.h"
 #endif
+#include "strcasecmp.h"
 
 #define SEPFACT         0.8  /* default esep/sep */
 
index c2c36914e91a035a35f03dea7c4dc23e13af0a71..5e1b03f49fc08c333b9af3b0dc44f7c12a32d25b 100644 (file)
@@ -29,6 +29,7 @@
 #include "kkutils.h"
 #include "pointset.h"
 #include "sgd.h"
+#include "strcasecmp.h"
 
 #ifndef HAVE_SRAND48
 #define srand48 srand
index 3e9ae243fd17ea8ca329f57771af6ba22de9f389..f509c3b1b86affd0e257941710b34cd7ad1c0b9d 100644 (file)
@@ -24,6 +24,7 @@
 #include <overlap.h>
 #include <uniform_stress.h>
 #include <stress_model.h>
+#include "strcasecmp.h"
 
 static void sfdp_init_edge(edge_t * e)
 {
index 9300bbbfb07d2b32a10c6a37ba1bde298629db72..b414c0d3491985f4fcebca08e2c9c06e87a323bc 100644 (file)
@@ -27,6 +27,7 @@
 #include "gvplugin_render.h"
 #include "gvplugin_device.h"
 #include "gvcint.h"
+#include "strcasecmp.h"
 
 typedef enum { FORMAT_MIF, } format_type;
 
index 5f1d3105260c10ba268d2c82d92bccb2a51d9987..edcc32be2af80fbc188fd393dd4fd2c07a7f0b55 100644 (file)
@@ -37,6 +37,7 @@
 #include "gvplugin_device.h"
 #include "gvio.h"
 #include "gvcint.h"
+#include "strcasecmp.h"
 
 #define LOCALNAMEPREFIX                '%'
 
@@ -47,10 +48,6 @@ static char *sdasharray = "5,2";
 /* SVG dot array */
 static char *sdotarray = "1,5";
 
-#ifndef HAVE_STRCASECMP
-extern int strcasecmp(const char *s1, const char *s2);
-#endif
-
 static void svg_bzptarray(GVJ_t * job, pointf * A, int n)
 {
     int i;
index 2cc3b53c7f08d2240ad4b86be252301454aeec34..630fe03cb882c607ecc82977328c5503e6919aed 100644 (file)
 #include "gvplugin_device.h"
 #include "gvio.h"
 #include "memory.h"
+#include "strcasecmp.h"
 
 typedef enum { FORMAT_VML, FORMAT_VMLZ, } format_type;
 
 unsigned int  graphHeight,graphWidth;
 
-#ifndef HAVE_STRCASECMP
-extern int strcasecmp(const char *s1, const char *s2);
-#endif
-
 /*  this is a direct copy fromlib/common/labels.c  */
 static int xml_isentity(char *s)
 {
index 867c511779d05c0cb395f65bed989eaefbffcd17..7ead7e48e50952981392c2c361422102b3c99c7a 100644 (file)
@@ -18,6 +18,7 @@
 #include <string.h>
 #include "gvplugin_textlayout.h"
 #include "gd.h"
+#include "strcasecmp.h"
 
 #ifdef HAVE_GD_FREETYPE
 
index d696e692f1c70143bfa36aa9fb09c19d8069e125..e9df1191129bcb24ff998f5482940ecb7c95565a 100644 (file)
@@ -17,6 +17,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include "strcasecmp.h"
 
 /* FIXME - the following declaration should be removed
  * when configure is coordinated with flags passed to the
index a22ceccfd44b35f8b04ad944483cbc08413894d1..979823466192a9a894b3105e10eb05408c7fb965 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include "tcldot.h"
+#include "strcasecmp.h"
 
 size_t Tcldot_string_writer(GVJ_t *job, const char *s, size_t len)
 {