aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-02-27 09:39:05 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-02-27 09:39:05 -0300
commit60d11ec31655c6c3f8fda787080e0908ac81b076 (patch)
treefe70f5ace4802bc7b3596b04f290fd7064dc0911
parente1a424e8a35738bf56ecdad01155fb45b3001660 (diff)
downloadlua-60d11ec31655c6c3f8fda787080e0908ac81b076.tar.gz
lua-60d11ec31655c6c3f8fda787080e0908ac81b076.tar.bz2
lua-60d11ec31655c6c3f8fda787080e0908ac81b076.zip
by default, gcc does not get tmpname
-rw-r--r--liolib.c46
1 files changed, 37 insertions, 9 deletions
diff --git a/liolib.c b/liolib.c
index 9bbbe61b..2b4e0f5f 100644
--- a/liolib.c
+++ b/liolib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: liolib.c,v 2.31 2003/02/11 15:24:52 roberto Exp roberto $ 2** $Id: liolib.c,v 2.32 2003/02/11 15:31:50 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*/
@@ -22,20 +22,43 @@
22 22
23 23
24/* 24/*
25** {====================================================== 25** by default, gcc does not get `tmpname'
26** FILE Operations
27** =======================================================
28*/ 26*/
27#ifndef LUA_USETMPNAME
28#ifdef __GNUC__
29#define LUA_USETMPNAME 0
30#else
31#define LUA_USETMPNAME 1
32#endif
33#endif
29 34
30 35
36/*
37** by default, posix systems get `popen'
38*/
39#ifndef USE_POPEN
31#ifdef _POSIX_C_SOURCE 40#ifdef _POSIX_C_SOURCE
32#if _POSIX_C_SOURCE >= 2 41#if _POSIX_C_SOURCE >= 2
33#define USE_POPEN 42#define USE_POPEN 1
43#endif
34#endif 44#endif
35#endif 45#endif
36
37 46
38#ifndef USE_POPEN 47#ifndef USE_POPEN
48#define USE_POPEN 0
49#endif
50
51
52
53
54/*
55** {======================================================
56** FILE Operations
57** =======================================================
58*/
59
60
61#if !USE_POPEN
39#define pclose(f) (-1) 62#define pclose(f) (-1)
40#endif 63#endif
41 64
@@ -180,7 +203,7 @@ static int io_open (lua_State *L) {
180 203
181 204
182static int io_popen (lua_State *L) { 205static int io_popen (lua_State *L) {
183#ifndef USE_POPEN 206#if !USE_POPEN
184 luaL_error(L, "`popen' not supported"); 207 luaL_error(L, "`popen' not supported");
185 return 0; 208 return 0;
186#else 209#else
@@ -247,10 +270,10 @@ static int io_output (lua_State *L) {
247static int io_readline (lua_State *L); 270static int io_readline (lua_State *L);
248 271
249 272
250static void aux_lines (lua_State *L, int index, int close) { 273static void aux_lines (lua_State *L, int idx, int close) {
251 lua_pushliteral(L, FILEHANDLE); 274 lua_pushliteral(L, FILEHANDLE);
252 lua_rawget(L, LUA_REGISTRYINDEX); 275 lua_rawget(L, LUA_REGISTRYINDEX);
253 lua_pushvalue(L, index); 276 lua_pushvalue(L, idx);
254 lua_pushboolean(L, close); /* close/not close file when finished */ 277 lua_pushboolean(L, close); /* close/not close file when finished */
255 lua_pushcclosure(L, io_readline, 3); 278 lua_pushcclosure(L, io_readline, 3);
256} 279}
@@ -546,11 +569,16 @@ static int io_rename (lua_State *L) {
546 569
547 570
548static int io_tmpname (lua_State *L) { 571static int io_tmpname (lua_State *L) {
572#if !LUA_USETMPNAME
573 luaL_error(L, "`tmpname' not supported");
574 return 0;
575#else
549 char buff[L_tmpnam]; 576 char buff[L_tmpnam];
550 if (tmpnam(buff) != buff) 577 if (tmpnam(buff) != buff)
551 return luaL_error(L, "unable to generate a unique filename"); 578 return luaL_error(L, "unable to generate a unique filename");
552 lua_pushstring(L, buff); 579 lua_pushstring(L, buff);
553 return 1; 580 return 1;
581#endif
554} 582}
555 583
556 584