str/str_check.c

Go to the documentation of this file.
00001 // Copyright (C) 2006-2007 Benedikt Böhm <hollow@gentoo.org>
00002 //
00003 // This program is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU General Public License
00005 // as published by the Free Software Foundation; either version 2
00006 // of the License, or (at your option) any later version.
00007 //
00008 // This program is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 // GNU General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU General Public License
00014 // along with this program; if not, write to the Free Software
00015 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
00016 
00017 #include "char.h"
00018 #include "str.h"
00019 
00020 int str_check(const char *str, int allowed)
00021 {
00022         int i, n;
00023 
00024         if (!str)
00025                 return 1;
00026 
00027         n = str_len(str);
00028 
00029         for (i = 0; i < n; i++) {
00030                 if (allowed & CC_ALNUM  && char_isalnum (str[i])) continue;
00031                 if (allowed & CC_ALPHA  && char_isalpha (str[i])) continue;
00032                 if (allowed & CC_ASCII  && char_isascii (str[i])) continue;
00033                 if (allowed & CC_BLANK  && char_isblank (str[i])) continue;
00034                 if (allowed & CC_CNTRL  && char_iscntrl (str[i])) continue;
00035                 if (allowed & CC_DIGIT  && char_isdigit (str[i])) continue;
00036                 if (allowed & CC_GRAPH  && char_isgraph (str[i])) continue;
00037                 if (allowed & CC_LOWER  && char_islower (str[i])) continue;
00038                 if (allowed & CC_PRINT  && char_isprint (str[i])) continue;
00039                 if (allowed & CC_PUNCT  && char_ispunct (str[i])) continue;
00040                 if (allowed & CC_SPACE  && char_isspace (str[i])) continue;
00041                 if (allowed & CC_UPPER  && char_isupper (str[i])) continue;
00042                 if (allowed & CC_XDIGIT && char_isxdigit(str[i])) continue;
00043 
00044                 return 0;
00045         }
00046 
00047         return 1;
00048 }

Generated on Tue Jun 19 20:38:26 2007 for lucid by  doxygen 1.5.2