Lines Matching refs:record

54 static void file_record(struct ihex_binrec *record);
134 struct ihex_binrec *record;
145 /* search for the start of record character */
151 /* Minimum record length would be about 10 characters */
153 fprintf(stderr, "Can't find valid record at line %d\n", line);
162 record_size = ALIGN(sizeof(*record) + len, 4);
163 record = malloc(record_size);
164 if (!record) {
168 memset(record, 0, record_size);
169 record->len = len;
172 if (i + 8 + (record->len * 2) > size) {
173 fprintf(stderr, "Not enough data to read complete record at line %d\n",
178 record->addr = hex(data + i, &crc) << 8; i += 2;
179 record->addr |= hex(data + i, &crc); i += 2;
182 for (j = 0; j < record->len; j++, i += 2)
183 record->data[j] = hex(data + i, &crc);
193 /* Done reading the record */
196 /* old style EOF record? */
197 if (!record->len)
200 record->addr += offset;
201 file_record(record);
205 if (record->addr || record->len) {
206 fprintf(stderr, "Bad EOF record (type 01) format at line %d",
214 if (record->addr || record->len != 2) {
215 fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
222 offset = record->data[0] << 8 | record->data[1];
228 if (record->addr || record->len != 4) {
229 fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
234 memcpy(&data32, &record->data[0], sizeof(data32));
236 memcpy(&record->data[0], &data32, sizeof(data32));
239 * starts. If requested output this as a record. */
241 file_record(record);
245 fprintf(stderr, "Unknown record (type %02X)\n", type);
254 static void file_record(struct ihex_binrec *record)
258 while ((*p) && (!sort_records || (*p)->addr < record->addr))
261 record->next = *p;
262 *p = record;
284 /* EOF record is zero length, since we don't bother to represent