Changeset 542
- Timestamp:
- 10/25/08 07:14:11 (5 years ago)
- File:
-
- 1 edited
-
trunk/lib/lua/lauxlib.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/lua/lauxlib.c
r515 r542 541 541 #else 542 542 typedef struct LoadF { 543 intf;543 FILE *f; 544 544 char buff[LUAL_BUFFERSIZE]; 545 545 } LoadF; … … 548 548 LoadF *lf = (LoadF *)ud; 549 549 (void)L; 550 ssize_t rr = read(lf->f, lf->buff, sizeof(lf->buff)); 551 if (rr <= 0) 552 return NULL; 553 *size = rr; 554 return lf->buff; 550 if (feof(lf->f)) return NULL; 551 *size = fread(lf->buff, 1, sizeof(lf->buff), lf->f); 552 return (*size > 0) ? lf->buff : NULL; 555 553 } 556 554 #endif … … 612 610 LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) { 613 611 LoadF lf; 614 int status, read status;612 int status, readerror; 615 613 char c; 616 614 int fnameindex = lua_gettop(L) + 1; /* index of filename on the stack */ 617 615 lua_pushfstring(L, "@%s", filename); 618 lf.f = open(filename, O_RDONLY, 0777);619 if (lf.f == -1) return errfile(L, "open", fnameindex);616 lf.f = fopen(filename, "rb"); // cams don't translate crlf anyway 617 if (lf.f == NULL) return errfile(L, "fopen", fnameindex); 620 618 status = lua_load(L, getF, &lf, lua_tostring(L, -1)); 621 readstatus = read(lf.f, &c, 1 ); 622 close(lf.f); /* close file (even in case of errors) */ 623 if (readstatus<0) { 619 620 readerror = ((fread(&c, 1, 1, lf.f) < 1) && !feof(lf.f)); 621 622 fclose(lf.f); /* close file (even in case of errors) */ 623 if (readerror) { 624 624 lua_settop(L, fnameindex); /* ignore results from `lua_load' */ 625 625 return errfile(L, "read", fnameindex);
Note: See TracChangeset
for help on using the changeset viewer.