Changeset 542


Ignore:
Timestamp:
10/25/08 07:14:11 (5 years ago)
Author:
reyalp
Message:

fix http://chdk.kernreaktor.org/mantis/view.php?id=74 by using Fut API for require

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/lua/lauxlib.c

    r515 r542  
    541541#else 
    542542typedef struct LoadF { 
    543   int f; 
     543  FILE *f; 
    544544  char buff[LUAL_BUFFERSIZE]; 
    545545} LoadF; 
     
    548548  LoadF *lf = (LoadF *)ud; 
    549549  (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; 
    555553} 
    556554#endif 
     
    612610LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) { 
    613611  LoadF lf; 
    614   int status, readstatus; 
     612  int status, readerror; 
    615613  char c; 
    616614  int fnameindex = lua_gettop(L) + 1;  /* index of filename on the stack */ 
    617615  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); 
    620618  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) { 
    624624    lua_settop(L, fnameindex);  /* ignore results from `lua_load' */ 
    625625    return errfile(L, "read", fnameindex); 
Note: See TracChangeset for help on using the changeset viewer.