bool lextable::reserved(const char *str) { // in order to allow at least and at most one entry // of reserved words in the main lex table, // the lower case version is considered not reserved here, // so that the same enter routine can be used in the // main lex table for initializing keywords. int h; char *lowerstr; lowerstr = my_strtolower(str); h = hash(lowerstr); while (1) { int i = (h & RESERVETABLESIZE - 1); lexid *entry = rtable[i]; if (entry == NULL) { return (FALSE); } else if (strcmp(entry->getname(), lowerstr) == 0) { return (TRUE); } else { /* try again */ h = rehash(h); } } }
lexid *lextable::enter_reserved(char *str, int lextype ) { int h; char *lowerstr; lowerstr = my_strtolower(str); h = hash(lowerstr); while (1) { int i = (h & RESERVETABLESIZE-1); lexid *entry = rtable[i]; if (entry == NULL) { /* enter it and return */ rtable[i] = entry = new lexid(lowerstr, lextype); return(entry); } else if ( strcmp(entry->getname(), lowerstr) == 0) { return(entry); } else { /* try again */ h = rehash(h); } } }
char *create_Custom_XML_Head (struct field_list fl) { char *XML_Head = NULL; int i = 0, j = 0; XML_Head = (char *) create_Blank_XML_Head_Open (); if (fl.fieldCount >= 0) { for (i = 0; i < fl.fieldCount; i++) { int static_attr = 0; for ( j = 0; j < blank_attr_count; j++) { char *buff1 = NULL; char *buff2 = NULL; buff1 = my_strtolower( blank_attr_list[j]); buff2 = my_strtolower(fl.fields[i]); if (strncmp (buff1, buff2, MY_MAX(buff1,buff2) ) == 0 ) static_attr = 1; free (buff1); free (buff2); } for ( j = 0; j < blank_field_count; j++) { char *buff1 = NULL; char *buff2 = NULL; buff1 = my_strtolower(blank_field_list[j]); buff2 = my_strtolower(fl.fields[i]); if (strncmp (buff1,buff2, MY_MAX(buff1, buff2)) == 0 ) static_attr = 1; } if (static_attr == 0) { XML_Head = check_Buff_Size (XML_Head, &iXML_Head_Size, 100); sprintf(XML_Head + strlen(XML_Head), "<sphinx:attr name=\"%s\" type=\"%s\" />\n", fl.fields[i],fl.types[i]); } } } //close head (schema) XML_Head = check_Buff_Size (XML_Head, &iXML_Head_Size, 21); sprintf (XML_Head + strlen(XML_Head), "</sphinx:schema>\n\n"); return XML_Head; }
int csv_set_run( csv_parse_t *parse ) { char *key = parse->expr->var.sv, *val = parse->expr->right->var.sv; my_strtolower( key ); #ifdef CSV_DEBUG _debug( "SET %s = %s\n", key, val ); #endif parse->csv->affected_rows = 0; switch( *key ) { case 'c': if( my_strncmp( key, "character_set_", 14 ) == 0 ) { enum n_charset cs = get_charset_id( val ); if( cs == CS_UNKNOWN ) { csv_error_msg( parse, CSV_ERR_UNKNOWNCHARSET, "Unknown character set %s", val ); return CSV_ERROR; } key += 14; if( strcmp( key, "table" ) == 0 ) { parse->csv->table_charset = cs; return CSV_OK; } else if( strcmp( key, "client" ) == 0 ) { parse->csv->client_charset = cs; return CSV_OK; } key -= 14; } else if( strcmp( key, "column_name_header" ) == 0 ) { if( *val == '0' || my_stricmp( val, "FALSE" ) == 0 || my_stricmp( val, "NO" ) == 0 ) { parse->csv->flags &= (~CSV_COLNAMEHEADER); } else { parse->csv->flags |= CSV_COLNAMEHEADER; } return CSV_OK; } break; case 'd': if( strcmp( key, "data_source" ) == 0 ) { return csv_set_path( parse->csv, val, 0 ); } if( strcmp( key, "decimal_symbol" ) == 0 ) { parse->csv->decimal_symbol = *val; return CSV_OK; } if( strcmp( key, "delimiter" ) == 0 ) { parse->csv->delimiter = *val; return CSV_OK; } break; case 'm': if( strcmp( key, "max_scan_rows" ) == 0 ) { parse->csv->max_scan_rows = atoi( val ); if( parse->csv->max_scan_rows <= 0 ) parse->csv->max_scan_rows = 25; return CSV_OK; } break; case 'q': if( strcmp( key, "quote_char" ) == 0 ) { parse->csv->quote = *val; return CSV_OK; } break; case 'u': if( strcmp( key, "use_schema" ) == 0 ) { if( *val == '0' || my_stricmp( val, "FALSE" ) == 0 || my_stricmp( val, "NO" ) == 0 ) { parse->csv->flags &= (~CSV_USESCHEMA); } else { parse->csv->flags |= CSV_USESCHEMA; } return CSV_OK; } break; } csv_error_msg( parse, CSV_ERR_UNKNOWNVARIABLE, "Unknown variable '%s'", key ); return CSV_ERROR; }
char * check_Field_type (char *test) { char *types[] = { "int", "string", "bigint", "timestamp", "float", "json" }; int types_count = sizeof (types) / sizeof (char *); int i = 0; int type_index = -1; int test_OK = 0; for ( i = 0; i < types_count; i++) { char *buff1 = NULL; char *buff2 = NULL; buff1 = my_strtolower(types[i]); buff2 = my_strtolower(test); if (strncmp (buff1,buff2, MY_MAX(buff1, buff2)) == 0 ) type_index = i; } if (type_index >= 0 && type_index < types_count) return types[type_index]; if (strncmp (my_strtolower(test) ,my_strtolower("str"), MY_MAX(my_strtolower(test), my_strtolower("str"))) == 0 ) return "string"; if (strncmp (my_strtolower(test) ,my_strtolower("integer"), MY_MAX(my_strtolower(test), my_strtolower("integer"))) == 0 ) return "int"; if (strncmp (my_strtolower(test) ,my_strtolower("time"), MY_MAX(my_strtolower(test), my_strtolower("time"))) == 0 ) return "timestamp"; if (strncmp (my_strtolower(test) ,my_strtolower("biginteger"), MY_MAX(my_strtolower(test), my_strtolower("biginteger"))) == 0 ) return "bigint"; return NULL; }