Browse Source

[settings] Remove default_type parameter from parse_setting_name()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 11 years ago
parent
commit
77c70ac0cd
1 changed files with 20 additions and 9 deletions
  1. 20
    9
      src/core/settings.c

+ 20
- 9
src/core/settings.c View File

1063
 		goto err_exists;
1063
 		goto err_exists;
1064
 	}
1064
 	}
1065
 
1065
 
1066
+	/* Sanity check */
1067
+	assert ( setting->type != NULL );
1068
+	assert ( setting->type->format != NULL );
1069
+
1066
 	/* Format setting */
1070
 	/* Format setting */
1067
 	if ( ( ret = setting->type->format ( raw, raw_len, buf, len ) ) < 0 )
1071
 	if ( ( ret = setting->type->format ( raw, raw_len, buf, len ) ) < 0 )
1068
 		goto err_format;
1072
 		goto err_format;
1093
 	if ( ( ! value ) || ( ! value[0] ) )
1097
 	if ( ( ! value ) || ( ! value[0] ) )
1094
 		return delete_setting ( settings, setting );
1098
 		return delete_setting ( settings, setting );
1095
 
1099
 
1100
+	/* Sanity check */
1101
+	assert ( setting->type != NULL );
1102
+	assert ( setting->type->parse != NULL );
1103
+
1096
 	/* Get raw value length */
1104
 	/* Get raw value length */
1097
 	raw_len = setting->type->parse ( value, NULL, 0 );
1105
 	raw_len = setting->type->parse ( value, NULL, 0 );
1098
 	if ( raw_len < 0 ) {
1106
 	if ( raw_len < 0 ) {
1188
  * @v get_child		Function to find or create child settings block
1196
  * @v get_child		Function to find or create child settings block
1189
  * @v settings		Settings block to fill in
1197
  * @v settings		Settings block to fill in
1190
  * @v setting		Setting to fill in
1198
  * @v setting		Setting to fill in
1191
- * @v default_type	Default type to use, if none specified
1192
  * @ret rc		Return status code
1199
  * @ret rc		Return status code
1193
  *
1200
  *
1194
  * Interprets a name of the form
1201
  * Interprets a name of the form
1203
 		     struct settings * ( * get_child )
1210
 		     struct settings * ( * get_child )
1204
 			     ( struct settings *settings,
1211
 			     ( struct settings *settings,
1205
 			       const char *name ),
1212
 			       const char *name ),
1206
-		     struct settings **settings, struct setting *setting,
1207
-		     struct setting_type *default_type ) {
1213
+		     struct settings **settings, struct setting *setting ) {
1208
 	char *settings_name;
1214
 	char *settings_name;
1209
 	char *setting_name;
1215
 	char *setting_name;
1210
 	char *type_name;
1216
 	char *type_name;
1215
 	*settings = &settings_root;
1221
 	*settings = &settings_root;
1216
 	memset ( setting, 0, sizeof ( *setting ) );
1222
 	memset ( setting, 0, sizeof ( *setting ) );
1217
 	setting->name = "";
1223
 	setting->name = "";
1218
-	setting->type = default_type;
1219
 
1224
 
1220
 	/* Split name into "[settings_name/]setting_name[:type_name]" */
1225
 	/* Split name into "[settings_name/]setting_name[:type_name]" */
1221
 	if ( ( setting_name = strchr ( name, '/' ) ) != NULL ) {
1226
 	if ( ( setting_name = strchr ( name, '/' ) ) != NULL ) {
1313
 
1318
 
1314
 	/* Parse setting name */
1319
 	/* Parse setting name */
1315
 	if ( ( rc = parse_setting_name ( tmp_name, autovivify_child_settings,
1320
 	if ( ( rc = parse_setting_name ( tmp_name, autovivify_child_settings,
1316
-					 &settings, &setting,
1317
-					 default_type ) ) != 0 )
1321
+					 &settings, &setting ) ) != 0 )
1318
 		return rc;
1322
 		return rc;
1319
 
1323
 
1324
+	/* Apply default type if necessary */
1325
+	if ( ! setting.type )
1326
+		setting.type = default_type;
1327
+
1320
 	/* Store setting */
1328
 	/* Store setting */
1321
 	if ( ( rc = store_setting ( settings, &setting, data, len ) ) != 0 )
1329
 	if ( ( rc = store_setting ( settings, &setting, data, len ) ) != 0 )
1322
 		return rc;
1330
 		return rc;
1344
 
1352
 
1345
 	/* Parse setting name */
1353
 	/* Parse setting name */
1346
 	if ( ( rc = parse_setting_name ( tmp_name, autovivify_child_settings,
1354
 	if ( ( rc = parse_setting_name ( tmp_name, autovivify_child_settings,
1347
-					 &settings, &setting,
1348
-					 default_type ) ) != 0 )
1355
+					 &settings, &setting ) ) != 0 )
1349
 		return rc;
1356
 		return rc;
1350
 
1357
 
1358
+	/* Apply default type if necessary */
1359
+	if ( ! setting.type )
1360
+		setting.type = default_type;
1361
+
1351
 	/* Store setting */
1362
 	/* Store setting */
1352
 	if ( ( rc = storef_setting ( settings, &setting, value ) ) != 0 )
1363
 	if ( ( rc = storef_setting ( settings, &setting, value ) ) != 0 )
1353
 		return rc;
1364
 		return rc;
1380
 
1391
 
1381
 	/* Parse setting name */
1392
 	/* Parse setting name */
1382
 	if ( ( rc = parse_setting_name ( tmp_name, find_child_settings,
1393
 	if ( ( rc = parse_setting_name ( tmp_name, find_child_settings,
1383
-					 &settings, &setting, NULL ) ) != 0 )
1394
+					 &settings, &setting ) ) != 0 )
1384
 		return rc;
1395
 		return rc;
1385
 
1396
 
1386
 	/* Fetch setting */
1397
 	/* Fetch setting */

Loading…
Cancel
Save