dtc: Make some functions local to parser

3 messages, 2 authors, 2008-03-05 · open the first message on its own page

dtc: Make some functions local to parser

From: David Gibson <hidden>
Date: 2008-03-04 04:37:00

* eval_literal() is defined and used only in the parser, so make it
  static.

* The Bison documentation explicitly permits yyerror() to be a
  variadic function, so fold yyerror() and yyerrorf() into a single
  printf-style function.  The combined function is defined and used
  only in the parse, so make it static.

Signed-off-by: David Gibson <redacted>

---
 dtc-parser.y |   14 +++++---------
 srcpos.h     |    3 ---
 2 files changed, 5 insertions(+), 12 deletions(-)

Index: dtc/dtc-parser.y
===================================================================
--- dtc.orig/dtc-parser.y	2008-03-04 15:29:09.000000000 +1100
+++ dtc/dtc-parser.y	2008-03-04 15:31:32.000000000 +1100
@@ -24,12 +24,13 @@
 #include "dtc.h"
 #include "srcpos.h"
 
-int yylex(void);
-unsigned long long eval_literal(const char *s, int base, int bits);
+extern int yylex(void);
 
 extern struct boot_info *the_boot_info;
 extern int treesource_error;
 
+static void yyerror(char const *, ...) __attribute__((format(printf, 1, 2)));
+static unsigned long long eval_literal(const char *s, int base, int bits);
 %}
 
 %union {
@@ -308,7 +309,7 @@ label:
 
 %%
 
-void yyerrorf(char const *s, ...)
+static void yyerror(char const *s, ...)
 {
 	const char *fname = srcpos_file ? srcpos_file->name : "<no-file>";
 	va_list va;
@@ -325,12 +326,7 @@ void yyerrorf(char const *s, ...)
 	va_end(va);
 }
 
-void yyerror (char const *s)
-{
-	yyerrorf("%s", s);
-}
-
-unsigned long long eval_literal(const char *s, int base, int bits)
+static unsigned long long eval_literal(const char *s, int base, int bits)
 {
 	unsigned long long val;
 	char *e;
Index: dtc/srcpos.h
===================================================================
--- dtc.orig/srcpos.h	2008-03-04 15:30:06.000000000 +1100
+++ dtc/srcpos.h	2008-03-04 15:30:09.000000000 +1100
@@ -70,9 +70,6 @@ typedef struct YYLTYPE {
 
 
 
-extern void yyerror(char const *);
-extern void yyerrorf(char const *, ...) __attribute__((format(printf, 1, 2)));
-
 extern struct dtc_file *srcpos_file;
 
 extern void push_input_file(const char *filename);
-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Re: dtc: Make some functions local to parser

From: Scott Wood <hidden>
Date: 2008-03-04 19:18:32

On Tue, Mar 04, 2008 at 03:37:00PM +1100, David Gibson wrote:
* The Bison documentation explicitly permits yyerror() to be a
  variadic function, so fold yyerror() and yyerrorf() into a single
  printf-style function.
Then the bison documentation is not consistent with the bison
implementation when verbose error messages are enabled.  How can it possibly
know whether to put % or %% in the string when an unexpected % is
encountered?

Reading bison internals makes my head hurt...
  The combined function is defined and used
  only in the parse, so make it static.
Static-izing something that is used externally in a posted patch where
you've provided no alternate to use is rather bad form...

-Scott

Re: dtc: Make some functions local to parser

From: David Gibson <hidden>
Date: 2008-03-05 00:38:01

On Tue, Mar 04, 2008 at 01:18:44PM -0600, Scott Wood wrote:
On Tue, Mar 04, 2008 at 03:37:00PM +1100, David Gibson wrote:
quoted
* The Bison documentation explicitly permits yyerror() to be a
  variadic function, so fold yyerror() and yyerrorf() into a single
  printf-style function.
Then the bison documentation is not consistent with the bison
implementation when verbose error messages are enabled.  How can it possibly
know whether to put % or %% in the string when an unexpected % is
encountered?
Ah crap.  I'd forgotten the specific case you mentioned before.
Reading bison internals makes my head hurt...
quoted
  The combined function is defined and used
  only in the parse, so make it static.
Static-izing something that is used externally in a posted patch where
you've provided no alternate to use is rather bad form...
IIRC, I already asked you *not* to use it externally, though.  And a
lot of these patches I've been posting lately are yak-shaving leading
up to a generally available error function.

Still, forget this patch for now.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help