socsvn commit: r271958 - soc2014/pedrosouza/lua_loader/head/sys/boot/common

pedrosouza at FreeBSD.org pedrosouza at FreeBSD.org
Tue Aug 5 20:09:15 UTC 2014


Author: pedrosouza
Date: Tue Aug  5 20:09:13 2014
New Revision: 271958
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271958

Log:
  Added load_config to interp struct which loads the dafault config file

Modified:
  soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.c
  soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.h
  soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_forth.c
  soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_lua.c
  soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_simple.c

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.c
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.c	Tue Aug  5 19:43:44 2014	(r271957)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.c	Tue Aug  5 20:09:13 2014	(r271958)
@@ -50,6 +50,14 @@
 	&boot_interp_simple;
 #endif
 
+int
+default_load_config(void *ctx)
+{
+	if (INTERP_INCL(interp, "/boot/loader.rc") != CMD_OK)
+		return INTERP_INCL(interp, "/boot/boot.conf");
+	return CMD_OK;
+}
+
 /*
 * Interactive mode
 */
@@ -63,8 +71,7 @@
 	/*
 	* Read our default configuration
 	*/
-	if (INTERP_INCL(interp, "/boot/loader.rc") != CMD_OK)
-		INTERP_INCL(interp, "/boot/boot.conf");
+	INTERP_LOAD_DEF_CONFIG(interp);
 	printf("\n");
 	/*
 	* Before interacting, we might want to autoboot.

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.h
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.h	Tue Aug  5 19:43:44 2014	(r271957)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp.h	Tue Aug  5 20:09:13 2014	(r271958)
@@ -29,11 +29,13 @@
 typedef void	interp_init_t(void *ctx);
 typedef int	interp_run_t(void *ctx, const char *input);
 typedef int	interp_incl_t(void *ctx, const char *filename);
+typedef int	interp_load_def_t(void *ctx);		// load default configuration files
 
 struct interp {
 	interp_init_t	*init;
 	interp_run_t	*run;
 	interp_incl_t	*incl;
+	interp_load_def_t *load_configs;
 	void		*context;
 };
 
@@ -49,6 +51,9 @@
 #define	INTERP_INCL(i, filename)	\
 	((i)->incl(((i)->context), filename))
 
+#define	INTERP_LOAD_DEF_CONFIG(i)	\
+	((i)->load_configs(((i)->context)))
+
 
 
 extern struct interp	boot_interp_simple;
@@ -61,6 +66,15 @@
 int perform(int argc, char *argv[]);
 void prompt(void);
 
+/*
+ * Default config loader for interp_simple & intep_forth
+ * Use it if your interpreter does not use a custom config
+ * file.
+ *
+ * Calls interp->include with 'loader.rc' or 'boot.conf'
+ */
+int default_load_config(void *ctx);
+
 struct includeline 
 {
     struct includeline	*next;

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_forth.c
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_forth.c	Tue Aug  5 19:43:44 2014	(r271957)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_forth.c	Tue Aug  5 20:09:13 2014	(r271958)
@@ -354,5 +354,6 @@
 	.init = interp_forth_init,
 	.run = interp_forth_run,
 	.incl = interp_forth_incl,
-	.context = &forth_softc,
+	.load_configs = default_load_config,
+	.context = &forth_softc
 };

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_lua.c
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_lua.c	Tue Aug  5 19:43:44 2014	(r271957)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_lua.c	Tue Aug  5 20:09:13 2014	(r271958)
@@ -106,10 +106,21 @@
 	return ldo_file(softc->luap, filename);
 }
 
+/*
+* To avoid conflicts lua uses loader.lua instead of 
+* loader.rc/boot.conf  to load its configurations.
+*/
+int
+interp_lua_load_config(void *ctx)
+{
+	return interp_lua_incl(ctx, "/boot/loader.lua");
+}
+
 
 struct interp boot_interp_lua = {
 	.init = interp_lua_init,
 	.run = interp_lua_run,
 	.incl = interp_lua_incl,
-	.context = &lua_softc,
+	.load_configs = interp_lua_load_config,
+	.context = &lua_softc
 };

Modified: soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_simple.c
==============================================================================
--- soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_simple.c	Tue Aug  5 19:43:44 2014	(r271957)
+++ soc2014/pedrosouza/lua_loader/head/sys/boot/common/interp_simple.c	Tue Aug  5 20:09:13 2014	(r271958)
@@ -177,6 +177,7 @@
 	.init = interp_simple_init,
 	.run = interp_simple_run,
 	.incl = interp_simple_incl,
-	.context = NULL,
+	.load_configs = default_load_config,
+	.context = NULL
 };
 


More information about the svn-soc-all mailing list