<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>