<pre style='margin:0'>
Marius Schamschula (Schamschula) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/59e37ca7c65d769e324da96a3bb4407ff1760de6">https://github.com/macports/macports-ports/commit/59e37ca7c65d769e324da96a3bb4407ff1760de6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 59e37ca  fsearch 0.1beta2: new port
</span>59e37ca is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 59e37ca7c65d769e324da96a3bb4407ff1760de6
</span>Author: Marius Schamschula <mps@macports.org>
AuthorDate: Fri Sep 1 18:29:40 2017 -0500

<span style='display:block; white-space:pre;color:#404040;'>    fsearch 0.1beta2: new port
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/54705
</span>---
 sysutils/fsearch/Portfile                         |  33 +++++
 sysutils/fsearch/files/patch-configure.ac.diff    |  14 ++
 sysutils/fsearch/files/patch-src-Makefile.am.diff |  10 ++
 sysutils/fsearch/files/strverscmp.c               | 158 ++++++++++++++++++++++
 4 files changed, 215 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fsearch/Portfile b/sysutils/fsearch/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..397a188
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fsearch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cxx11 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        cboxdoerfer fsearch 0.1beta2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          sysutils
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL2+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {mps @Schamschula} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         FSearch is a fast file search utility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    ${description}, inspired by Everything Search Engine.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  60cab5691901854353a1cb4db2a61b377508a20d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  b28b42634284a71a0402735658a378c8c57cc02649df14e4915ccb7917b653d5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build       port:autoconf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:automake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         port:gettext \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gtk3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:intltool \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:pcre \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       system -W ${worksrcpath} ./autogen.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       copy ${filespath}/strverscmp.c ${worksrcpath}/src/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-configure.ac.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-src-Makefile.am.diff
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fsearch/files/patch-configure.ac.diff b/sysutils/fsearch/files/patch-configure.ac.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..956e3cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fsearch/files/patch-configure.ac.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.ac.orig      2017-04-27 09:23:06.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure.ac   2017-08-31 18:52:55.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,11 +30,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFLAGS+=" -Os"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-AX_CHECK_COMPILE_FLAG([-std=c11], [CFLAGS+=" -std=c11" ],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                      [echo "C compiler cannot compile C11 code. Abort"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                       exit -1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                      ])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_FUNC_ALLOCA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PKG_PROG_PKG_CONFIG
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fsearch/files/patch-src-Makefile.am.diff b/sysutils/fsearch/files/patch-src-Makefile.am.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2d60098
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fsearch/files/patch-src-Makefile.am.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/Makefile.am.orig   2017-04-27 09:23:06.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/Makefile.am        2017-08-31 19:35:29.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -57,6 +57,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             btree.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             listview.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             query.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            strverscmp.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             utils.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             utf8.c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             $(fsearch_NOINST_H_FILES)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fsearch/files/strverscmp.c b/sysutils/fsearch/files/strverscmp.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2d1b406
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fsearch/files/strverscmp.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,158 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Compare strings while treating digits characters numerically.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Copyright (C) 1997, 2002, 2005 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   This file is part of the libiberty library.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Contributed by Jean-Fran�ois Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Libiberty is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   modify it under the terms of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   License as published by the Free Software Foundation; either
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   version 2.1 of the License, or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Libiberty is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Lesser General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   You should have received a copy of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   License along with the GNU C Library; if not, write to the Free
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   02110-1301 USA.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* #include "libiberty.h" */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* #include "safe-ctype.h" */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <ctype.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@deftypefun int strverscmp (const char *@var{s1}, const char *@var{s2})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The @code{strverscmp} function compares the string @var{s1} against
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@var{s2}, considering them as holding indices/version numbers.  Return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+value follows the same conventions as found in the @code{strverscmp}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+function.  In fact, if @var{s1} and @var{s2} contain no digits,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@code{strverscmp} behaves like @code{strcmp}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Basically, we compare strings normally (character by character), until
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+we find a digit in each string - then we enter a special comparison
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+mode, where each sequence of digits is taken as a whole.  If we reach the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+end of these two parts without noticing a difference, we return to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+standard comparison mode.  There are two types of numeric parts:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"integral" and "fractional" (those  begin with a '0'). The types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+of the numeric parts affect the way we sort them:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@itemize @bullet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+integral/integral: we compare values as you would expect.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fractional/integral: the fractional part is less than the integral one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Again, no surprise.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fractional/fractional: the things become a bit more complex.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the common prefix contains only leading zeroes, the longest part is less
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+than the other one; else the comparison behaves normally.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@end itemize
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@smallexample
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp ("no digit", "no digit")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @result{} 0    // @r{same behavior as strcmp.}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp ("item#99", "item#100")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @result{} <0   // @r{same prefix, but 99 < 100.}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp ("alpha1", "alpha001")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @result{} >0   // @r{fractional part inferior to integral one.}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp ("part1_f012", "part1_f01")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @result{} >0   // @r{two fractional parts.}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp ("foo.009", "foo.0")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @result{} <0   // @r{idem, but with leading zeroes only.}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@end smallexample
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This function is especially useful when dealing with filename sorting,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+because filenames frequently hold indices/version numbers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@end deftypefun
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           fractional parts, S_Z: idem but with leading Zeroes only */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  S_N    0x0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  S_I    0x4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  S_F    0x8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  S_Z    0xC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  CMP    2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define  LEN    3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Compare S1 and S2 as strings holding indices/version numbers,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   returning less than, equal to or greater than zero if S1 is less than,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   equal to or greater than S2 (for more info, see the Glibc texinfo doc).  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strverscmp (const char *s1, const char *s2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  const unsigned char *p1 = (const unsigned char *) s1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  const unsigned char *p2 = (const unsigned char *) s2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  unsigned char c1, c2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  int state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  int diff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /* Symbol(s)    0       [1-9]   others  (padding)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Transition   (10) 0  (01) d  (00) x  (11) -   */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  static const unsigned int next_state[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* state    x    d    0    - */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_N */  S_N, S_I, S_Z, S_N,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_I */  S_N, S_I, S_I, S_I,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_F */  S_N, S_F, S_F, S_F,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_Z */  S_N, S_F, S_Z, S_Z
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  static const int result_type[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* state   x/x  x/d  x/0  x/-  d/x  d/d  d/0  d/-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 0/x  0/d  0/0  0/-  -/x  -/d  -/0  -/- */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_N */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_I */  CMP, -1,  -1,  CMP, +1,  LEN, LEN, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 +1,  LEN, LEN, CMP, CMP, CMP, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_F */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      /* S_Z */  CMP, +1,  +1,  CMP, -1,  CMP, CMP, CMP,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 -1,  CMP, CMP, CMP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (p1 == p2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  c1 = *p1++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  c2 = *p2++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /* Hint: '0' is a digit too.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  while ((diff = c1 - c2) == 0 && c1 != '\0')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      state = next_state[state];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      c1 = *p1++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      c2 = *p2++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      state |= (c1 == '0') + (isdigit (c1) != 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  switch (state)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    case CMP:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      return diff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    case LEN:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      while (isdigit (*p1++))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!isdigit (*p2++))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      return isdigit (*p2) ? -1 : diff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      return state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>

</pre>