I/O fixes.

This commit is contained in:
Vítor Santos Costa
2011-04-22 15:29:41 +01:00
parent d793651f89
commit 697f7c650c
4 changed files with 64 additions and 27 deletions

View File

@@ -344,10 +344,12 @@ setCurrentSourceLocation(IOSTREAM *s ARG_LD)
#if __YAP_PROLOG__
void
Yap_setCurrentSourceLocation(IOSTREAM *s)
Yap_setCurrentSourceLocation(IOSTREAM **s)
{
GET_LD
setCurrentSourceLocation(s PASS_LD);
if (!*s)
*s = Suser_input;
setCurrentSourceLocation(*s PASS_LD);
}
#endif

View File

@@ -1096,6 +1096,26 @@ pl_readline(term_t flag)
}
static Term
StreamPosition(IOSTREAM *st)
{
Term t[4];
if (!st)
st = Suser_input;
t[0] = MkIntegerTerm(st->posbuf.charno);
t[1] = MkIntegerTerm(st->posbuf.lineno);
t[2] = MkIntegerTerm(st->posbuf.linepos);
t[3] = MkIntegerTerm(st->posbuf.byteno);
return Yap_MkApplTerm(FunctorStreamPos,4,t);
}
Term
Yap_StreamPosition(IOSTREAM *st)
{
return StreamPosition(st);
}
#if THREADS
#define COUNT_MUTEX_INITIALIZER(name) \