- initial import of revision 374 from cnc
[apt.git] / lua / local / userconfig.c
1
2 #include "config.h"
3
4 #include "lposix.h"
5 #include "lrexlib.h"
6
7 #define LUA_EXTRALIBS \
8         {"posix", luaopen_posix}, \
9         {"rex", luaopen_rex}, \
10
11 #ifdef WITH_LUA_READLINE
12 #define lua_readline    myreadline
13 #define lua_saveline    mysaveline
14
15 #include <ctype.h>
16 #include <readline/readline.h>
17 #include <readline/history.h>
18
19 static int myreadline (lua_State *L, const char *prompt) {
20   char *s=readline(prompt);
21   if (s==NULL)
22     return 0;
23   else {
24     lua_pushstring(L,s);
25     lua_pushliteral(L,"\n");
26     lua_concat(L,2);
27     free(s);
28     return 1;
29   }
30 }
31
32 static void mysaveline (lua_State *L, const char *s) {
33   const char *p;
34   for (p=s; isspace(*p); p++)
35     ;
36   if (*p!=0) {
37     size_t n=strlen(s)-1;
38     if (s[n]!='\n')
39       add_history(s);
40     else {
41       lua_pushlstring(L,s,n);
42       s=lua_tostring(L,-1);
43       add_history(s);
44       lua_remove(L,-1);
45     }
46   }
47 }
48 #endif