Kaydet (Commit) 5a2a683e authored tarafından Guido van Rossum's avatar Guido van Rossum

* filemodule.c: added writelines() -- analogous to readlines()

* import.c: fixed core dump when out-of-date .pyc file encountered (again!)
üst 52c1f515
......@@ -541,6 +541,47 @@ file_write(f, args)
return None;
}
static object *
file_writelines(f, args)
fileobject *f;
object *args;
{
int i, n;
if (f->f_fp == NULL)
return err_closed();
if (args == NULL || !is_listobject(args)) {
err_setstr(TypeError,
"writelines() requires list of strings");
return NULL;
}
n = getlistsize(args);
f->f_softspace = 0;
BGN_SAVE
errno = 0;
for (i = 0; i < n; i++) {
object *line = getlistitem(args, i);
int len;
int nwritten;
if (!is_stringobject(line)) {
RET_SAVE
err_setstr(TypeError,
"writelines() requires list of strings");
return NULL;
}
len = getstringsize(line);
nwritten = fwrite(getstringvalue(line), 1, len, f->f_fp);
if (nwritten != len) {
RET_SAVE
err_errno(IOError);
clearerr(f->f_fp);
return NULL;
}
}
END_SAVE
INCREF(None);
return None;
}
static struct methodlist file_methods[] = {
{"close", file_close},
{"flush", file_flush},
......@@ -552,6 +593,7 @@ static struct methodlist file_methods[] = {
{"seek", file_seek},
{"tell", file_tell},
{"write", file_write},
{"writelines", file_writelines},
{NULL, NULL} /* sentinel */
};
......
......@@ -250,9 +250,10 @@ get_module(m, name, m_ret)
fprintf(stderr,
"# invalid precompiled file \"%s\"\n",
namebuf);
goto read_py;
}
}
if (co == NULL)
goto read_py;
}
else {
read_py:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment