| 
				
			 | 
			
			
				
				@@ -91,7 +91,7 @@ static struct config_setting * find_config_setting ( const char *name ) { 
			 | 
		
		
	
		
			
			| 
				91
			 | 
			
				91
			 | 
			
			
				
				  * @ret setting		Configuration setting, or NULL 
			 | 
		
		
	
		
			
			| 
				92
			 | 
			
				92
			 | 
			
			
				
				  * 
			 | 
		
		
	
		
			
			| 
				93
			 | 
			
				93
			 | 
			
			
				
				  * Find setting if it exists.  If it doesn't exist, but the name is of 
			 | 
		
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				
				- * the form "<num>.<type>" (e.g. "12.string"), then construct a 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				
				+ * the form "<num>:<type>" (e.g. "12:string"), then construct a 
			 | 
		
		
	
		
			
			| 
				95
			 | 
			
				95
			 | 
			
			
				
				  * setting for that tag and data type, and return it.  The constructed 
			 | 
		
		
	
		
			
			| 
				96
			 | 
			
				96
			 | 
			
			
				
				  * setting will be placed in the temporary buffer. 
			 | 
		
		
	
		
			
			| 
				97
			 | 
			
				97
			 | 
			
			
				
				  */ 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -106,13 +106,19 @@ find_or_build_config_setting ( const char *name, 
			 | 
		
		
	
		
			
			| 
				106
			 | 
			
				106
			 | 
			
			
				
				 	if ( setting ) 
			 | 
		
		
	
		
			
			| 
				107
			 | 
			
				107
			 | 
			
			
				
				 		return setting; 
			 | 
		
		
	
		
			
			| 
				108
			 | 
			
				108
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				109
			 | 
			
				
			 | 
			
			
				
				-	/* If name is of the form "<num>.<type>", try to construct a setting */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				109
			 | 
			
			
				
				+	/* If name is of the form "<num>:<type>", try to construct a setting */ 
			 | 
		
		
	
		
			
			| 
				110
			 | 
			
				110
			 | 
			
			
				
				 	setting = tmp_setting; 
			 | 
		
		
	
		
			
			| 
				111
			 | 
			
				111
			 | 
			
			
				
				 	memset ( setting, 0, sizeof ( *setting ) ); 
			 | 
		
		
	
		
			
			| 
				112
			 | 
			
				112
			 | 
			
			
				
				 	setting->name = name; 
			 | 
		
		
	
		
			
			| 
				113
			 | 
			
				
			 | 
			
			
				
				-	setting->tag = strtoul ( name, &separator, 10 ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				
				+	for ( separator = ( char * ) name ; 1 ; separator++ ) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				
				+		setting->tag = ( ( setting->tag << 8 ) | 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				
				+				 strtoul ( separator, &separator, 0 ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				
				+		if ( *separator != '.' ) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				
				+			break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				
				+	} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				114
			 | 
			
				120
			 | 
			
			
				
				 	switch ( *separator ) { 
			 | 
		
		
	
		
			
			| 
				115
			 | 
			
				
			 | 
			
			
				
				-	case '.' : 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				
				+	case ':' : 
			 | 
		
		
	
		
			
			| 
				116
			 | 
			
				122
			 | 
			
			
				
				 		setting->type = find_config_setting_type ( separator + 1 ); 
			 | 
		
		
	
		
			
			| 
				117
			 | 
			
				123
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				118
			 | 
			
				124
			 | 
			
			
				
				 	case '\0' : 
			 |