aboutsummaryrefslogtreecommitdiff
path: root/liolib.c
diff options
context:
space:
mode:
Diffstat (limited to 'liolib.c')
-rw-r--r--liolib.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/liolib.c b/liolib.c
index 46c4e87c..7a61560f 100644
--- a/liolib.c
+++ b/liolib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: liolib.c,v 1.9 1997/12/09 13:50:08 roberto Exp roberto $ 2** $Id: liolib.c,v 1.10 1997/12/17 20:48:58 roberto Exp roberto $
3** Standard I/O (and system) library 3** Standard I/O (and system) library
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -39,9 +39,6 @@
39#define FOUTPUT "_OUTPUT" 39#define FOUTPUT "_OUTPUT"
40 40
41 41
42#define FIRSTARG 3 /* 1st and 2nd are upvalues */
43
44
45#ifdef POPEN 42#ifdef POPEN
46FILE *popen(); 43FILE *popen();
47int pclose(); 44int pclose();
@@ -53,7 +50,7 @@ int pclose();
53 50
54static int gettag (int i) 51static int gettag (int i)
55{ 52{
56 return lua_getnumber(lua_getparam(i)); 53 return lua_getnumber(lua_upvalue(i));
57} 54}
58 55
59 56
@@ -128,7 +125,7 @@ static void setreturn (FILE *f, char *name)
128static void io_readfrom (void) 125static void io_readfrom (void)
129{ 126{
130 FILE *current; 127 FILE *current;
131 lua_Object f = lua_getparam(FIRSTARG); 128 lua_Object f = lua_getparam(1);
132 if (f == LUA_NOOBJECT) { 129 if (f == LUA_NOOBJECT) {
133 closefile(FINPUT); 130 closefile(FINPUT);
134 current = stdin; 131 current = stdin;
@@ -136,7 +133,7 @@ static void io_readfrom (void)
136 else if (lua_tag(f) == gettag(IOTAG)) 133 else if (lua_tag(f) == gettag(IOTAG))
137 current = lua_getuserdata(f); 134 current = lua_getuserdata(f);
138 else { 135 else {
139 char *s = luaL_check_string(FIRSTARG); 136 char *s = luaL_check_string(1);
140 current = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); 137 current = (*s == '|') ? popen(s+1, "r") : fopen(s, "r");
141 if (current == NULL) { 138 if (current == NULL) {
142 pushresult(0); 139 pushresult(0);
@@ -150,7 +147,7 @@ static void io_readfrom (void)
150static void io_writeto (void) 147static void io_writeto (void)
151{ 148{
152 FILE *current; 149 FILE *current;
153 lua_Object f = lua_getparam(FIRSTARG); 150 lua_Object f = lua_getparam(1);
154 if (f == LUA_NOOBJECT) { 151 if (f == LUA_NOOBJECT) {
155 closefile(FOUTPUT); 152 closefile(FOUTPUT);
156 current = stdout; 153 current = stdout;
@@ -158,7 +155,7 @@ static void io_writeto (void)
158 else if (lua_tag(f) == gettag(IOTAG)) 155 else if (lua_tag(f) == gettag(IOTAG))
159 current = lua_getuserdata(f); 156 current = lua_getuserdata(f);
160 else { 157 else {
161 char *s = luaL_check_string(FIRSTARG); 158 char *s = luaL_check_string(1);
162 current = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); 159 current = (*s == '|') ? popen(s+1,"w") : fopen(s,"w");
163 if (current == NULL) { 160 if (current == NULL) {
164 pushresult(0); 161 pushresult(0);
@@ -171,7 +168,7 @@ static void io_writeto (void)
171 168
172static void io_appendto (void) 169static void io_appendto (void)
173{ 170{
174 char *s = luaL_check_string(FIRSTARG); 171 char *s = luaL_check_string(1);
175 FILE *fp = fopen (s, "a"); 172 FILE *fp = fopen (s, "a");
176 if (fp != NULL) 173 if (fp != NULL)
177 setreturn(fp, FOUTPUT); 174 setreturn(fp, FOUTPUT);
@@ -184,7 +181,7 @@ static void io_appendto (void)
184 181
185static void io_read (void) 182static void io_read (void)
186{ 183{
187 int arg = FIRSTARG; 184 int arg = 1;
188 FILE *f = getfileparam(FINPUT, &arg); 185 FILE *f = getfileparam(FINPUT, &arg);
189 char *buff; 186 char *buff;
190 char *p = luaL_opt_string(arg, "[^\n]*{\n}"); 187 char *p = luaL_opt_string(arg, "[^\n]*{\n}");
@@ -236,7 +233,7 @@ static void io_read (void)
236 233
237static void io_write (void) 234static void io_write (void)
238{ 235{
239 int arg = FIRSTARG; 236 int arg = 1;
240 FILE *f = getfileparam(FOUTPUT, &arg); 237 FILE *f = getfileparam(FOUTPUT, &arg);
241 int status = 1; 238 int status = 1;
242 char *s; 239 char *s;