1#include <stdio.h>2#include <string.h>34#include <scc/mach.h>56#include "libmach.h"78int9mapseg(Map *map, Section *seg, FILE *fp, long fsiz)10{11 int n;12 char *s;13 Mapsec *mseg, *mp;1415 mp = NULL;16 n = map->nseg;17 for (mseg = map->seg; n--; mseg++) {18 s = mseg->sec.name;19 if (mseg->used && s && !strcmp(s, seg->name))20 goto found;21 if (!mp && !mseg->used)22 mp = mseg;23 }2425 if (mp) {26 mseg = mp;27 goto found;28 }2930 if ((map = remap(map, map->nsec+1, map->nseg)) == NULL)31 return -1;32 mseg = &map->sec[map->nsec-1];3334found:35 mseg->sec = *seg;36 mseg->used = 1;37 mseg->fp = fp,38 mseg->fsiz = fsiz;3940 return 0;41}