changeset 30587:5d379d2ad903

strcase-wrappers: Add wrappers for strcasecmp and strncasecmp. * liboctave/wrappers/strcase-wrappers.h, liboctave/wrappers/strcase-wrappers.cc: Add new wrapper files. * liboctave/wrappers/module.mk: Add new files to build system. * liboctave/util/lo-cutils.h, liboctave/util/lo-cutils.c: Remove functions that have been moved to dedicated header files. * bootstrap.conf: Explicitly add strcase module. * libinterp/corefcn/oct-stream.cc, libinterp/corefcn/utils.cc: Include new header. See: https://octave.discourse.group/t/1998
author Markus Mützel <markus.muetzel@gmx.de>
date Fri, 31 Dec 2021 18:44:26 +0100
parents cdb9b90b907f
children ed17822e7662
files bootstrap.conf libinterp/corefcn/oct-stream.cc libinterp/corefcn/utils.cc liboctave/util/lo-cutils.c liboctave/util/lo-cutils.h liboctave/wrappers/module.mk liboctave/wrappers/strcase-wrappers.c liboctave/wrappers/strcase-wrappers.h
diffstat 8 files changed, 98 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/bootstrap.conf	Fri Dec 31 19:23:18 2021 +0100
+++ b/bootstrap.conf	Fri Dec 31 18:44:26 2021 +0100
@@ -90,6 +90,7 @@
   stat
   stddef
   stdio
+  strcase
   strdup-posix
   strerror
   strptime
--- a/libinterp/corefcn/oct-stream.cc	Fri Dec 31 19:23:18 2021 +0100
+++ b/libinterp/corefcn/oct-stream.cc	Fri Dec 31 18:44:26 2021 +0100
@@ -42,7 +42,6 @@
 #include "Array.h"
 #include "Cell.h"
 #include "byte-swap.h"
-#include "lo-cutils.h"
 #include "lo-ieee.h"
 #include "lo-mappers.h"
 #include "lo-utils.h"
@@ -50,6 +49,7 @@
 #include "octave-preserve-stream-state.h"
 #include "quit.h"
 #include "str-vec.h"
+#include "strcase-wrappers.h"
 
 #include "error.h"
 #include "errwarn.h"
--- a/libinterp/corefcn/utils.cc	Fri Dec 31 19:23:18 2021 +0100
+++ b/libinterp/corefcn/utils.cc	Fri Dec 31 18:44:26 2021 +0100
@@ -48,6 +48,7 @@
 #include "pathsearch.h"
 #include "quit.h"
 #include "str-vec.h"
+#include "strcase-wrappers.h"
 #include "vasprintf-wrapper.h"
 
 #include "Cell.h"
--- a/liboctave/util/lo-cutils.c	Fri Dec 31 19:23:18 2021 +0100
+++ b/liboctave/util/lo-cutils.c	Fri Dec 31 18:44:26 2021 +0100
@@ -28,7 +28,6 @@
 #endif
 
 #include <stdlib.h>
-#include <string.h>
 
 #include "lo-cutils.h"
 
@@ -38,15 +37,3 @@
 {
   qsort (base, n, size, cmp);
 }
-
-OCTAVE_API int
-octave_strcasecmp (const char *s1, const char *s2)
-{
-  return strcasecmp (s1, s2);
-}
-
-OCTAVE_API int
-octave_strncasecmp (const char *s1, const char *s2, size_t n)
-{
-  return strncasecmp (s1, s2, n);
-}
--- a/liboctave/util/lo-cutils.h	Fri Dec 31 19:23:18 2021 +0100
+++ b/liboctave/util/lo-cutils.h	Fri Dec 31 18:44:26 2021 +0100
@@ -40,12 +40,6 @@
 octave_qsort (void *base, size_t n, size_t size,
               int (*cmp) (const void *, const void *));
 
-OCTAVE_API int
-octave_strcasecmp (const char *s1, const char *s2);
-
-OCTAVE_API int
-octave_strncasecmp (const char *s1, const char *s2, size_t n);
-
 #if defined (__cplusplus)
 }
 #endif
--- a/liboctave/wrappers/module.mk	Fri Dec 31 19:23:18 2021 +0100
+++ b/liboctave/wrappers/module.mk	Fri Dec 31 18:44:26 2021 +0100
@@ -24,6 +24,7 @@
   %reldir%/set-program-name-wrapper.h \
   %reldir%/signal-wrappers.h \
   %reldir%/stat-wrappers.h \
+  %reldir%/strcase-wrappers.h \
   %reldir%/strdup-wrapper.h \
   %reldir%/strftime-wrapper.h \
   %reldir%/strmode-wrapper.h \
@@ -67,6 +68,7 @@
   %reldir%/set-program-name-wrapper.c \
   %reldir%/signal-wrappers.c \
   %reldir%/stat-wrappers.c \
+  %reldir%/strcase-wrappers.c \
   %reldir%/strdup-wrapper.c \
   %reldir%/strftime-wrapper.c \
   %reldir%/strmode-wrapper.c \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liboctave/wrappers/strcase-wrappers.c	Fri Dec 31 18:44:26 2021 +0100
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) 2022 The Octave Project Developers
+//
+// See the file COPYRIGHT.md in the top-level directory of this
+// distribution or <https://octave.org/copyright/>.
+//
+// This file is part of Octave.
+//
+// Octave is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Octave is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// 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 Octave; see the file COPYING.  If not, see
+// <https://www.gnu.org/licenses/>.
+//
+////////////////////////////////////////////////////////////////////////
+
+#if defined (HAVE_CONFIG_H)
+#  include "config.h"
+#endif
+
+#include <strings.h>
+
+#include "strcase-wrappers.h"
+
+OCTAVE_API int
+octave_strcasecmp (const char *s1, const char *s2)
+{
+  return strcasecmp (s1, s2);
+}
+
+OCTAVE_API int
+octave_strncasecmp (const char *s1, const char *s2, size_t n)
+{
+  return strncasecmp (s1, s2, n);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liboctave/wrappers/strcase-wrappers.h	Fri Dec 31 18:44:26 2021 +0100
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) 2022 The Octave Project Developers
+//
+// See the file COPYRIGHT.md in the top-level directory of this
+// distribution or <https://octave.org/copyright/>.
+//
+// This file is part of Octave.
+//
+// Octave is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Octave is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// 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 Octave; see the file COPYING.  If not, see
+// <https://www.gnu.org/licenses/>.
+//
+////////////////////////////////////////////////////////////////////////
+
+#if ! defined (octave_strcase_wrappers_h)
+#define octave_strcase_wrappers_h 1
+
+#include "octave-config.h"
+
+#if defined (__cplusplus)
+#include <cstddef>
+using std::size_t;
+extern "C" {
+#else
+#include <stddef.h>
+#endif
+
+OCTAVE_API int
+octave_strcasecmp (const char *s1, const char *s2);
+
+OCTAVE_API int
+octave_strncasecmp (const char *s1, const char *s2, size_t n);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif