aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2003-03-28 21:08:50 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2003-03-28 21:08:50 +0000
commitf18d1b7cd0ec4708518ab5e18ea33b6eadca0301 (patch)
treee831c6b1957af47db1301675b52c0d2a2e315fa7
parent307603b24dde69eac62d2cb52123488137520c9c (diff)
downloadluasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.tar.gz
luasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.tar.bz2
luasocket-f18d1b7cd0ec4708518ab5e18ea33b6eadca0301.zip
Closer to release...
-rw-r--r--TODO1
-rw-r--r--etc/check-links.lua8
-rw-r--r--etc/dict.lua19
-rw-r--r--etc/get.lua12
-rw-r--r--samples/daytimeclnt.lua6
-rw-r--r--samples/echoclnt.lua12
-rw-r--r--samples/echosrvr.lua6
-rw-r--r--samples/listener.lua6
-rw-r--r--src/buffer.c2
-rw-r--r--src/buffer.h3
-rw-r--r--src/ftp.lua1
-rw-r--r--src/http.lua1
-rw-r--r--src/inet.c9
-rw-r--r--src/inet.h4
-rw-r--r--src/luasocket.c7
-rw-r--r--src/select.c18
-rw-r--r--src/select.h4
-rw-r--r--src/smtp.lua1
-rw-r--r--src/socket.h6
-rw-r--r--src/timeout.c11
-rw-r--r--src/timeout.h5
-rw-r--r--src/udp.c26
-rw-r--r--src/udp.h6
-rw-r--r--src/unix.c15
-rw-r--r--src/unix.h5
-rw-r--r--src/url.lua1
-rw-r--r--test/smtptest.lua2
-rw-r--r--test/testclnt.lua12
-rw-r--r--test/testsrvr.lua6
-rw-r--r--test/tftptest.lua22
-rw-r--r--test/urltest.lua3
31 files changed, 163 insertions, 77 deletions
diff --git a/TODO b/TODO
index 50031b1..25d2586 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,5 @@
1- Inicializaccao das classes pode falhar? 1- Inicializaccao das classes pode falhar?
2- Ajeitar melhor a hierarquia de classes. Ajeitar o file...
2 3
3* Como mostrar um erro em lua_socketlibopen()... 4* Como mostrar um erro em lua_socketlibopen()...
4* O location do "redirect" pode ser relativo ao servidor atual (não pode, 5* O location do "redirect" pode ser relativo ao servidor atual (não pode,
diff --git a/etc/check-links.lua b/etc/check-links.lua
index 0dca27c..705c0ce 100644
--- a/etc/check-links.lua
+++ b/etc/check-links.lua
@@ -1,3 +1,7 @@
1-----------------------------------------------------------------------------
2-- Little program that checks links in HTML files
3-- LuaSocket 1.5 sample files.
4-----------------------------------------------------------------------------
1socket.http.TIMEOUT = 10 5socket.http.TIMEOUT = 10
2 6
3cache = {} 7cache = {}
@@ -14,7 +18,7 @@ end
14 18
15function getstatus(url) 19function getstatus(url)
16 local parsed = socket.url.parse(url, { scheme = "file" }) 20 local parsed = socket.url.parse(url, { scheme = "file" })
17 if cache[url] then return cache[url].res end 21 if cache[url] then return cache[url] end
18 local res 22 local res
19 if parsed.scheme == "http" then 23 if parsed.scheme == "http" then
20 local request = { url = url } 24 local request = { url = url }
@@ -34,7 +38,7 @@ function getstatus(url)
34 res = nil 38 res = nil
35 else res = error end 39 else res = error end
36 else res = string.format("unhandled scheme '%s'", parsed.scheme) end 40 else res = string.format("unhandled scheme '%s'", parsed.scheme) end
37 cache[url] = { res = res } 41 cache[url] = res
38 return res 42 return res
39end 43end
40 44
diff --git a/etc/dict.lua b/etc/dict.lua
index 4685ca1..6790cab 100644
--- a/etc/dict.lua
+++ b/etc/dict.lua
@@ -1,12 +1,16 @@
1-----------------------------------------------------------------------------
2-- Little program to download DICT word definitions
3-- LuaSocket 1.5 sample files
4-----------------------------------------------------------------------------
1function get_status(sock, valid) 5function get_status(sock, valid)
2 local line, err = sock:receive() 6 local line, err = sock:receive()
3 local code, par 7 local code, par
4 if not line then sock:close() return err end 8 if not line then sock:close() return err end
5 _, _, code = strfind(line, "^(%d%d%d)") 9 _, _, code = string.find(line, "^(%d%d%d)")
6 code = tonumber(code) 10 code = tonumber(code)
7 if code ~= valid then return code end 11 if code ~= valid then return code end
8 if code == 150 then 12 if code == 150 then
9 _,_,_, par = strfind(line, "^(%d%d%d) (%d*)") 13 _,_,_, par = string.find(line, "^(%d%d%d) (%d*)")
10 par = tonumber(par) 14 par = tonumber(par)
11 end 15 end
12 return nil, par 16 return nil, par
@@ -24,7 +28,7 @@ function get_def(sock)
24end 28end
25 29
26function dict_open() 30function dict_open()
27 local sock, err = connect("dict.org", 2628) 31 local sock, err = socket.connect("dict.org", 2628)
28 if not sock then return nil, err end 32 if not sock then return nil, err end
29 sock:timeout(10) 33 sock:timeout(10)
30 local code, par = get_status(sock, 220) 34 local code, par = get_status(sock, 220)
@@ -48,7 +52,7 @@ function dict_define(sock, word, dict)
48 end 52 end
49 code, par = get_status(sock, 250) 53 code, par = get_status(sock, 250)
50 if code then return nil, code end 54 if code then return nil, code end
51 return gsub(defs, "%s%s$", "") 55 return string.gsub(defs, "%s%s$", "")
52end 56end
53 57
54function dict_close(sock) 58function dict_close(sock)
@@ -65,3 +69,10 @@ function dict_get(word, dict)
65 dict_close(sock) 69 dict_close(sock)
66 return defs, err 70 return defs, err
67end 71end
72
73if arg and arg[1] then
74 defs, err = dict_get(arg[1], arg[2])
75 print(defs or err)
76else
77 io.write("Usage:\n luasocket dict.lua <word> [<dictionary>]\n")
78end
diff --git a/etc/get.lua b/etc/get.lua
index 33da653..af46c16 100644
--- a/etc/get.lua
+++ b/etc/get.lua
@@ -1,3 +1,7 @@
1-----------------------------------------------------------------------------
2-- Little program to download files from URLs
3-- LuaSocket 1.5 sample files
4-----------------------------------------------------------------------------
1-- formats a number of seconds into human readable form 5-- formats a number of seconds into human readable form
2function nicetime(s) 6function nicetime(s)
3 local l = "s" 7 local l = "s"
@@ -63,15 +67,15 @@ function receive2disk(file, size)
63 size = size 67 size = size
64 } 68 }
65 local receive_cb = function(chunk, err) 69 local receive_cb = function(chunk, err)
66 local dt = socket._time() - %aux.start -- elapsed time since start 70 local dt = socket._time() - aux.start -- elapsed time since start
67 if not chunk or chunk == "" then 71 if not chunk or chunk == "" then
68 io.write("\n") 72 io.write("\n")
69 aux.file:close() 73 aux.file:close()
70 return 74 return
71 end 75 end
72 aux.file:write(chunk) 76 aux.file:write(chunk)
73 aux.got = aux.got + string.len(chunk) -- total bytes received 77 aux.got = aux.got + string.len(chunk) -- total bytes received
74 if dt < 0.1 then return 1 end -- not enough time for estimate 78 if dt < 0.1 then return 1 end -- not enough time for estimate
75 io.write("\r", gauge(aux.got, dt, aux.size)) 79 io.write("\r", gauge(aux.got, dt, aux.size))
76 return 1 80 return 1
77 end 81 end
@@ -122,7 +126,7 @@ function getschemeandname(url, name)
122 return parsed.scheme, name 126 return parsed.scheme, name
123end 127end
124 128
125-- gets a file either by http or url, saving as name 129-- gets a file either by http or ftp, saving as <name>
126function get(url, name) 130function get(url, name)
127 local scheme 131 local scheme
128 scheme, name = getschemeandname(url, name) 132 scheme, name = getschemeandname(url, name)
diff --git a/samples/daytimeclnt.lua b/samples/daytimeclnt.lua
index 1107c6a..000dfd5 100644
--- a/samples/daytimeclnt.lua
+++ b/samples/daytimeclnt.lua
@@ -4,11 +4,11 @@ if arg then
4 host = arg[1] or host 4 host = arg[1] or host
5 port = arg[2] or port 5 port = arg[2] or port
6end 6end
7host = toip(host) 7host = socket.toip(host)
8udp = udpsocket() 8udp = socket.udp()
9print("Using host '" ..host.. "' and port " ..port.. "...") 9print("Using host '" ..host.. "' and port " ..port.. "...")
10err = udp:sendto("anything", host, port) 10err = udp:sendto("anything", host, port)
11if err then print(err) exit() end 11if err then print(err) exit() end
12dgram, err = udp:receive() 12dgram, err = udp:receive()
13if not dgram then print(err) exit() end 13if not dgram then print(err) exit() end
14write(dgram) 14io.write(dgram)
diff --git a/samples/echoclnt.lua b/samples/echoclnt.lua
index 043b2f0..cd8b450 100644
--- a/samples/echoclnt.lua
+++ b/samples/echoclnt.lua
@@ -4,18 +4,18 @@ if arg then
4 host = arg[1] or host 4 host = arg[1] or host
5 port = arg[2] or port 5 port = arg[2] or port
6end 6end
7host = toip(host) 7host = socket.toip(host)
8udp, err = udpsocket() 8udp, err = socket.udp()
9if not udp then print(err) exit() end 9if not udp then print(err) exit() end
10err = udp:setpeername(host, port) 10err = udp:setpeername(host, port)
11if err then print(err) exit() end 11if err then print(err) exit() end
12print("Using host '" ..host.. "' and port " .. port .. "...") 12print("Using host '" ..host.. "' and port " .. port .. "...")
13while 1 do 13while 1 do
14 line = read() 14 line = io.read()
15 if not line then exit() end 15 if not line then os.exit() end
16 err = udp:send(line) 16 err = udp:send(line)
17 if err then print(err) exit() end 17 if err then print(err) os.exit() end
18 dgram, err = udp:receive() 18 dgram, err = udp:receive()
19 if not dgram then print(err) exit() end 19 if not dgram then print(err) os.exit() end
20 print(dgram) 20 print(dgram)
21end 21end
diff --git a/samples/echosrvr.lua b/samples/echosrvr.lua
index 330f9e6..6117557 100644
--- a/samples/echosrvr.lua
+++ b/samples/echosrvr.lua
@@ -5,10 +5,10 @@ if arg then
5 port = arg[2] or port 5 port = arg[2] or port
6end 6end
7print("Binding to host '" ..host.. "' and port " ..port.. "...") 7print("Binding to host '" ..host.. "' and port " ..port.. "...")
8udp, err = udpsocket() 8udp, err = socket.udp()
9if not udp then print(err) exit() end 9if not udp then print(err) os.exit() end
10err = udp:setsockname(host, port) 10err = udp:setsockname(host, port)
11if err then print(err) exit() end 11if err then print(err) os.exit() end
12udp:timeout(5) 12udp:timeout(5)
13ip, port = udp:getsockname() 13ip, port = udp:getsockname()
14print("Waiting packets on " .. ip .. ":" .. port .. "...") 14print("Waiting packets on " .. ip .. ":" .. port .. "...")
diff --git a/samples/listener.lua b/samples/listener.lua
index 8e2c7ce..c035ab2 100644
--- a/samples/listener.lua
+++ b/samples/listener.lua
@@ -1,3 +1,7 @@
1-----------------------------------------------------------------------------
2-- Little program to dump lines received at a given port
3-- LuaSocket 1.5 sample files
4-----------------------------------------------------------------------------
1host = host or "*" 5host = host or "*"
2port = port or 8080 6port = port or 8080
3if arg then 7if arg then
@@ -5,7 +9,7 @@ if arg then
5 port = arg[2] or port 9 port = arg[2] or port
6end 10end
7print("Binding to host '" ..host.. "' and port " ..port.. "...") 11print("Binding to host '" ..host.. "' and port " ..port.. "...")
8s, e = bind(host, port) 12s, e = socket.bind(host, port)
9if not s then 13if not s then
10 print(e) 14 print(e)
11 exit() 15 exit()
diff --git a/src/buffer.c b/src/buffer.c
index 2938b52..73df8b3 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3,6 +3,8 @@
3* Lua methods: 3* Lua methods:
4* send: unbuffered send using C base_send 4* send: unbuffered send using C base_send
5* receive: buffered read using C base_receive 5* receive: buffered read using C base_receive
6*
7* RCS ID: $Id$
6\*=========================================================================*/ 8\*=========================================================================*/
7#include <lua.h> 9#include <lua.h>
8#include <lauxlib.h> 10#include <lauxlib.h>
diff --git a/src/buffer.h b/src/buffer.h
index 7463a67..4943e3b 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1,5 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Buffered input/output routines 2* Buffered input/output routines
3*
3* RCS ID: $Id$ 4* RCS ID: $Id$
4\*=========================================================================*/ 5\*=========================================================================*/
5#ifndef BUF_H_ 6#ifndef BUF_H_
@@ -16,7 +17,7 @@
16\*-------------------------------------------------------------------------*/ 17\*-------------------------------------------------------------------------*/
17typedef struct t_buf_tag { 18typedef struct t_buf_tag {
18 size_t buf_first, buf_last; 19 size_t buf_first, buf_last;
19 uchar buf_data[BUF_SIZE]; 20 char buf_data[BUF_SIZE];
20 p_base buf_base; 21 p_base buf_base;
21} t_buf; 22} t_buf;
22typedef t_buf *p_buf; 23typedef t_buf *p_buf;
diff --git a/src/ftp.lua b/src/ftp.lua
index f6fffbb..4017eb5 100644
--- a/src/ftp.lua
+++ b/src/ftp.lua
@@ -2,7 +2,6 @@
2-- FTP support for the Lua language 2-- FTP support for the Lua language
3-- LuaSocket 1.5 toolkit. 3-- LuaSocket 1.5 toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- Date: 26/12/2000
6-- Conforming to: RFC 959, LTN7 5-- Conforming to: RFC 959, LTN7
7-- RCS ID: $Id$ 6-- RCS ID: $Id$
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/http.lua b/src/http.lua
index 3275e3b..59645ee 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -2,7 +2,6 @@
2-- HTTP/1.1 client support for the Lua language. 2-- HTTP/1.1 client support for the Lua language.
3-- LuaSocket 1.5 toolkit. 3-- LuaSocket 1.5 toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- Date: 26/12/2000
6-- Conforming to: RFC 2616, LTN7 5-- Conforming to: RFC 2616, LTN7
7-- RCS ID: $Id$ 6-- RCS ID: $Id$
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/inet.c b/src/inet.c
index eb4124b..341c60e 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -1,11 +1,14 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Internet domain class 2* Internet domain class: inherits from the Socket class, and implement
3* a few methods shared by all internet related objects
3* Lua methods: 4* Lua methods:
4* getpeername: gets socket peer ip address and port 5* getpeername: gets socket peer ip address and port
5* getsockname: gets local socket ip address and port 6* getsockname: gets local socket ip address and port
6* Global Lua fuctions: 7* Global Lua fuctions:
7* toip: gets resolver info on host name 8* toip: gets resolver info on host name
8* tohostname: gets resolver info on dotted-quad 9* tohostname: gets resolver info on dotted-quad
10*
11* RCS ID: $Id$
9\*=========================================================================*/ 12\*=========================================================================*/
10#include <string.h> 13#include <string.h>
11 14
@@ -145,7 +148,7 @@ static int inet_lua_getpeername(lua_State *L)
145{ 148{
146 p_sock sock = (p_sock) lua_touserdata(L, 1); 149 p_sock sock = (p_sock) lua_touserdata(L, 1);
147 struct sockaddr_in peer; 150 struct sockaddr_in peer;
148 int peer_len = sizeof(peer); 151 size_t peer_len = sizeof(peer);
149 if (getpeername(sock->fd, (SA *) &peer, &peer_len) < 0) { 152 if (getpeername(sock->fd, (SA *) &peer, &peer_len) < 0) {
150 lua_pushnil(L); 153 lua_pushnil(L);
151 return 1; 154 return 1;
@@ -167,7 +170,7 @@ static int inet_lua_getsockname(lua_State *L)
167{ 170{
168 p_sock sock = (p_sock) lua_touserdata(L, 1); 171 p_sock sock = (p_sock) lua_touserdata(L, 1);
169 struct sockaddr_in local; 172 struct sockaddr_in local;
170 int local_len = sizeof(local); 173 size_t local_len = sizeof(local);
171 if (getsockname(sock->fd, (SA *) &local, &local_len) < 0) { 174 if (getsockname(sock->fd, (SA *) &local, &local_len) < 0) {
172 lua_pushnil(L); 175 lua_pushnil(L);
173 return 1; 176 return 1;
diff --git a/src/inet.h b/src/inet.h
index 3b0453e..93fcedf 100644
--- a/src/inet.h
+++ b/src/inet.h
@@ -1,5 +1,7 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Internet domain class 2* Internet domain class: inherits from the Socket class, and implement
3* a few methods shared by all internet related objects
4*
3* RCS ID: $Id$ 5* RCS ID: $Id$
4\*=========================================================================*/ 6\*=========================================================================*/
5#ifndef INET_H_ 7#ifndef INET_H_
diff --git a/src/luasocket.c b/src/luasocket.c
index f6d1df7..358b25e 100644
--- a/src/luasocket.c
+++ b/src/luasocket.c
@@ -63,6 +63,13 @@ LUASOCKET_API int lua_socketlibopen(lua_State *L)
63 lua_dofile(L, "http.lua"); 63 lua_dofile(L, "http.lua");
64 lua_dofile(L, "smtp.lua"); 64 lua_dofile(L, "smtp.lua");
65 lua_dofile(L, "ftp.lua"); 65 lua_dofile(L, "ftp.lua");
66#else
67#include "concat.loh"
68#include "code.loh"
69#include "url.loh"
70#include "http.loh"
71#include "smtp.loh"
72#include "ftp.loh"
66#endif 73#endif
67 return 0; 74 return 0;
68} 75}
diff --git a/src/select.c b/src/select.c
index 4dcfd26..6afdb87 100644
--- a/src/select.c
+++ b/src/select.c
@@ -1,6 +1,13 @@
1/*=========================================================================*\
2* Select implementation
3* Global Lua fuctions:
4* select: waits until socket ready
5* RCS ID: $Id$
6\*=========================================================================*/
1#include <lua.h> 7#include <lua.h>
2#include <lauxlib.h> 8#include <lauxlib.h>
3 9
10#include "luasocket.h"
4#include "lspriv.h" 11#include "lspriv.h"
5#include "lsselect.h" 12#include "lsselect.h"
6#include "lsfd.h" 13#include "lsfd.h"
@@ -33,10 +40,17 @@ void select_open(lua_State *L)
33{ 40{
34 /* push select auxiliar lua function and register 41 /* push select auxiliar lua function and register
35 * select_lua_select with it as an upvalue */ 42 * select_lua_select with it as an upvalue */
36 luaL_loadfile(L, "lsselect.lua"); 43#ifdef LUASOCKET_DEBUG
37 lua_call(L, 0, 1); 44 lua_dofile(L, "lsselect.lua");
45#else
46#include "lsselect.loh"
47#endif
48 lua_getglobal(L, LUASOCKET_LIBNAME);
49 lua_pushstring(L, "_select");
50 lua_gettable(L, -2);
38 lua_pushcclosure(L, select_lua_select, 1); 51 lua_pushcclosure(L, select_lua_select, 1);
39 priv_newglobal(L, "select"); 52 priv_newglobal(L, "select");
53 lua_pop(L, 1);
40 /* create luasocket(select) table */ 54 /* create luasocket(select) table */
41 lua_pushstring(L, "luasocket(select)"); 55 lua_pushstring(L, "luasocket(select)");
42 lua_newtable(L); 56 lua_newtable(L);
diff --git a/src/select.h b/src/select.h
index c3267ad..2b2ed19 100644
--- a/src/select.h
+++ b/src/select.h
@@ -1,3 +1,7 @@
1/*=========================================================================*\
2* Select implementation
3* RCS ID: $Id$
4\*=========================================================================*/
1#ifndef SLCT_H_ 5#ifndef SLCT_H_
2#define SLCT_H_ 6#define SLCT_H_
3 7
diff --git a/src/smtp.lua b/src/smtp.lua
index 5da9a6f..0ba2b0f 100644
--- a/src/smtp.lua
+++ b/src/smtp.lua
@@ -2,7 +2,6 @@
2-- SMTP support for the Lua language. 2-- SMTP support for the Lua language.
3-- LuaSocket 1.5 toolkit 3-- LuaSocket 1.5 toolkit
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- Date: 26/12/2000
6-- Conforming to: RFC 821, LTN7 5-- Conforming to: RFC 821, LTN7
7-- RCS ID: $Id$ 6-- RCS ID: $Id$
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/socket.h b/src/socket.h
index c9dee20..9972639 100644
--- a/src/socket.h
+++ b/src/socket.h
@@ -1,3 +1,9 @@
1/*=========================================================================*\
2* Socket class: inherits from the File Descriptor class and is here just
3* for extensibility in the future
4*
5* RCS ID: $id$
6\*=========================================================================*/
1#ifndef SOCK_H_ 7#ifndef SOCK_H_
2#define SOCK_H_ 8#define SOCK_H_
3 9
diff --git a/src/timeout.c b/src/timeout.c
index 50a84da..5549c89 100644
--- a/src/timeout.c
+++ b/src/timeout.c
@@ -1,5 +1,10 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Timeout management functions 2* Timeout management functions
3* Global Lua functions:
4* _sleep: (debug mode only)
5* _time: (debug mode only)
6*
7* RCS ID: $Id$
3\*=========================================================================*/ 8\*=========================================================================*/
4#include <lua.h> 9#include <lua.h>
5#include <lauxlib.h> 10#include <lauxlib.h>
@@ -20,10 +25,8 @@
20/*=========================================================================*\ 25/*=========================================================================*\
21* Internal function prototypes 26* Internal function prototypes
22\*=========================================================================*/ 27\*=========================================================================*/
23#ifdef LUASOCKET_DEBUG
24static int tm_lua_time(lua_State *L); 28static int tm_lua_time(lua_State *L);
25static int tm_lua_sleep(lua_State *L); 29static int tm_lua_sleep(lua_State *L);
26#endif
27 30
28/*=========================================================================*\ 31/*=========================================================================*\
29* Exported functions. 32* Exported functions.
@@ -123,12 +126,10 @@ int tm_gettime(void)
123void tm_open(lua_State *L) 126void tm_open(lua_State *L)
124{ 127{
125 (void) L; 128 (void) L;
126#ifdef LUASOCKET_DEBUG
127 lua_pushcfunction(L, tm_lua_time); 129 lua_pushcfunction(L, tm_lua_time);
128 priv_newglobal(L, "_time"); 130 priv_newglobal(L, "_time");
129 lua_pushcfunction(L, tm_lua_sleep); 131 lua_pushcfunction(L, tm_lua_sleep);
130 priv_newglobal(L, "_sleep"); 132 priv_newglobal(L, "_sleep");
131#endif
132} 133}
133 134
134/*=========================================================================*\ 135/*=========================================================================*\
@@ -137,7 +138,6 @@ void tm_open(lua_State *L)
137/*-------------------------------------------------------------------------*\ 138/*-------------------------------------------------------------------------*\
138* Returns the time the system has been up, in secconds. 139* Returns the time the system has been up, in secconds.
139\*-------------------------------------------------------------------------*/ 140\*-------------------------------------------------------------------------*/
140#ifdef LUASOCKET_DEBUG
141static int tm_lua_time(lua_State *L) 141static int tm_lua_time(lua_State *L)
142{ 142{
143 lua_pushnumber(L, tm_gettime()/1000.0); 143 lua_pushnumber(L, tm_gettime()/1000.0);
@@ -157,4 +157,3 @@ int tm_lua_sleep(lua_State *L)
157#endif 157#endif
158 return 0; 158 return 0;
159} 159}
160#endif
diff --git a/src/timeout.h b/src/timeout.h
index af7e591..1dc0a5a 100644
--- a/src/timeout.h
+++ b/src/timeout.h
@@ -1,3 +1,8 @@
1/*=========================================================================*\
2* Timeout management functions
3*
4* RCS ID: $Id$
5\*=========================================================================*/
1#ifndef _TM_H 6#ifndef _TM_H
2#define _TM_H 7#define _TM_H
3 8
diff --git a/src/udp.c b/src/udp.c
index fd569c6..361816c 100644
--- a/src/udp.c
+++ b/src/udp.c
@@ -1,5 +1,17 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* UDP socket object implementation (inherits from sock and inet) 2* UDP class: inherits from Socked and Internet domain classes and provides
3* all the functionality for UDP objects.
4* Lua methods:
5* send: using compat module
6* sendto: using compat module
7* receive: using compat module
8* receivefrom: using compat module
9* setpeername: using internet module
10* setsockname: using internet module
11* Global Lua functions:
12* udp: creates the udp object
13*
14* RCS ID: $Id$
3\*=========================================================================*/ 15\*=========================================================================*/
4#include <string.h> 16#include <string.h>
5 17
@@ -21,7 +33,7 @@ static int udp_lua_receivefrom(lua_State *L);
21static int udp_lua_setpeername(lua_State *L); 33static int udp_lua_setpeername(lua_State *L);
22static int udp_lua_setsockname(lua_State *L); 34static int udp_lua_setsockname(lua_State *L);
23 35
24static int udp_global_udpsocket(lua_State *L); 36static int udp_global_udp(lua_State *L);
25 37
26static struct luaL_reg funcs[] = { 38static struct luaL_reg funcs[] = {
27 {"send", udp_lua_send}, 39 {"send", udp_lua_send},
@@ -44,7 +56,7 @@ void udp_open(lua_State *L)
44 priv_newclass(L, UDP_CLASS); 56 priv_newclass(L, UDP_CLASS);
45 udp_inherit(L, UDP_CLASS); 57 udp_inherit(L, UDP_CLASS);
46 /* declare global functions */ 58 /* declare global functions */
47 lua_pushcfunction(L, udp_global_udpsocket); 59 lua_pushcfunction(L, udp_global_udp);
48 priv_newglobal(L, "udp"); 60 priv_newglobal(L, "udp");
49 for (i = 0; i < sizeof(funcs)/sizeof(funcs[0]); i++) 61 for (i = 0; i < sizeof(funcs)/sizeof(funcs[0]); i++)
50 priv_newglobalmethod(L, funcs[i].name); 62 priv_newglobalmethod(L, funcs[i].name);
@@ -99,7 +111,7 @@ p_udp udp_push(lua_State *L)
99* On success: udp socket 111* On success: udp socket
100* On error: nil, followed by an error message 112* On error: nil, followed by an error message
101\*-------------------------------------------------------------------------*/ 113\*-------------------------------------------------------------------------*/
102static int udp_global_udpsocket(lua_State *L) 114static int udp_global_udp(lua_State *L)
103{ 115{
104 int oldtop = lua_gettop(L); 116 int oldtop = lua_gettop(L);
105 p_udp udp = udp_push(L); 117 p_udp udp = udp_push(L);
@@ -134,7 +146,7 @@ static int udp_global_udpsocket(lua_State *L)
134static int udp_lua_receive(lua_State *L) 146static int udp_lua_receive(lua_State *L)
135{ 147{
136 p_udp udp = (p_udp) lua_touserdata(L, 1); 148 p_udp udp = (p_udp) lua_touserdata(L, 1);
137 unsigned char buffer[UDP_DATAGRAMSIZE]; 149 char buffer[UDP_DATAGRAMSIZE];
138 size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); 150 size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
139 int err; 151 int err;
140 p_tm tm = &udp->base_tm; 152 p_tm tm = &udp->base_tm;
@@ -162,8 +174,8 @@ static int udp_lua_receivefrom(lua_State *L)
162 p_udp udp = (p_udp) lua_touserdata(L, 1); 174 p_udp udp = (p_udp) lua_touserdata(L, 1);
163 p_tm tm = &udp->base_tm; 175 p_tm tm = &udp->base_tm;
164 struct sockaddr_in peer; 176 struct sockaddr_in peer;
165 int peer_len = sizeof(peer); 177 size_t peer_len = sizeof(peer);
166 unsigned char buffer[UDP_DATAGRAMSIZE]; 178 char buffer[UDP_DATAGRAMSIZE];
167 size_t wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); 179 size_t wanted = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
168 size_t got; 180 size_t got;
169 int err; 181 int err;
diff --git a/src/udp.h b/src/udp.h
index 3c82c29..928a99f 100644
--- a/src/udp.h
+++ b/src/udp.h
@@ -1,3 +1,9 @@
1/*=========================================================================*\
2* UDP class: inherits from Socked and Internet domain classes and provides
3* all the functionality for UDP objects.
4*
5* RCS ID: $Id$
6\*=========================================================================*/
1#ifndef UDP_H_ 7#ifndef UDP_H_
2#define UDP_H_ 8#define UDP_H_
3 9
diff --git a/src/unix.c b/src/unix.c
index 511a6bb..23984b0 100644
--- a/src/unix.c
+++ b/src/unix.c
@@ -1,8 +1,11 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Network compatibilization module 2* Network compatibilization module: Unix version
3*
4* RCS ID: $Id$
3\*=========================================================================*/ 5\*=========================================================================*/
4#include <lua.h> 6#include <lua.h>
5#include <lauxlib.h> 7#include <lauxlib.h>
8#include <string.h>
6 9
7#include "lscompat.h" 10#include "lscompat.h"
8 11
@@ -26,7 +29,7 @@ int compat_open(lua_State *L)
26} 29}
27 30
28COMPAT_FD compat_accept(COMPAT_FD s, struct sockaddr *addr, 31COMPAT_FD compat_accept(COMPAT_FD s, struct sockaddr *addr,
29 int *len, int deadline) 32 size_t *len, int deadline)
30{ 33{
31 struct timeval tv; 34 struct timeval tv;
32 fd_set fds; 35 fd_set fds;
@@ -72,7 +75,7 @@ int compat_send(COMPAT_FD c, cchar *data, size_t count, size_t *sent,
72} 75}
73 76
74int compat_sendto(COMPAT_FD c, cchar *data, size_t count, size_t *sent, 77int compat_sendto(COMPAT_FD c, cchar *data, size_t count, size_t *sent,
75 int deadline, SA *addr, int len) 78 int deadline, SA *addr, size_t len)
76{ 79{
77 struct timeval tv; 80 struct timeval tv;
78 fd_set fds; 81 fd_set fds;
@@ -104,7 +107,7 @@ int compat_sendto(COMPAT_FD c, cchar *data, size_t count, size_t *sent,
104 } 107 }
105} 108}
106 109
107int compat_recv(COMPAT_FD c, uchar *data, size_t count, size_t *got, 110int compat_recv(COMPAT_FD c, char *data, size_t count, size_t *got,
108 int deadline) 111 int deadline)
109{ 112{
110 struct timeval tv; 113 struct timeval tv;
@@ -131,8 +134,8 @@ int compat_recv(COMPAT_FD c, uchar *data, size_t count, size_t *got,
131 } 134 }
132} 135}
133 136
134int compat_recvfrom(COMPAT_FD c, uchar *data, size_t count, size_t *got, 137int compat_recvfrom(COMPAT_FD c, char *data, size_t count, size_t *got,
135 int deadline, SA *addr, int *len) 138 int deadline, SA *addr, size_t *len)
136{ 139{
137 struct timeval tv; 140 struct timeval tv;
138 fd_set fds; 141 fd_set fds;
diff --git a/src/unix.h b/src/unix.h
index 5f89569..863e478 100644
--- a/src/unix.h
+++ b/src/unix.h
@@ -1,3 +1,8 @@
1/*=========================================================================*\
2* Network compatibilization module: Unix version
3*
4* RCS ID: $Id$
5\*=========================================================================*/
1#ifndef UNIX_H_ 6#ifndef UNIX_H_
2#define UNIX_H_ 7#define UNIX_H_
3 8
diff --git a/src/url.lua b/src/url.lua
index 2cf9669..06de9d3 100644
--- a/src/url.lua
+++ b/src/url.lua
@@ -2,7 +2,6 @@
2-- URI parsing, composition and relative URL resolution 2-- URI parsing, composition and relative URL resolution
3-- LuaSocket 1.5 toolkit. 3-- LuaSocket 1.5 toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- Date: 20/7/2001
6-- Conforming to: RFC 2396, LTN7 5-- Conforming to: RFC 2396, LTN7
7-- RCS ID: $Id$ 6-- RCS ID: $Id$
8---------------------------------------------------------------------------- 7----------------------------------------------------------------------------
diff --git a/test/smtptest.lua b/test/smtptest.lua
index 1bba27f..27ba400 100644
--- a/test/smtptest.lua
+++ b/test/smtptest.lua
@@ -60,7 +60,7 @@ local empty = function()
60end 60end
61 61
62local get = function() 62local get = function()
63 s = "" 63 local s = ""
64 for i,v in ipairs(files) do 64 for i,v in ipairs(files) do
65 s = s .. "\n" .. readfile(v) 65 s = s .. "\n" .. readfile(v)
66 end 66 end
diff --git a/test/testclnt.lua b/test/testclnt.lua
index 7c65823..3e80a36 100644
--- a/test/testclnt.lua
+++ b/test/testclnt.lua
@@ -1,5 +1,5 @@
1HOST = HOST or "localhost" 1host = host or "localhost"
2PORT = PORT or "8080" 2port = port or "8080"
3 3
4function pass(...) 4function pass(...)
5 local s = string.format(unpack(arg)) 5 local s = string.format(unpack(arg))
@@ -83,14 +83,14 @@ function tcpreconnect()
83 if data then data:close() data = nil end 83 if data then data:close() data = nil end
84 data = server:accept() 84 data = server:accept()
85 ]] 85 ]]
86 data, err = socket.connect(HOST, PORT) 86 data, err = socket.connect(host, port)
87 if not data then fail(err) 87 if not data then fail(err)
88 else pass("connected!") end 88 else pass("connected!") end
89end 89end
90reconnect = tcpreconnect 90reconnect = tcpreconnect
91 91
92pass("attempting control connection...") 92pass("attempting control connection...")
93control, err = socket.connect(HOST, PORT) 93control, err = socket.connect(host, port)
94if err then fail(err) 94if err then fail(err)
95else pass("connected!") end 95else pass("connected!") end
96 96
@@ -104,10 +104,10 @@ function empty_connect()
104 if data then data:close() data = nil end 104 if data then data:close() data = nil end
105 data = server:accept() 105 data = server:accept()
106 ]] 106 ]]
107 data, err = socket.connect("", PORT) 107 data, err = socket.connect("", port)
108 if not data then 108 if not data then
109 pass("ok") 109 pass("ok")
110 data = socket.connect(HOST, PORT) 110 data = socket.connect(host, port)
111 else fail("should not have connected!") end 111 else fail("should not have connected!") end
112end 112end
113 113
diff --git a/test/testsrvr.lua b/test/testsrvr.lua
index 141c058..fb77ea5 100644
--- a/test/testsrvr.lua
+++ b/test/testsrvr.lua
@@ -1,7 +1,7 @@
1HOST = HOST or "localhost" 1host = host or "localhost"
2PORT = PORT or "8080" 2port = port or "8080"
3 3
4server, error = socket.bind(HOST, PORT) 4server, error = socket.bind(host, port)
5if not server then print("server: " .. tostring(error)) os.exit() end 5if not server then print("server: " .. tostring(error)) os.exit() end
6while 1 do 6while 1 do
7 print("server: waiting for client connection..."); 7 print("server: waiting for client connection...");
diff --git a/test/tftptest.lua b/test/tftptest.lua
index b29657a..a435ad4 100644
--- a/test/tftptest.lua
+++ b/test/tftptest.lua
@@ -1,25 +1,23 @@
1-- load tftpclng.lua 1-- load tftpclnt.lua
2assert(dofile("../examples/tftpclnt.lua")) 2dofile("tftpclnt.lua")
3 3
4-- needs tftp server running on localhost, with root pointing to 4-- needs tftp server running on localhost, with root pointing to
5-- /home/i/diego/public/html/luasocket/test 5-- a directory with index.html in it
6 6
7function readfile(file) 7function readfile(file)
8 local f = openfile("file", "rb") 8 local f = io.open(file, "r")
9 local a 9 if not f then return nil end
10 if f then 10 local a = f:read("*a")
11 a = read(f, "*a") 11 f:close()
12 closefile(f) 12 return a
13 end
14 return a
15end 13end
16 14
17host = host or "localhost" 15host = host or "localhost"
18print("downloading") 16print("downloading")
19err = tftp_get(host, 69, "index.html", "index.got") 17err = tftp_get(host, 69, "index.html", "index.got")
20assert(not err, err) 18assert(not err, err)
21original = readfile("index.index") 19original = readfile("test/index.html")
22retrieved = readfile("index.got") 20retrieved = readfile("index.got")
23remove("index.got") 21os.remove("index.got")
24assert(original == retrieved, "files differ!") 22assert(original == retrieved, "files differ!")
25print("passed") 23print("passed")
diff --git a/test/urltest.lua b/test/urltest.lua
index b97844d..7b1f0c0 100644
--- a/test/urltest.lua
+++ b/test/urltest.lua
@@ -1,5 +1,4 @@
1 1dofile("noglobals.lua")
2
3 2
4local check_build_url = function(parsed) 3local check_build_url = function(parsed)
5 local built = socket.url.build(parsed) 4 local built = socket.url.build(parsed)