From ef8d95c4987cc5dd358e718c992c6bb629380702 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 16 Aug 2010 22:03:11 +0000 Subject: [PATCH] Issue #9425: Create Py_UNICODE_strncmp() function The code is based on strncmp() of the libiberty library, function in the public domain. --- Include/unicodeobject.h | 27 +++++++++++++++++++++------ Objects/unicodeobject.c | 17 +++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index cee75cc8a1..7ae6506ed1 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -1613,23 +1613,38 @@ PyAPI_FUNC(int) _PyUnicode_IsAlpha( Py_UNICODE ch /* Unicode character */ ); -PyAPI_FUNC(size_t) Py_UNICODE_strlen(const Py_UNICODE *u); +PyAPI_FUNC(size_t) Py_UNICODE_strlen( + const Py_UNICODE *u + ); PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy( - Py_UNICODE *s1, const Py_UNICODE *s2); + Py_UNICODE *s1, + const Py_UNICODE *s2); PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy( - Py_UNICODE *s1, const Py_UNICODE *s2, size_t n); + Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n); PyAPI_FUNC(int) Py_UNICODE_strcmp( - const Py_UNICODE *s1, const Py_UNICODE *s2); + const Py_UNICODE *s1, + const Py_UNICODE *s2 + ); + +PyAPI_FUNC(int) Py_UNICODE_strncmp( + const Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n + ); PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr( - const Py_UNICODE *s, Py_UNICODE c + const Py_UNICODE *s, + Py_UNICODE c ); PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr( - const Py_UNICODE *s, Py_UNICODE c + const Py_UNICODE *s, + Py_UNICODE c ); #ifdef __cplusplus diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 676c693040..9fd342bf0d 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -9986,6 +9986,23 @@ Py_UNICODE_strcmp(const Py_UNICODE *s1, const Py_UNICODE *s2) return 0; } +int +Py_UNICODE_strncmp(const Py_UNICODE *s1, const Py_UNICODE *s2, size_t n) +{ + register Py_UNICODE u1, u2; + for (; n != 0; n--) { + u1 = *s1; + u2 = *s2; + if (u1 != u2) + return (u1 < u2) ? -1 : +1; + if (u1 == '\0') + return 0; + s1++; + s2++; + } + return 0; +} + Py_UNICODE* Py_UNICODE_strchr(const Py_UNICODE *s, Py_UNICODE c) { -- 2.50.1