@@ -121,7 +121,7 @@ bin_parse(const char *filename, parsed_file_t *out) {
121121 return -1 ;
122122 }
123123
124- ssize_t n = read (fd , out -> data , out -> size );
124+ ssize_t n = read (fd , out -> data , ( unsigned int ) out -> size );
125125 close (fd );
126126
127127 if (n < 0 || (size_t )n != out -> size ) {
@@ -186,31 +186,31 @@ ihex_parse(const char *filename, parsed_file_t *out) {
186186 goto fail ;
187187 }
188188
189- uint16_t addr = (addr_hi << 8 ) | addr_lo ;
189+ uint16_t addr = (uint16_t )(( addr_hi << 8 ) | addr_lo ) ;
190190 size_t expected_len = 8 + byte_count * 2 + 2 ;
191191 if (len < expected_len ) {
192192 warnx ("%s:%d: line too short for byte count" , filename , line_num );
193193 goto fail ;
194194 }
195195
196- uint8_t checksum = byte_count + addr_hi + addr_lo + rec_type ;
196+ uint8_t checksum = ( uint8_t )( byte_count + addr_hi + addr_lo + rec_type ) ;
197197 uint8_t data [256 ];
198198 for (int i = 0 ; i < byte_count ; i ++ ) {
199199 int b = hex_byte (p + 8 + i * 2 );
200200 if (b < 0 ) {
201201 warnx ("%s:%d: invalid hex digits in data" , filename , line_num );
202202 goto fail ;
203203 }
204- data [i ] = b ;
205- checksum += b ;
204+ data [i ] = ( uint8_t ) b ;
205+ checksum = ( uint8_t )( checksum + b ) ;
206206 }
207207
208208 int file_checksum = hex_byte (p + 8 + byte_count * 2 );
209209 if (file_checksum < 0 ) {
210210 warnx ("%s:%d: invalid checksum hex" , filename , line_num );
211211 goto fail ;
212212 }
213- checksum += file_checksum ;
213+ checksum = ( uint8_t )( checksum + file_checksum ) ;
214214 if (checksum != 0 ) {
215215 warnx ("%s:%d: checksum mismatch" , filename , line_num );
216216 goto fail ;
@@ -377,16 +377,16 @@ srec_parse(const char *filename, parsed_file_t *out) {
377377 goto fail ;
378378 }
379379
380- uint8_t checksum = byte_count ;
380+ uint8_t checksum = ( uint8_t ) byte_count ;
381381 uint32_t addr = 0 ;
382382 for (int i = 0 ; i < addr_bytes ; i ++ ) {
383383 int b = hex_byte (p + 2 + i * 2 );
384384 if (b < 0 ) {
385385 warnx ("%s:%d: invalid address hex" , filename , line_num );
386386 goto fail ;
387387 }
388- addr = (addr << 8 ) | b ;
389- checksum += b ;
388+ addr = (addr << 8 ) | ( uint32_t ) b ;
389+ checksum = ( uint8_t )( checksum + b ) ;
390390 }
391391
392392 int data_bytes = byte_count - addr_bytes - 1 ;
@@ -397,16 +397,16 @@ srec_parse(const char *filename, parsed_file_t *out) {
397397 warnx ("%s:%d: invalid data hex" , filename , line_num );
398398 goto fail ;
399399 }
400- data [i ] = b ;
401- checksum += b ;
400+ data [i ] = ( uint8_t ) b ;
401+ checksum = ( uint8_t )( checksum + b ) ;
402402 }
403403
404404 int file_checksum = hex_byte (p + 2 + addr_bytes * 2 + data_bytes * 2 );
405405 if (file_checksum < 0 ) {
406406 warnx ("%s:%d: invalid checksum hex" , filename , line_num );
407407 goto fail ;
408408 }
409- checksum += file_checksum ;
409+ checksum = ( uint8_t )( checksum + file_checksum ) ;
410410 if (checksum != 0xFF ) {
411411 warnx ("%s:%d: checksum mismatch" , filename , line_num );
412412 goto fail ;
@@ -517,7 +517,7 @@ ihex_write(const char *filename, const uint8_t *data, size_t size, uint32_t addr
517517 /* Emit extended linear address record if needed (type 04) */
518518 uint32_t ext_addr = line_addr >> 16 ;
519519 if (ext_addr != current_ext_addr ) {
520- uint8_t sum = 0x02 + 0x00 + 0x00 + 0x04 + (ext_addr >> 8 ) + (ext_addr & 0xFF );
520+ uint8_t sum = ( uint8_t )( 0x02 + 0x00 + 0x00 + 0x04 + (ext_addr >> 8 ) + (ext_addr & 0xFF ) );
521521 fprintf (fp , ":02000004%04X%02X\n" , ext_addr , (uint8_t )(~sum + 1 ));
522522 current_ext_addr = ext_addr ;
523523 }
0 commit comments