示例#1
0
文件: iolib.c 项目: andyross/nasal
static int ioread(naContext c, void* f, char* buf, unsigned int len)
{
    int n;
    naModUnlock(); n = fread(buf, 1, len, f); naModLock();
    if(n < len && !feof((FILE*)f)) naRuntimeError(c, strerror(errno));
    return n;
}
示例#2
0
文件: iolib.c 项目: andyross/nasal
static int iowrite(naContext c, void* f, char* buf, unsigned int len)
{
    int n;
    naModUnlock(); n = fwrite(buf, 1, len, f); naModLock();
    if(ferror((FILE*)f)) naRuntimeError(c, strerror(errno));
    return n;
}
示例#3
0
static naRef f_semdown(naContext c, naRef me, int argc, naRef* args)
{
    if(argc > 0 && naGhost_type(args[0]) == &SemType) {
        naModUnlock();
        naSemDown(naGhost_ptr(args[0]));
        naModLock();
    }
    return naNil();
}
示例#4
0
文件: iolib.c 项目: andyross/nasal
// frees buffer before tossing an error
static int getcguard(naContext ctx, FILE* f, void* buf)
{
    int c;
    naModUnlock(); c = fgetc(f); naModLock();
    if(ferror(f)) {
        naFree(buf);
        naRuntimeError(ctx, strerror(errno));
    }
    return c;
}