@ -137,6 +137,7 @@ main (int argc, char **argv)
char * ptr ;
int retval = 0 ;
struct image_type_params * tparams = NULL ;
int pad_len = 0 ;
/* Init Freescale PBL Boot image generation/list support */
init_pbl_image_type ( ) ;
@ -391,7 +392,7 @@ NXTARG: ;
* allocate memory for the header itself .
*/
if ( tparams - > vrec_header )
tparams - > vrec_header ( & params , tparams ) ;
pad_len = tparams - > vrec_header ( & params , tparams ) ;
else
memset ( tparams - > hdr , 0 , tparams - > header_size ) ;
@ -463,7 +464,7 @@ NXTARG: ;
/* PBL has special Image format, implements its' own */
pbl_load_uboot ( ifd , & params ) ;
} else {
copy_file ( ifd , params . datafile , 0 ) ;
copy_file ( ifd , params . datafile , pad_len ) ;
}
}
@ -537,10 +538,19 @@ copy_file (int ifd, const char *datafile, int pad)
unsigned char * ptr ;
int tail ;
int zero = 0 ;
uint8_t zeros [ 4096 ] ;
int offset = 0 ;
int size ;
struct image_type_params * tparams = mkimage_get_type ( params . type ) ;
if ( pad > = sizeof ( zeros ) ) {
fprintf ( stderr , " %s: Can't pad to %d \n " ,
params . cmdname , pad ) ;
exit ( EXIT_FAILURE ) ;
}
memset ( zeros , 0 , sizeof ( zeros ) ) ;
if ( params . vflag ) {
fprintf ( stderr , " Adding Image %s \n " , datafile ) ;
}
@ -598,7 +608,8 @@ copy_file (int ifd, const char *datafile, int pad)
exit ( EXIT_FAILURE ) ;
}
if ( pad & & ( ( tail = size % 4 ) ! = 0 ) ) {
tail = size % 4 ;
if ( ( pad = = 1 ) & & ( tail ! = 0 ) ) {
if ( write ( ifd , ( char * ) & zero , 4 - tail ) ! = 4 - tail ) {
fprintf ( stderr , " %s: Write error on %s: %s \n " ,
@ -606,6 +617,13 @@ copy_file (int ifd, const char *datafile, int pad)
strerror ( errno ) ) ;
exit ( EXIT_FAILURE ) ;
}
} else if ( pad > 1 ) {
if ( write ( ifd , ( char * ) & zeros , pad ) ! = pad ) {
fprintf ( stderr , " %s: Write error on %s: %s \n " ,
params . cmdname , params . imagefile ,
strerror ( errno ) ) ;
exit ( EXIT_FAILURE ) ;
}
}
( void ) munmap ( ( void * ) ptr , sbuf . st_size ) ;