flag |= s->s_segment;
}
putc(flag, ofp);
- for (i = 0; i < 16; i++) {
- putc(s->s_id[i], ofp);
- if (!s->s_id[i])
- break;
- }
- if (!(flag & S_UNKNOWN)) {
- putc(s->s_value, ofp);
- putc(s->s_value >> 8, ofp);
- }
+ fwrite(cs->s_id, 16, 1, ofp);
+ putc(s->s_value, ofp);
+ putc(s->s_value >> 8, ofp);
}
static void enumerate(SYM *s, FILE *dummy)
return 0;
type = (uint8_t)c;
base++;
- for (i = 0; i < 16; i++) {
- c = fgetc(fp);
- base++;
- symname[i] = (char)c;
- if (c == 0)
- break;
- }
+ fread(symname, 16, 1, fp);
+ base += 16;
symname[16] = 0;
/* Address if defined */
+ addr = fgetc(fp);
+ addr |= fgetc(fp) << 8;
+ base += 2;
if (!(type & S_UNKNOWN)) {
- addr = fgetc(fp);
- addr |= fgetc(fp) << 8;
- base += 2;
c = segname[type & S_SEGMENT];
/* Showing undefined only */
if (show_undef)
/* symbols and debug are in the format
uint8_t flags
- char name[1..16] (0 terminated if < 16)
- uint16_t data if not unknown */
+ char name[16] (0 terminated if < 16)
+ uint16_t data */
#define S_UNKNOWN 0x80
#define S_PUBLIC 0x40 /* unknown is public .. */
#define S_SEGMENT 0x0F /* 00 means absolute */
+#define S_SIZE 19
+
+