mirror of
https://github.com/lua/lua
synced 2024-12-24 19:36:50 +03:00
new functions "seek" and "flush".
This commit is contained in:
parent
cc117253c8
commit
ee22af5ced
49
liolib.c
49
liolib.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: liolib.c,v 1.21 1998/06/18 17:04:28 roberto Exp roberto $
|
** $Id: liolib.c,v 1.22 1998/08/21 17:43:44 roberto Exp roberto $
|
||||||
** Standard I/O (and system) library
|
** Standard I/O (and system) library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@ -76,7 +76,7 @@ static int ishandler (lua_Object f)
|
|||||||
else return 0;
|
else return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FILE *getfile (char *name)
|
static FILE *getfilebyname (char *name)
|
||||||
{
|
{
|
||||||
lua_Object f = lua_getglobal(name);
|
lua_Object f = lua_getglobal(name);
|
||||||
if (!ishandler(f))
|
if (!ishandler(f))
|
||||||
@ -85,21 +85,26 @@ static FILE *getfile (char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static FILE *getfileparam (char *name, int *arg)
|
static FILE *getfile (int arg) {
|
||||||
{
|
lua_Object f = lua_getparam(arg);
|
||||||
lua_Object f = lua_getparam(*arg);
|
return (ishandler(f)) ? lua_getuserdata(f) : NULL;
|
||||||
if (ishandler(f)) {
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static FILE *getfileparam (char *name, int *arg) {
|
||||||
|
FILE *f = getfile(*arg);
|
||||||
|
if (f) {
|
||||||
(*arg)++;
|
(*arg)++;
|
||||||
return lua_getuserdata(f);
|
return f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return getfile(name);
|
return getfilebyname(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void closefile (char *name)
|
static void closefile (char *name)
|
||||||
{
|
{
|
||||||
FILE *f = getfile(name);
|
FILE *f = getfilebyname(name);
|
||||||
if (f == stdin || f == stdout) return;
|
if (f == stdin || f == stdout) return;
|
||||||
if (pclose(f) == -1)
|
if (pclose(f) == -1)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -271,6 +276,30 @@ static void io_write (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void io_seek (void) {
|
||||||
|
static int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END};
|
||||||
|
static char *modenames[] = {"set", "cur", "end", NULL};
|
||||||
|
FILE *f = getfile(FIRSTARG-1+1);
|
||||||
|
int op = luaL_findstring(luaL_opt_string(FIRSTARG-1+2, "cur"), modenames);
|
||||||
|
long offset = luaL_opt_number(FIRSTARG-1+3, 0);
|
||||||
|
luaL_arg_check(f, 1, "invalid file handler");
|
||||||
|
luaL_arg_check(op != -1, 2, "invalid mode");
|
||||||
|
op = fseek(f, offset, mode[op]);
|
||||||
|
if (op)
|
||||||
|
pushresult(0); /* error */
|
||||||
|
else
|
||||||
|
lua_pushnumber(ftell(f));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void io_flush (void) {
|
||||||
|
FILE *f = getfile(FIRSTARG);
|
||||||
|
luaL_arg_check(f || lua_getparam(FIRSTARG) == LUA_NOOBJECT, 1,
|
||||||
|
"invalid file handler");
|
||||||
|
pushresult(fflush(f) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void io_execute (void)
|
static void io_execute (void)
|
||||||
{
|
{
|
||||||
lua_pushnumber(system(luaL_check_string(1)));
|
lua_pushnumber(system(luaL_check_string(1)));
|
||||||
@ -420,7 +449,9 @@ static struct luaL_reg iolibtag[] = {
|
|||||||
{"readfrom", io_readfrom},
|
{"readfrom", io_readfrom},
|
||||||
{"writeto", io_writeto},
|
{"writeto", io_writeto},
|
||||||
{"appendto", io_appendto},
|
{"appendto", io_appendto},
|
||||||
|
{"flush", io_flush},
|
||||||
{"read", io_read},
|
{"read", io_read},
|
||||||
|
{"seek", io_seek},
|
||||||
{"write", io_write}
|
{"write", io_write}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
102
manual.tex
102
manual.tex
@ -1,4 +1,4 @@
|
|||||||
% $Id: manual.tex,v 1.17 1998/06/29 18:09:28 roberto Exp roberto $
|
% $Id: manual.tex,v 1.18 1998/08/21 17:43:44 roberto Exp roberto $
|
||||||
|
|
||||||
\documentclass[11pt]{article}
|
\documentclass[11pt]{article}
|
||||||
\usepackage{fullpage,bnf}
|
\usepackage{fullpage,bnf}
|
||||||
@ -41,7 +41,7 @@ Waldemar Celes
|
|||||||
\tecgraf\ --- Computer Science Department --- PUC-Rio
|
\tecgraf\ --- Computer Science Department --- PUC-Rio
|
||||||
}
|
}
|
||||||
|
|
||||||
%\date{\small \verb$Date: 1998/06/29 18:09:28 $}
|
%\date{\small \verb$Date: 1998/08/21 17:43:44 $}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
@ -1879,7 +1879,7 @@ and \verb|lua_iolibopen|, declared in \verb|lualib.h|.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{call (func, arg [, mode [, errhandler]])}}\Deffunc{call}
|
\subsubsection*{\ff \T{call (func, arg [, mode [, errhandler]])}}\Deffunc{call}
|
||||||
\label{pdf-call}
|
\label{pdf-call}
|
||||||
This function calls function \verb|func| with
|
Calls function \verb|func| with
|
||||||
the arguments given by the table \verb|arg|.
|
the arguments given by the table \verb|arg|.
|
||||||
The call is equivalent to
|
The call is equivalent to
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
@ -1932,7 +1932,7 @@ this limit.
|
|||||||
the API function \verb|lua_collectgarbage|.
|
the API function \verb|lua_collectgarbage|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{dofile (filename)}}\Deffunc{dofile}
|
\subsubsection*{\ff \T{dofile (filename)}}\Deffunc{dofile}
|
||||||
This function receives a file name,
|
Receives a file name,
|
||||||
opens the file, and executes the file contents as a Lua chunk,
|
opens the file, and executes the file contents as a Lua chunk,
|
||||||
or as pre-compiled chunks.
|
or as pre-compiled chunks.
|
||||||
When called without arguments,
|
When called without arguments,
|
||||||
@ -1945,7 +1945,7 @@ It issues an error when called with a non string argument.
|
|||||||
\verb|dofile| is equivalent to the API function \verb|lua_dofile|.
|
\verb|dofile| is equivalent to the API function \verb|lua_dofile|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{dostring (string [, chunkname])}}\Deffunc{dostring}
|
\subsubsection*{\ff \T{dostring (string [, chunkname])}}\Deffunc{dostring}
|
||||||
This function executes a given string as a Lua chunk.
|
Executes a given string as a Lua chunk.
|
||||||
If there is any error executing the string,
|
If there is any error executing the string,
|
||||||
\verb|dostring| returns \nil.
|
\verb|dostring| returns \nil.
|
||||||
Otherwise, it returns the values returned by the chunk,
|
Otherwise, it returns the values returned by the chunk,
|
||||||
@ -1960,7 +1960,7 @@ Returns a new tag.
|
|||||||
\verb|newtag| is equivalent to the API function \verb|lua_newtag|.
|
\verb|newtag| is equivalent to the API function \verb|lua_newtag|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{next (table, index)}}\Deffunc{next}
|
\subsubsection*{\ff \T{next (table, index)}}\Deffunc{next}
|
||||||
This function allows a program to traverse all fields of a table.
|
Allows a program to traverse all fields of a table.
|
||||||
Its first argument is a table and its second argument
|
Its first argument is a table and its second argument
|
||||||
is an index in this table.
|
is an index in this table.
|
||||||
It returns the next index of the table and the
|
It returns the next index of the table and the
|
||||||
@ -2038,13 +2038,13 @@ end
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
\subsubsection*{\ff \T{tostring (e)}}\Deffunc{tostring}
|
\subsubsection*{\ff \T{tostring (e)}}\Deffunc{tostring}
|
||||||
This function receives an argument of any type and
|
Receives an argument of any type and
|
||||||
converts it to a string in a reasonable format.
|
converts it to a string in a reasonable format.
|
||||||
For complete control on how numbers are converted,
|
For complete control on how numbers are converted,
|
||||||
use function \verb|format|.
|
use function \verb|format|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{print (e1, e2, ...)}}\Deffunc{print}
|
\subsubsection*{\ff \T{print (e1, e2, ...)}}\Deffunc{print}
|
||||||
This function receives any number of arguments,
|
Receives any number of arguments,
|
||||||
and prints their values using the strings returned by \verb|tostring|.
|
and prints their values using the strings returned by \verb|tostring|.
|
||||||
This function is not intended for formatted output,
|
This function is not intended for formatted output,
|
||||||
but only as a quick way to show a value,
|
but only as a quick way to show a value,
|
||||||
@ -2052,14 +2052,14 @@ for instance for debugging.
|
|||||||
See \See{libio} for functions for formatted output.
|
See \See{libio} for functions for formatted output.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{_ALERT (message)}}\Deffunc{alert}\label{alert}
|
\subsubsection*{\ff \T{_ALERT (message)}}\Deffunc{alert}\label{alert}
|
||||||
This function prints its only string argument to \IndexVerb{stderr}.
|
Prints its only string argument to \IndexVerb{stderr}.
|
||||||
All error messages in Lua are printed through this function.
|
All error messages in Lua are printed through this function.
|
||||||
Therefore, a program may redefine it
|
Therefore, a program may redefine it
|
||||||
to change the way such messages are shown
|
to change the way such messages are shown
|
||||||
(for instance, for systems without \verb|stderr|).
|
(for instance, for systems without \verb|stderr|).
|
||||||
|
|
||||||
\subsubsection*{\ff \T{tonumber (e [, base])}}\Deffunc{tonumber}
|
\subsubsection*{\ff \T{tonumber (e [, base])}}\Deffunc{tonumber}
|
||||||
This function receives one argument,
|
Receives one argument,
|
||||||
and tries to convert it to a number.
|
and tries to convert it to a number.
|
||||||
If the argument is already a number or a string convertible
|
If the argument is already a number or a string convertible
|
||||||
to a number, then \verb|tonumber| returns that number;
|
to a number, then \verb|tonumber| returns that number;
|
||||||
@ -2075,7 +2075,7 @@ as well as an optional exponent part \see{coercion}.
|
|||||||
In other bases, only integers are accepted.
|
In other bases, only integers are accepted.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{type (v)}}\Deffunc{type}\label{pdf-type}
|
\subsubsection*{\ff \T{type (v)}}\Deffunc{type}\label{pdf-type}
|
||||||
This function allows Lua to test the type of a value.
|
Allows Lua to test the type of a value.
|
||||||
It receives one argument, and returns its type, coded as a string.
|
It receives one argument, and returns its type, coded as a string.
|
||||||
The possible results of this function are
|
The possible results of this function are
|
||||||
\verb|"nil"| (a string, not the value \nil),
|
\verb|"nil"| (a string, not the value \nil),
|
||||||
@ -2086,12 +2086,12 @@ The possible results of this function are
|
|||||||
and \verb|"userdata"|.
|
and \verb|"userdata"|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{tag (v)}}\Deffunc{tag}
|
\subsubsection*{\ff \T{tag (v)}}\Deffunc{tag}
|
||||||
This function allows Lua to test the tag of a value \see{TypesSec}.
|
Allows Lua to test the tag of a value \see{TypesSec}.
|
||||||
It receives one argument, and returns its tag (a number).
|
It receives one argument, and returns its tag (a number).
|
||||||
\verb|tag| is equivalent to the API function \verb|lua_tag|.
|
\verb|tag| is equivalent to the API function \verb|lua_tag|.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{settag (t, tag)}}\Deffunc{settag}
|
\subsubsection*{\ff \T{settag (t, tag)}}\Deffunc{settag}
|
||||||
This function sets the tag of a given table \see{TypesSec}.
|
Sets the tag of a given table \see{TypesSec}.
|
||||||
\verb|tag| must be a value created with \verb|newtag|
|
\verb|tag| must be a value created with \verb|newtag|
|
||||||
\see{pdf-newtag}.
|
\see{pdf-newtag}.
|
||||||
It returns the value of its first argument (the table).
|
It returns the value of its first argument (the table).
|
||||||
@ -2100,7 +2100,7 @@ it is impossible to change the tag of a userdata from Lua.
|
|||||||
|
|
||||||
|
|
||||||
\subsubsection*{\ff \T{assert (v [, message])}}\Deffunc{assert}
|
\subsubsection*{\ff \T{assert (v [, message])}}\Deffunc{assert}
|
||||||
This function issues an \emph{``assertion failed!''} error
|
Issues an \emph{``assertion failed!''} error
|
||||||
when its argument is \nil.
|
when its argument is \nil.
|
||||||
This function is equivalent to the following Lua function:
|
This function is equivalent to the following Lua function:
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
@ -2113,7 +2113,7 @@ end
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
\subsubsection*{\ff \T{error (message)}}\Deffunc{error}\label{pdf-error}
|
\subsubsection*{\ff \T{error (message)}}\Deffunc{error}\label{pdf-error}
|
||||||
This function calls the error handler and then terminates
|
Calls the error handler and then terminates
|
||||||
the last protected function called
|
the last protected function called
|
||||||
(in~C: \verb|lua_dofile|, \verb|lua_dostring|,
|
(in~C: \verb|lua_dofile|, \verb|lua_dostring|,
|
||||||
\verb|lua_dobuffer|, or \verb|lua_callfunction|;
|
\verb|lua_dobuffer|, or \verb|lua_callfunction|;
|
||||||
@ -2136,7 +2136,7 @@ without invoking any tag method.
|
|||||||
and \verb|value| is any Lua value.
|
and \verb|value| is any Lua value.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{rawsetglobal (name, value)}}\Deffunc{rawsetglobal}
|
\subsubsection*{\ff \T{rawsetglobal (name, value)}}\Deffunc{rawsetglobal}
|
||||||
This function assigns the given value to a global variable.
|
Assigns the given value to a global variable.
|
||||||
The string \verb|name| does not need to be a
|
The string \verb|name| does not need to be a
|
||||||
syntactically valid variable name.
|
syntactically valid variable name.
|
||||||
Therefore,
|
Therefore,
|
||||||
@ -2145,7 +2145,7 @@ this function can set global variables with strange names like
|
|||||||
Function \verb|rawsetglobal| returns the value of its second argument.
|
Function \verb|rawsetglobal| returns the value of its second argument.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{setglobal (name, value)}}\Deffunc{setglobal}
|
\subsubsection*{\ff \T{setglobal (name, value)}}\Deffunc{setglobal}
|
||||||
This function assigns the given value to a global variable,
|
Assigns the given value to a global variable,
|
||||||
or calls a tag method.
|
or calls a tag method.
|
||||||
Its full semantics is explained in \See{tag-method}.
|
Its full semantics is explained in \See{tag-method}.
|
||||||
The string \verb|name| does not need to be a
|
The string \verb|name| does not need to be a
|
||||||
@ -2153,12 +2153,12 @@ syntactically valid variable name.
|
|||||||
Function \verb|setglobal| returns the value of its second argument.
|
Function \verb|setglobal| returns the value of its second argument.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{rawgetglobal (name)}}\Deffunc{rawgetglobal}
|
\subsubsection*{\ff \T{rawgetglobal (name)}}\Deffunc{rawgetglobal}
|
||||||
This function retrieves the value of a global variable.
|
Retrieves the value of a global variable.
|
||||||
The string \verb|name| does not need to be a
|
The string \verb|name| does not need to be a
|
||||||
syntactically valid variable name.
|
syntactically valid variable name.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{getglobal (name)}}\Deffunc{getglobal}
|
\subsubsection*{\ff \T{getglobal (name)}}\Deffunc{getglobal}
|
||||||
This function retrieves the value of a global variable,
|
Retrieves the value of a global variable,
|
||||||
or calls a tag method.
|
or calls a tag method.
|
||||||
Its full semantics is explained in \See{tag-method}.
|
Its full semantics is explained in \See{tag-method}.
|
||||||
The string \verb|name| does not need to be a
|
The string \verb|name| does not need to be a
|
||||||
@ -2166,19 +2166,19 @@ syntactically valid variable name.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{settagmethod (tag, event, newmethod)}}
|
\subsubsection*{\ff \T{settagmethod (tag, event, newmethod)}}
|
||||||
\Deffunc{settagmethod}
|
\Deffunc{settagmethod}
|
||||||
This function sets a new tag method to the given pair \M{(tag, event)}.
|
Sets a new tag method to the given pair \M{(tag, event)}.
|
||||||
It returns the old method.
|
It returns the old method.
|
||||||
If \verb|newmethod| is \nil,
|
If \verb|newmethod| is \nil,
|
||||||
\verb|settagmethod| restores the default behavior for the given event.
|
\verb|settagmethod| restores the default behavior for the given event.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{gettagmethod (tag, event)}}
|
\subsubsection*{\ff \T{gettagmethod (tag, event)}}
|
||||||
\Deffunc{gettagmethod}
|
\Deffunc{gettagmethod}
|
||||||
This function returns the current tag method
|
Returns the current tag method
|
||||||
for a given pair \M{(tag, event)}.
|
for a given pair \M{(tag, event)}.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{copytagmethods (tagto, tagfrom)}}
|
\subsubsection*{\ff \T{copytagmethods (tagto, tagfrom)}}
|
||||||
\Deffunc{copytagmethods}
|
\Deffunc{copytagmethods}
|
||||||
This function copies all tag methods from one tag to another;
|
Copies all tag methods from one tag to another;
|
||||||
it returns \verb|tagto|.
|
it returns \verb|tagto|.
|
||||||
|
|
||||||
|
|
||||||
@ -2190,7 +2190,7 @@ When indexing a string, the first character is at position~1
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{strfind (str, pattern [, init [, plain]])}}
|
\subsubsection*{\ff \T{strfind (str, pattern [, init [, plain]])}}
|
||||||
\Deffunc{strfind}
|
\Deffunc{strfind}
|
||||||
This function looks for the first \emph{match} of
|
Looks for the first \emph{match} of
|
||||||
\verb|pattern| in \verb|str|.
|
\verb|pattern| in \verb|str|.
|
||||||
If it finds one, then it returns the indices on \verb|str|
|
If it finds one, then it returns the indices on \verb|str|
|
||||||
where this occurrence starts and ends;
|
where this occurrence starts and ends;
|
||||||
@ -2265,7 +2265,7 @@ Note that numerical codes are not necessarily portable across platforms.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{format (formatstring, e1, e2, \ldots)}}\Deffunc{format}
|
\subsubsection*{\ff \T{format (formatstring, e1, e2, \ldots)}}\Deffunc{format}
|
||||||
\label{format}
|
\label{format}
|
||||||
This function returns a formatted version of its variable number of arguments
|
Returns a formatted version of its variable number of arguments
|
||||||
following the description given in its first argument (which must be a string).
|
following the description given in its first argument (which must be a string).
|
||||||
The format string follows the same rules as the \verb|printf| family of
|
The format string follows the same rules as the \verb|printf| family of
|
||||||
standard C functions.
|
standard C functions.
|
||||||
@ -2579,7 +2579,7 @@ usually limited and depends on the system.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{appendto (filename)}}\Deffunc{appendto}
|
\subsubsection*{\ff \T{appendto (filename)}}\Deffunc{appendto}
|
||||||
|
|
||||||
This function opens a file named \verb|filename| and sets it as the
|
Opens a file named \verb|filename| and sets it as the
|
||||||
value of \verb|_OUTPUT|.
|
value of \verb|_OUTPUT|.
|
||||||
Unlike the \verb|writeto| operation,
|
Unlike the \verb|writeto| operation,
|
||||||
this function does not erase any previous content of the file.
|
this function does not erase any previous content of the file.
|
||||||
@ -2591,26 +2591,58 @@ available to close an output file opened by \verb|appendto|.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{remove (filename)}}\Deffunc{remove}
|
\subsubsection*{\ff \T{remove (filename)}}\Deffunc{remove}
|
||||||
|
|
||||||
This function deletes the file with the given name.
|
Deletes the file with the given name.
|
||||||
If this function fails, it returns \nil,
|
If this function fails, it returns \nil,
|
||||||
plus a string describing the error.
|
plus a string describing the error.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{rename (name1, name2)}}\Deffunc{rename}
|
\subsubsection*{\ff \T{rename (name1, name2)}}\Deffunc{rename}
|
||||||
|
|
||||||
This function renames file named \verb|name1| to \verb|name2|.
|
Renames file named \verb|name1| to \verb|name2|.
|
||||||
If this function fails, it returns \nil,
|
If this function fails, it returns \nil,
|
||||||
plus a string describing the error.
|
plus a string describing the error.
|
||||||
|
|
||||||
|
\subsubsection*{\ff \T{flush ([filehandle])}}\Deffunc{flush}
|
||||||
|
|
||||||
|
Saves any written data to the given file.
|
||||||
|
If \verb|filehandle| is not specified,
|
||||||
|
flushes all open files.
|
||||||
|
If this function fails, it returns \nil,
|
||||||
|
plus a string describing the error.
|
||||||
|
|
||||||
|
\subsubsection*{\ff \T{seek (filehandle [, whence] [, offset])}}\Deffunc{seek}
|
||||||
|
|
||||||
|
Sets the file position, measured in bytes from the beginning of the file,
|
||||||
|
to the position given by \verb|offset| plus a base
|
||||||
|
specified by the string \verb|whence|, as follows:
|
||||||
|
\begin{description}
|
||||||
|
\item[\tt "set"] base is position 0 (beginning of the file);
|
||||||
|
\item[\tt "cur"] base is current position;
|
||||||
|
\item[\tt "end"] base is end of file;
|
||||||
|
\end{description}
|
||||||
|
In case of success, function \verb|seek| returns the final file position,
|
||||||
|
measured in bytes from the beginning of the file.
|
||||||
|
If the call fails, it returns \nil,
|
||||||
|
plus a string describing the error.
|
||||||
|
|
||||||
|
The default value for \verb|whence| is \verb|"cur"|,
|
||||||
|
and for \verb|offset| is 0.
|
||||||
|
Therefore, the call \verb|seek(file)| returns the current
|
||||||
|
file position, without changing it;
|
||||||
|
the call \verb|seek(file, "set")| sets the position to the
|
||||||
|
beginning of the file (and returns 0);
|
||||||
|
and the call \verb|seek(file, "end")| sets the position to the
|
||||||
|
end of the file, and returns its size.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{tmpname ()}}\Deffunc{tmpname}
|
\subsubsection*{\ff \T{tmpname ()}}\Deffunc{tmpname}
|
||||||
|
|
||||||
This function returns a string with a file name that can safely
|
Returns a string with a file name that can safely
|
||||||
be used for a temporary file.
|
be used for a temporary file.
|
||||||
The file must be explicitly removed when no longer needed.
|
The file must be explicitly removed when no longer needed.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{read ([filehandle] [readpattern])}}\Deffunc{read}
|
\subsubsection*{\ff \T{read ([filehandle] [readpattern])}}\Deffunc{read}
|
||||||
|
|
||||||
This function reads the file \verb|_INPUT|,
|
Reads file \verb|_INPUT|,
|
||||||
or from \verb|filehandle| if this argument is given,
|
or \verb|filehandle| if this argument is given,
|
||||||
according to a read pattern, which specifies how much to read;
|
according to a read pattern, which specifies how much to read;
|
||||||
characters are read from the input file until
|
characters are read from the input file until
|
||||||
the read pattern fails or ends.
|
the read pattern fails or ends.
|
||||||
@ -2662,9 +2694,9 @@ or \nil\ if the next characters do not conform to an integer format.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{write ([filehandle, ] value1, ...)}}\Deffunc{write}
|
\subsubsection*{\ff \T{write ([filehandle, ] value1, ...)}}\Deffunc{write}
|
||||||
|
|
||||||
This function writes the value of each of its arguments to the
|
Writes the value of each of its arguments to
|
||||||
file \verb|_OUTPUT|,
|
file \verb|_OUTPUT|,
|
||||||
or to \verb|filehandle| if this argument is given,
|
or to \verb|filehandle| if this argument is given.
|
||||||
The arguments must be strings or numbers.
|
The arguments must be strings or numbers.
|
||||||
To write other values,
|
To write other values,
|
||||||
use \verb|tostring| or \verb|format| before \verb|write|.
|
use \verb|tostring| or \verb|format| before \verb|write|.
|
||||||
@ -2673,7 +2705,7 @@ plus a string describing the error.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{date ([format])}}\Deffunc{date}
|
\subsubsection*{\ff \T{date ([format])}}\Deffunc{date}
|
||||||
|
|
||||||
This function returns a string containing date and time
|
Returns a string containing date and time
|
||||||
formatted according to the given string \verb|format|,
|
formatted according to the given string \verb|format|,
|
||||||
following the same rules of the ANSI C function \verb|strftime|.
|
following the same rules of the ANSI C function \verb|strftime|.
|
||||||
When called without arguments,
|
When called without arguments,
|
||||||
@ -2682,12 +2714,12 @@ the host system and the locale.
|
|||||||
|
|
||||||
\subsubsection*{\ff \T{clock ()}}\Deffunc{clock}
|
\subsubsection*{\ff \T{clock ()}}\Deffunc{clock}
|
||||||
|
|
||||||
This function returns an approximation of the amount of CPU time
|
Returns an approximation of the amount of CPU time
|
||||||
used by the program, in seconds.
|
used by the program, in seconds.
|
||||||
|
|
||||||
\subsubsection*{\ff \T{exit ([code])}}\Deffunc{exit}
|
\subsubsection*{\ff \T{exit ([code])}}\Deffunc{exit}
|
||||||
|
|
||||||
This function calls the C function \verb|exit|,
|
Calls the C function \verb|exit|,
|
||||||
with an optional \verb|code|,
|
with an optional \verb|code|,
|
||||||
to terminate the program.
|
to terminate the program.
|
||||||
The default value for \verb|code| is 1.
|
The default value for \verb|code| is 1.
|
||||||
|
Loading…
Reference in New Issue
Block a user