Re: module cleanup [2/n]

Eric Blake <[email protected]>
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Eric Blake on 9/6/2007 4:56 PM:
> - We currently expose the libltdl interface to all clients of m4module.h.  That 
> is poor interface design
> 
> I'm starting a patch series to try to improve several points; the series may be 
> a bit open-ended based on what else I discover.

> split this particular patch into smaller chunks.  I'm applying this:

Oops - I forgot to paste yesterday's changelog entry.

2007-09-06  Eric Blake  <[email protected]>

	Wrap lt_dlhandle in struct m4_module.
	* m4/m4module.h (includes): No longer require clients to know
	about lt_dlhandle.
	(m4_module): New opaque declaration.
	(m4_export): Delete unused type.
	(M4INIT_HANDLER, M4FINISH_HANDLER, m4_module_init_func)
	(m4_module_finish_func, m4_module_load, m4_get_module_name)
	(m4_builtin_find_by_name, m4_builtin_find_by_func): Use new
	wrapper.
	(m4_module_makeresident, m4_module_refcount): New declarations.
	* m4/m4private.h (includes): Move <ltdl.h> here.
	(m4_module): New declaration.  Simple for now, but intended for
	growth.
	(m4__module_open, m4__module_next, m4__module_find)
	(m4__symtab_remove_module_references): Use new wrapper.
	* m4/builtin.c (m4_builtin_find_by_name, m4_builtin_find_by_func):
	Likewise.
	* m4/module.c (m4_get_module_name, m4_module_import)
	(m4_module_load): Likewise.
	(install_builtin_table, install_macro_table): Likewise.  Also,
	change return type since these always returned NULL and no one
	used the result.
	(m4_module_makeresident, m4_module_refcount): New functions.
	(m4_module_unload, m4__module_next, m4__module_find): Use new
	wrapper.
	(m4__module_open): Populate new wrapper, and associate it with the
	lt_dlhandle.
	(m4__module_exit): Use new wrapper.
	(module_remove): Likewise.  Reclaim storage on last use.
	(module_close): Delete, and inline into module_remove.
	* m4/symtab.c (m4__symtab_remove_module_references): Use new
	wrapper.
	* modules/load.c (load_init): Use new API.
	* modules/m4.c (m4_export_table): Kill unused declaration.
	(m4_init): Use new API.
	* modules/shadow.c (shadow_init): Use new API.
	* src/main.c (main): Adjust callers.
	* src/freeze.c (reload_frozen_state): Likewise.
	* tests/modules.at (unload load module): New test.

Also, I missed some spots, hence this part 2:

2007-09-07  Eric Blake  <[email protected]>

	More conversion to m4_module*.
	* src/freeze.c (produce_module_dump, dump_symbol_CB)
	(reload_frozen_state): Use correct type.
	* m4/input.c (struct m4_input_block): Likewise.
	* m4/symtab.c (dump_symbol_CB): Likewise.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             [email protected]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG4btm84KuGfSFAYARAj0QAJ9zTaHLnrJyf/CR47IQHTGor7JEQQCeNeJt
ctkae2WcC20YMtgrswgbW7M=
=SqDC
-----END PGP SIGNATURE-----

_______________________________________________
M4-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/m4-patches
m4.patch284 (text/plain, 3.7 KB)
Index: m4/input.c
===================================================================
RCS file: /sources/m4/m4/m4/input.c,v
retrieving revision 1.68
diff -u -p -r1.68 input.c
--- m4/input.c	7 Aug 2007 03:15:26 -0000	1.68
+++ m4/input.c	7 Sep 2007 20:48:06 -0000
@@ -163,7 +163,7 @@ struct m4_input_block
       struct
 	{
 	  const m4_builtin *builtin;  /* pointer to builtin's function. */
-	  lt_dlhandle handle;	  /* originating module. */
+	  m4_module *handle;	  /* originating module. */
 	  int flags;		  /* flags associated with the builtin. */
 	  m4_hash *arg_signature; /* argument signature for builtin.  */
 	  unsigned int min_args;  /* argv minima for the builtin. */
Index: m4/symtab.c
===================================================================
RCS file: /sources/m4/m4/m4/symtab.c,v
retrieving revision 1.75
diff -u -p -r1.75 symtab.c
--- m4/symtab.c	6 Sep 2007 22:58:26 -0000	1.75
+++ m4/symtab.c	7 Sep 2007 20:48:06 -0000
@@ -709,7 +709,7 @@ dump_symbol_CB (m4_symbol_table *symtab,
 {
   m4_symbol_value *value	= m4_get_symbol_value (symbol);
   int		   flags	= value ? SYMBOL_FLAGS (symbol) : 0;
-  lt_dlhandle      handle	= value ? SYMBOL_HANDLE (symbol) : 0;
+  m4_module *      handle	= value ? SYMBOL_HANDLE (symbol) : NULL;
   const char *     module_name	= handle ? m4_get_module_name (handle) : "NONE";
 
   fprintf (stderr, "%10s: (%d%s) %s=", module_name, flags,
Index: src/freeze.c
===================================================================
RCS file: /sources/m4/m4/src/freeze.c,v
retrieving revision 1.69
diff -u -p -r1.69 freeze.c
--- src/freeze.c	6 Sep 2007 22:58:26 -0000	1.69
+++ src/freeze.c	7 Sep 2007 20:48:06 -0000
@@ -29,7 +29,7 @@
 static	void  produce_mem_dump		(FILE *, const char *, size_t);
 static	void  produce_resyntax_dump	(m4 *, FILE *);
 static	void  produce_syntax_dump	(FILE *, m4_syntax_table *, char);
-static	void  produce_module_dump	(FILE *, lt_dlhandle);
+static	void  produce_module_dump	(FILE *, m4_module *);
 static	void  produce_symbol_dump	(m4 *, FILE *, m4_symbol_table *);
 static	void *dump_symbol_CB		(m4_symbol_table *, const char *,
 					 m4_symbol *, void *);
@@ -131,7 +131,7 @@ produce_syntax_dump (FILE *file, m4_synt
    reloaded from the frozen file.  libltdl stores handles in a push
    down stack, so we need to dump them in the reverse order to that.  */
 static void
-produce_module_dump (FILE *file, lt_dlhandle handle)
+produce_module_dump (FILE *file, m4_module *handle)
 {
   const char *name = m4_get_module_name (handle);
   size_t len = strlen (name);
@@ -159,7 +159,7 @@ static void *
 dump_symbol_CB (m4_symbol_table *symtab, const char *symbol_name,
 		m4_symbol *symbol, void *userdata)
 {
-  lt_dlhandle   handle		= SYMBOL_HANDLE (symbol);
+  m4_module *   handle		= SYMBOL_HANDLE (symbol);
   const char   *module_name	= handle ? m4_get_module_name (handle) : NULL;
   FILE *	file		= (FILE *) userdata;
   size_t	symbol_len	= strlen (symbol_name);
@@ -549,7 +549,7 @@ ill-formed frozen file, version 2 direct
 
 	  /* Enter a macro having a builtin function as a definition.  */
 	  {
-	    lt_dlhandle handle   = 0;
+	    m4_module *handle = NULL;
 	    m4_symbol_value *token;
 
 	    if (number[2] > 0)
@@ -750,14 +750,14 @@ ill-formed frozen file, version 2 direct
 	  /* Enter a macro having an expansion text as a definition.  */
 	  {
 	    m4_symbol_value *token = xzalloc (sizeof *token);
-	    lt_dlhandle handle = 0;
+	    m4_module *handle = NULL;
 
 	    if (number[2] > 0)
 	      handle = m4__module_find (string[2]);
 
 	    m4_set_symbol_value_text (token, xstrdup (string[1]));
-	    VALUE_HANDLE (token)		= handle;
-	    VALUE_MAX_ARGS (token)	= -1;
+	    VALUE_HANDLE (token) = handle;
+	    VALUE_MAX_ARGS (token) = -1;
 
 	    m4_symbol_pushdef (M4SYMTAB, string[0], token);
 	  }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.