PoC support for lua.
authorPierre Habouzit <madcoder@debian.org>
Fri, 9 Mar 2007 23:29:31 +0000 (00:29 +0100)
committerPierre Habouzit <madcoder@debian.org>
Fri, 9 Mar 2007 23:29:31 +0000 (00:29 +0100)
just source ~/.madmutt.lua or ~/.madmutt/cfg.lua

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
init.c
lib-lua/Makefile.am
lib-lua/lib-lua.h
main.c

diff --git a/init.c b/init.c
index da7227d..eb92e17 100644 (file)
--- a/init.c
+++ b/init.c
 #include <lib-lib/lib-lib.h>
 #include <sys/utsname.h>
 
+#include <lib-lua/lib-lua.h>
 #include <lib-sys/unix.h>
 #include <lib-sys/mutt_ssl.h>
-
 #include <lib-ui/curses.h>
 #include <lib-ui/history.h>
 #include <lib-mx/mx.h>
+#include <lib-crypt/crypt.h>
 
 #include "mutt.h"
 #include "keymap.h"
 #include "charset.h"
 #include "thread.h"
-#include <lib-crypt/crypt.h>
 #include "mutt_idna.h"
 
 #if defined (USE_LIBESMTP) && (defined (USE_SSL) || defined (USE_GNUTLS))
@@ -2462,6 +2462,7 @@ void mutt_init (int skip_sys_rc, string_list_t * commands)
     From = rfc822_parse_adrlist (NULL, p);
 
   charset_initialize();
+  mlua_initialize();
 
   /* Set standard defaults */
   hash_map (ConfigOptions, mutt_set_default, 0);
@@ -2533,6 +2534,15 @@ void mutt_init (int skip_sys_rc, string_list_t * commands)
     exit (1);
   }
 
+  /* LUA {{{ */
+  snprintf(buffer, sizeof(buffer), "%s/.madmutt.lua", NONULL(Homedir));
+  if (access(buffer, F_OK) < 0)
+      snprintf(buffer, sizeof(buffer), "%s/.madmutt/cfg.lua", NONULL(Homedir));
+  if (!access(buffer, F_OK)) {
+      need_pause = mlua_wrap(mutt_error, mlua_dofile(buffer));
+  }
+  /* }}} */
+
   if (mutt_execute_commands (commands) != 0)
     need_pause = 1;
 
index 92cd3d2..c30e6bc 100644 (file)
@@ -1,6 +1,7 @@
 noinst_LIBRARIES = liblua.a
 
-liblua_a_SOURCES = lib-lua.h
+liblua_a_SOURCES = lib-lua.h \
+                  runtime.c
 
 noinst_HEADERS   = lib-lua.h
 
index 0a4d859..8983322 100644 (file)
 # include "../config.h"
 #endif
 
+void mlua_initialize(void);
+void mlua_shutdown(void);
+
+int mlua_dofile(const char *filename);
+int mlua_wrap(void (*errfun)(const char *fmt, ...), int status);
 
 #endif
diff --git a/main.c b/main.c
index 1c6982f..f452ba2 100644 (file)
--- a/main.c
+++ b/main.c
@@ -19,6 +19,7 @@
 
 #include <sys/utsname.h>
 
+#include <lib-lua/lib-lua.h>
 #include <lib-sys/mutt_signal.h>
 #include <lib-mime/mime.h>
 #include <lib-ui/curses.h>
@@ -850,5 +851,6 @@ int main (int argc, char **argv)
     mutt_endwin (Errorbuf);
   }
 
+  mlua_shutdown();
   exit (0);
 }