• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

src/generic/vstring.c

00001 
00002 #include "apbscfg.h"
00003 #include "apbs/vstring.h"
00004 
00005 /* ///////////////////////////////////////////////////////////////////////////
00006 // Routine:  Vstring_strcasecmp
00007 //
00008 //           Copyright (c) 1988-1993 The Regents of the University of
00009 //                         California.  
00010 //           Copyright (c) 1995-1996 Sun Microsystems, Inc.
00012 VPUBLIC int Vstring_strcasecmp(const char *s1, const char *s2) {
00013 
00014 #if !defined(HAVE_STRCASECMP)
00015     unsigned char charmap[] = {
00016       0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
00017       0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
00018       0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
00019       0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
00020       0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
00021       0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
00022       0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
00023       0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
00024       0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
00025       0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
00026       0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
00027       0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
00028       0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
00029       0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
00030       0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
00031       0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
00032       0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
00033       0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
00034       0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
00035       0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
00036       0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
00037       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
00038       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
00039       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
00040       0xc0, 0xe1, 0xe2, 0xe3, 0xe4, 0xc5, 0xe6, 0xe7,
00041       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
00042       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
00043       0xf8, 0xf9, 0xfa, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
00044       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
00045       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
00046       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
00047       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
00048     };
00049 
00050     unsigned char u1, u2;
00051 
00052     for ( ; ; s1++, s2++) {
00053  u1 = (unsigned char) *s1;
00054  u2 = (unsigned char) *s2;
00055  if ((u1 == '\0') || (charmap[u1] != charmap[u2])) {
00056      break;
00057  }
00058     }
00059     return charmap[u1] - charmap[u2];
00060 
00061 #else
00062 
00063     return strcasecmp(s1, s2);
00064 
00065 #endif
00066 
00067 }
00068 
00069 /* ///////////////////////////////////////////////////////////////////////////
00070 // Routine:  Vstring_isdigit
00071 //
00072 //           Improves upon sscanf to see if a token is an int or not
00073 //           
00074 //           Returns isdigit: 1 if a digit, 0 otherwise
00076 VPUBLIC int Vstring_isdigit(const char *tok) {
00077     int i, isdigit, ti;
00078     char checkchar[1];
00079  char name[VMAX_BUFSIZE];
00080     strcpy(name,tok);
00081     isdigit = 1;
00082     for(i=0; ; i++){
00083       checkchar[0] =  name[i];
00084       if (name[i] == '\0'){ 
00085         break;
00086       } 
00087       if (sscanf(checkchar, "%d", &ti) != 1){
00088         isdigit = 0;
00089         break;
00090       }
00091     }
00092     return isdigit;
00093 }

Generated on Wed Oct 20 2010 12:01:33 for APBS by  doxygen 1.7.2