Should we then adjust docs and usage to remove the "greater/less than"
criteria and just say equal strings return 0 and non 0 means that
the strings don't compare/are different?

> On Nov 23, 2015, at 10:19 AM, William A Rowe Jr <wr...@rowe-clan.net> wrote:
> 
> On Mon, Nov 23, 2015 at 2:11 AM, Branko Čibej <br...@apache.org> wrote:
> 
> +1 to apr_casecmpstr[n]() with a big fat warning in the docstring that
> it works for ASCII only.
> 
> Well, it 'works' (does not segfault, does not case fold them) for high bit 
> characters, but sorts them in a potentially meaningless way.  The Current
> implementation has already drifted; the currently accepted flavor looks like;
> 
> 2441  
> /**
> 
> 2442  
>  * Known-fast version of strcasecmp(): ASCII case-folding, POSIX compliant
> 
> 2443  
>  * @param s1 The 1st string to compare
> 
> 2444  
>  * @param s2 The 2nd string to compare
> 
> 2445  
>  * @return integer greater than, equal to, or less than 0, depending on
> 
> 2446  
>  *         if s1 is lexicographically greater than, equal to, or less
> 
> 2447  
>  *         than s2 ignoring case.
> 
> 2448  
>  */
> 
> 2449  
> AP_DECLARE(int) ap_casecmpstr(const char *s1, const char *s2);
> 
> 2450  
> 2451  
> /**
> 
> 2452  
>  * Known-fast version of strncasecmp(): ASCII case-folding, POSIX compliant
> 
> 2453  
>  * @param s1 The 1st string to compare
> 
> 2454  
>  * @param s2 The 2nd string to compare
> 
> 2455  
>  * @param n  Maximum number of characters in the strings to compare
> 
> 2456  
>  * @return integer greater than, equal to, or less than 0, depending on
> 
> 2457  
>  *         if s1 is lexicographically greater than, equal to, or less
> 
> 2458  
>  *         than s2 ignoring case.
> 
> 2459  
>  */
> 
> 2460  
> AP_DECLARE(int) ap_casecmpstrn(const char *s1, const char *s2, apr_size_t n);
> 
> 
> 
> and is implemented here;
> 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util.c?view=markup&pathrev=1715736#l3175
> 
>  
> 

Reply via email to