str/str_check.c

Go to the documentation of this file.
00001 // Copyright 2006 Benedikt Böhm <hollow@gentoo.org>
00002 //
00003 // This program is free software; you can redistribute it and/or modify
00004 // it under the terms of the GNU General Public License as published by
00005 // the Free Software Foundation; either version 2 of the License, or
00006 // (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
00015 // Free Software Foundation, Inc.,
00016 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017 
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 Sun Dec 3 17:45:53 2006 for lucid by  doxygen 1.5.1