- i = 0;
- while((nread = read(strfile->_file, rbuf, sizeof(rbuf))) > 0){
- if (i == 0){
- ((int *)rbuf)[0] = strfilepos;
+ bwrite(&totalstr, sizeof(totalstr), symfile);
+ symsout = 0;
+ DECLITERATE(allocwalk, sp, ub) {
+ if (sp->s_tag >= IGNOREBOUND)
+ continue;
+ if (ISLABEL(sp))
+ continue;
+ symsout++;
+ if (STRLEN(sp) > 0){
+ if (STRPLACE(sp) & STR_CORE){
+ bwrite(FETCHNAME(sp), STRLEN(sp), symfile);
+ } else if (STRPLACE(sp) & STR_FILE){
+ char rbuf[2048];
+ int left, nread;
+ fseek(strfile, STROFF(sp), 0);
+ for (left = STRLEN(sp); left > 0; left -= nread){
+ nread = fread(rbuf, sizeof(char),
+ min(sizeof(rbuf), left), strfile);
+ if (nread == 0)
+ break;
+ bwrite(rbuf, nread, symfile);
+ }
+ }