if (obj < 0) { /* not an object file */
if (!gflag || strcmp(file, pkgdef) != 0) { /* don't clear allobj if it's pkg defs */
fprint(2, "gopack: non-object file %s\n", file);
+ errors++;
allobj = 0;
}
d = dirfstat(Bfildes(b));
- if (d != nil && d->length == 0)
+ if (d != nil && d->length == 0) {
fprint(2, "gopack: zero length file %s\n", file);
+ errors++;
+ }
free(d);
Bseek(b, offset, 0);
return;
}
if (lastobj >= 0 && obj != lastobj) {
fprint(2, "gopack: inconsistent object file %s\n", file);
+ errors++;
allobj = 0;
Bseek(b, offset, 0);
return;
lastobj = obj;
if (!readar(b, obj, offset+size, 0)) {
fprint(2, "gopack: invalid symbol reference in file %s\n", file);
+ errors++;
allobj = 0;
Bseek(b, offset, 0);
return;
first = 1;
start = end = 0;
for (n=0; n<size; n+=Blinelen(b)) {
- line = Brdline(b, '\n');
- if (line == 0)
+ line = Brdstr(b, '\n', 0);
+ if (line == nil)
goto bad;
if (first && strstrn(line, Blinelen(b), "package ")) {
if (Blinelen(b) > sizeof(pkgbuf)-1)
safe = 0;
start = Boffset(b); // after package statement
first = 0;
+ free(line);
continue;
}
- if(line[0] == '$' && line[1] == '$')
+ if(line[0] == '$' && line[1] == '$') {
+ free(line);
goto foundend;
+ }
end = Boffset(b); // before closing $$
+ free(line);
}
bad:
fprint(2, "gopack: bad package import section in %s\n", file);
+ errors++;
return;
foundend:
if(s->type == 'T' && duplicate(as->name, &ofile)) {
dupfound = 1;
fprint(2, "duplicate text symbol: %s and %s: %s\n", as->file, ofile, as->name);
+ errors++;
free(as->name);
free(as);
return;