diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:30 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:30 +0000 |
commit | c44379cc7d9c7aa113989237ab0f56db12aa5219 (patch) | |
tree | 66a84b20d47f2269d8bdc6e0323f338763424d3a /ACE/ace/OS_NS_strings.cpp | |
parent | 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (diff) | |
download | ATCD-c44379cc7d9c7aa113989237ab0f56db12aa5219.tar.gz |
Repo restructuring
Diffstat (limited to 'ACE/ace/OS_NS_strings.cpp')
-rw-r--r-- | ACE/ace/OS_NS_strings.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/ACE/ace/OS_NS_strings.cpp b/ACE/ace/OS_NS_strings.cpp new file mode 100644 index 00000000000..e7f4c80c462 --- /dev/null +++ b/ACE/ace/OS_NS_strings.cpp @@ -0,0 +1,84 @@ +// $Id$ + +#include "ace/OS_NS_strings.h" + +ACE_RCSID(ace, OS_NS_strings, "$Id$") + +#if !defined (ACE_HAS_INLINED_OSCALLS) +# include "ace/OS_NS_strings.inl" +#endif /* ACE_HAS_INLINED_OSCALLS */ + +#if defined (ACE_LACKS_STRCASECMP) +# include "ace/OS_NS_ctype.h" +#endif /* ACE_LACKS_STRCASECMP */ + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +#if defined (ACE_LACKS_STRCASECMP) +int +ACE_OS::strcasecmp_emulation (const char *s, const char *t) +{ + const char *scan1 = s; + const char *scan2 = t; + + while (*scan1 != 0 + && ACE_OS::ace_tolower (*scan1) + == ACE_OS::ace_tolower (*scan2)) + { + ++scan1; + ++scan2; + } + + // The following case analysis is necessary so that characters which + // look negative collate low against normal characters but high + // against the end-of-string NUL. + + if (*scan1 == '\0' && *scan2 == '\0') + return 0; + else if (*scan1 == '\0') + return -1; + else if (*scan2 == '\0') + return 1; + else + return ACE_OS::ace_tolower (*scan1) - ACE_OS::ace_tolower (*scan2); +} +#endif /* ACE_LACKS_STRCASECMP */ + +#if defined (ACE_LACKS_STRCASECMP) +int +ACE_OS::strncasecmp_emulation (const char *s, + const char *t, + size_t len) +{ + const char *scan1 = s; + const char *scan2 = t; + size_t count = 0; + + while (count++ < len + && *scan1 != 0 + && ACE_OS::ace_tolower (*scan1) + == ACE_OS::ace_tolower (*scan2)) + { + ++scan1; + ++scan2; + } + + if (count > len) + return 0; + + // The following case analysis is necessary so that characters which + // look negative collate low against normal characters but high + // against the end-of-string NUL. + + if (*scan1 == '\0' && *scan2 == '\0') + return 0; + else if (*scan1 == '\0') + return -1; + else if (*scan2 == '\0') + return 1; + else + return ACE_OS::ace_tolower (*scan1) - ACE_OS::ace_tolower (*scan2); +} +#endif /* ACE_LACKS_STRCASECMP */ + +ACE_END_VERSIONED_NAMESPACE_DECL |