//
-// Include binary file
+// Include binary file (can add addition size & position params, comma separated)
//
int d_incbin(void)
{
// failed) try list of include files passed in the enviroment string or by
// the "-d" option.
TOKEN filename = tok[1];
+
if ((fd = open(string[filename], _OPEN_INC)) < 0)
{
for(i=0; nthpath("RMACPATH", i, buf1)!=0; i++)
allright:
tok += 2;
+
if (*tok != EOL)
{
// Check size parameter (can be omitted)
close(fd);
return ERROR;
}
+
lseek(fd, pos, SEEK_SET);
size -= pos;
}
}
}
else
- return(comma_error);
+ return error(comma_error);
}
else
pos = lseek(fd, 0L, SEEK_SET);
}
else
{
- //size_pos_fallthrough:
+ // size & pos not given, so assume offset of 0 and all of the binary
size = lseek(fd, 0L, SEEK_END);
pos = lseek(fd, 0L, SEEK_SET);
}
+
chcheck(size);
DEBUG { printf("INCBIN: File '%s' is %li bytes.\n", string[filename], size); }