瀏覽代碼

[settings] Remove default_type parameter from parse_setting_name()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 11 年之前
父節點
當前提交
77c70ac0cd
共有 1 個檔案被更改,包括 20 行新增9 行删除
  1. 20
    9
      src/core/settings.c

+ 20
- 9
src/core/settings.c 查看文件

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

Loading…
取消
儲存