![]() |
|
Message-ID: <20150303104507.GA5094@zx-spectrum>
Date: Tue, 3 Mar 2015 12:45:07 +0200
From: Sergey Dmitrouk <sdmitrouk@...esssoftek.com>
To: <musl@...ts.openwall.com>
Subject: [PATCH] conforming strverscmp() implementation
Hi,
Attached is strverscmp() that should conform to what is described in
manual pages. It's not actually a diff as it would be harder to read
in this case.
The idea is just as described in manuals (once you get what they mean):
1. Find point where strings differ as in current code, but keep track
of locations of last seen numbers.
2. If numbers are both integers (that is they don't start with zero or
it's a single zero) compare as in current implementation.
3. If only one of numbers is integer, the other one is smaller.
4. Otherwise, number with longer leading sequence of zeroes is smaller.
5. If leading zeroes match, compare characters following last zero in
both strings.
I didn't see much comments in musl, so there is none in this file, but
can add some if requested.
Implementation is admittedly more sophisticated than current version for
the reason that all simpler approaches I tried fail for at least one of
possible comparison cases.
Regards,
Sergey
View attachment "strverscmp.c" of type "text/plain" (1031 bytes)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.