*** empty log message ***
parent
d16e151b56
commit
0abc74ed14
@ -1,39 +0,0 @@
|
|||||||
local getmetatable, setmetatable = getmetatable, setmetatable
|
|
||||||
local rawget, rawset, type = rawget, rawset, type
|
|
||||||
local getenv, setenv, unsetenv = os.getenv, os.setenv, os.unsetenv
|
|
||||||
|
|
||||||
local mt = getmetatable(os)
|
|
||||||
if not mt then
|
|
||||||
mt = {}
|
|
||||||
setmetatable(os, mt)
|
|
||||||
end
|
|
||||||
module "os"
|
|
||||||
|
|
||||||
-- metatable for os
|
|
||||||
function mt:__index(k)
|
|
||||||
if k == "environ" then
|
|
||||||
local environ = {}
|
|
||||||
-- This function needs to be written in C.
|
|
||||||
for k,v in getenvs() do
|
|
||||||
e[k] = v
|
|
||||||
end
|
|
||||||
rawset(os, "environ", environ)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- metatable for os.environ
|
|
||||||
mt = {}
|
|
||||||
function mt:__newindex(name, value)
|
|
||||||
if type(name) ~= "string" then
|
|
||||||
error("Expected a string key", 2)
|
|
||||||
end
|
|
||||||
if value == nil then
|
|
||||||
unsetenv(name)
|
|
||||||
elseif typeof(value) == "string" then
|
|
||||||
setenv(name, value, true)
|
|
||||||
else
|
|
||||||
error("Expected a string value", 2)
|
|
||||||
end
|
|
||||||
rawset(self,name,value)
|
|
||||||
end
|
|
||||||
environ = setmetatable({}, e)
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#include <io.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
HANDLE h;
|
|
||||||
FILE *f;
|
|
||||||
h = CreateFile("NUL", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
|
|
||||||
assert(h != INVALID_HANDLE_VALUE);
|
|
||||||
f = _fdopen(_open_osfhandle(h, _O_RDONLY), "r");
|
|
||||||
assert(f != 0);
|
|
||||||
assert(fgetc(f) == EOF);
|
|
||||||
fclose(f);
|
|
||||||
#if 0
|
|
||||||
{
|
|
||||||
char buf[20];
|
|
||||||
DWORD len;
|
|
||||||
fprintf(stderr, "read: %d\n", ReadFile(h, buf, sizeof buf, &len, 0));
|
|
||||||
fprintf(stderr, "error: %lu\n", GetLastError());
|
|
||||||
fprintf(stderr, "len: %lu\n", len);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
fprintf(stderr, "%d\n", CloseHandle(h));
|
|
||||||
fprintf(stderr, "error: %lu\n", GetLastError());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue