diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-02-20 10:50:27 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-02-20 10:50:27 -0300 |
| commit | e39e758a73c08953d477c8e024ffbd1e2edfe6a5 (patch) | |
| tree | 6d710ebf5278bc10ab085076c4fb13fe9fb280b9 | |
| parent | 5438d77221e5f909b2f1990721ec56ec352b932b (diff) | |
| download | lua-e39e758a73c08953d477c8e024ffbd1e2edfe6a5.tar.gz lua-e39e758a73c08953d477c8e024ffbd1e2edfe6a5.tar.bz2 lua-e39e758a73c08953d477c8e024ffbd1e2edfe6a5.zip | |
closing a "popen" file returns the process exit status
| -rw-r--r-- | liolib.c | 11 | ||||
| -rw-r--r-- | luaconf.h | 8 |
2 files changed, 12 insertions, 7 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: liolib.c,v 2.78 2008/02/12 16:51:03 roberto Exp roberto $ | 2 | ** $Id: liolib.c,v 2.79 2008/02/12 17:05:36 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 | */ |
| @@ -106,9 +106,14 @@ static int io_noclose (lua_State *L) { | |||
| 106 | */ | 106 | */ |
| 107 | static int io_pclose (lua_State *L) { | 107 | static int io_pclose (lua_State *L) { |
| 108 | FILE **p = tofilep(L); | 108 | FILE **p = tofilep(L); |
| 109 | int ok = lua_pclose(L, *p); | 109 | int stat = lua_pclose(L, *p); |
| 110 | *p = NULL; | 110 | *p = NULL; |
| 111 | return pushresult(L, ok, NULL); | 111 | if (stat == -1) /* error? */ |
| 112 | return pushresult(L, 0, NULL); | ||
| 113 | else { | ||
| 114 | lua_pushinteger(L, stat); | ||
| 115 | return 1; /* return status */ | ||
| 116 | } | ||
| 112 | } | 117 | } |
| 113 | 118 | ||
| 114 | 119 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: luaconf.h,v 1.101 2009/02/07 12:23:15 roberto Exp roberto $ | 2 | ** $Id: luaconf.h,v 1.102 2009/02/18 13:17:10 roberto Exp roberto $ |
| 3 | ** Configuration file for Lua | 3 | ** Configuration file for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -695,18 +695,18 @@ union luai_Cast { double l_d; long l_l; }; | |||
| 695 | #if defined(LUA_USE_POPEN) | 695 | #if defined(LUA_USE_POPEN) |
| 696 | 696 | ||
| 697 | #define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m)) | 697 | #define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m)) |
| 698 | #define lua_pclose(L,file) ((void)L, (pclose(file) != -1)) | 698 | #define lua_pclose(L,file) ((void)L, pclose(file)) |
| 699 | 699 | ||
| 700 | #elif defined(LUA_WIN) | 700 | #elif defined(LUA_WIN) |
| 701 | 701 | ||
| 702 | #define lua_popen(L,c,m) ((void)L, _popen(c,m)) | 702 | #define lua_popen(L,c,m) ((void)L, _popen(c,m)) |
| 703 | #define lua_pclose(L,file) ((void)L, (_pclose(file) != -1)) | 703 | #define lua_pclose(L,file) ((void)L, _pclose(file)) |
| 704 | 704 | ||
| 705 | #else | 705 | #else |
| 706 | 706 | ||
| 707 | #define lua_popen(L,c,m) ((void)((void)c, m), \ | 707 | #define lua_popen(L,c,m) ((void)((void)c, m), \ |
| 708 | luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0) | 708 | luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0) |
| 709 | #define lua_pclose(L,file) ((void)((void)L, file), 0) | 709 | #define lua_pclose(L,file) ((void)((void)L, file), -1) |
| 710 | 710 | ||
| 711 | #endif | 711 | #endif |
| 712 | 712 | ||
