Fix in fru edit

It is now possible to edit field 0 of sections
This commit is contained in:
Marie-Josee Blais 2011-03-08 19:38:03 +00:00
parent 061272f595
commit 7fc4ce6eae

View File

@ -111,6 +111,7 @@ char * get_fru_area_str(uint8_t * data, uint32_t * offset)
/* bits 6:7 contain format */ /* bits 6:7 contain format */
typecode = ((data[off] & 0xC0) >> 6); typecode = ((data[off] & 0xC0) >> 6);
// printf("Typecode:%i\n", typecode);
/* bits 0:5 contain length */ /* bits 0:5 contain length */
len = data[off++]; len = data[off++];
len &= 0x3f; len &= 0x3f;
@ -4352,28 +4353,16 @@ f_type, uint8_t f_index, char *f_string)
f_index= f_index - 0x30; f_index= f_index - 0x30;
/*Seek to field index */ /*Seek to field index */
for( i=0; i<f_index; i++ ) for( i=0; i<=f_index; i++ )
{ {
fru_area = (uint8_t *) get_fru_area_str(fru_data, &fru_field_offset); fru_field_offset_tmp = fru_field_offset;
fru_area = (uint8_t *) get_fru_area_str(fru_data, &fru_field_offset);
} }
if( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 ) { if( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 ) {
printf("Field not found!\n"); printf("Field not found !\n");
return -1; return -1;
} }
/* Get original field string */
fru_field_offset_tmp = fru_field_offset;
fru_area = (uint8_t *) get_fru_area_str(fru_data, &fru_field_offset);
if ( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 ) {
printf("Field not found!\n");
return -1;
}
if ( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 ) {
printf("Field not found!\n");
return -1;
}
if ( strlen((const char *)fru_area) == strlen((const char *)f_string) ) if ( strlen((const char *)fru_area) == strlen((const char *)f_string) )
{ {
@ -4534,8 +4523,9 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
/************************* /*************************
3) Seek to field index */ 3) Seek to field index */
for( i=0; i<f_index; i++ ) for( i=0; i<=f_index; i++ )
{ {
fru_field_offset_tmp = fru_field_offset;
fru_area = (uint8_t *) get_fru_area_str(fru_data_old, &fru_field_offset); fru_area = (uint8_t *) get_fru_area_str(fru_data_old, &fru_field_offset);
} }
@ -4544,20 +4534,6 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
return -1; return -1;
} }
/* Get original field string */
fru_field_offset_tmp = fru_field_offset;
fru_area = (uint8_t *) get_fru_area_str(fru_data_old, &fru_field_offset);
if ( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 )
{
printf("Field not found! (2)\n");
return -1;
}
if ( (fru_area == NULL ) || strlen((const char *)fru_area) == 0 )
{
printf("Field not found! (3)\n");
return -1;
}
#ifdef DBG_RESIZE_FRU #ifdef DBG_RESIZE_FRU
printf("Section Length: %lu\n", fru_section_len); printf("Section Length: %lu\n", fru_section_len);