Просмотр исходного кода

Introduce isspace_ascii() for use by parsers

This is like isspace(), but ignores the current locale.
Julian Andres Klode лет назад: 10
Родитель
Сommit
98b0634391
2 измененных файлов с 19 добавлено и 0 удалено
  1. 17 0
      apt-pkg/contrib/strutl.cc
  2. 2 0
      apt-pkg/contrib/strutl.h

+ 17 - 0
apt-pkg/contrib/strutl.cc

@@ -1378,6 +1378,23 @@ int tolower_ascii(int const c)
 }
 									/*}}}*/
 
+// isspace_ascii - isspace() function that ignores the locale		/*{{{*/
+// ---------------------------------------------------------------------
+/* This little function is one of the most called methods we have and tries
+   therefore to do the absolut minimum - and is notable faster than
+   standard isspace() and as a bonus avoids problems with different
+   locales - we only operate on ascii chars anyway. */
+int isspace_ascii(int const c)
+{
+   return (c == ' '
+           || c == '\f'
+           || c == '\n'
+           || c == '\r'
+           || c == '\t'
+           || c == '\v');
+}
+									/*}}}*/
+
 // CheckDomainList - See if Host is in a , separate list		/*{{{*/
 // ---------------------------------------------------------------------
 /* The domain list is a comma separate list of domains that are suffix

+ 2 - 0
apt-pkg/contrib/strutl.h

@@ -106,6 +106,8 @@ void strprintf(std::string &out,const char *format,...) APT_PRINTF(2);
 char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_PRINTF(3);
 bool CheckDomainList(const std::string &Host, const std::string &List);
 int tolower_ascii(int const c) APT_CONST APT_HOT;
+int isspace_ascii(int const c) APT_CONST APT_HOT;
+
 std::string StripEpoch(const std::string &VerStr);
 
 #define APT_MKSTRCMP(name,func) \