[PATCH 1/2] predefine: add helper predefine_{strong,weak}()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A lot of predefined macros are just set to the value '1' and
of them have a name that is not statically known. OTOH, the
function predefine() is designed for a statically known name
but a variable value.

Add a set of helpers to cover the first case: predefine_strong()
and predefine_weak().

Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx>
---
 lib.h         |  2 ++
 pre-process.c | 26 ++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/lib.h b/lib.h
index 46483f2bed5c..a3288a3abf4e 100644
--- a/lib.h
+++ b/lib.h
@@ -127,6 +127,8 @@ enum phase {
 
 extern void add_pre_buffer(const char *fmt, ...) FORMAT_ATTR(1);
 extern void predefine(const char *name, int weak, const char *fmt, ...) FORMAT_ATTR(3);
+extern void predefine_strong(const char *name, ...) FORMAT_ATTR(1);
+extern void predefine_weak(const char *name, ...) FORMAT_ATTR(1);
 extern void predefine_nostd(const char *name);
 extern void predefined_macros(void);
 
diff --git a/pre-process.c b/pre-process.c
index 38167802f465..403e3507611c 100644
--- a/pre-process.c
+++ b/pre-process.c
@@ -1439,6 +1439,32 @@ void predefine_nostd(const char *name)
 		predefine(name, 1, "1");
 }
 
+static void predefine_fmt(const char *fmt, int weak, va_list ap)
+{
+	static char buf[256];
+
+	vsnprintf(buf, sizeof(buf), fmt, ap);
+	predefine(buf, weak, "1");
+}
+
+void predefine_strong(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	predefine_fmt(fmt, 0, ap);
+	va_end(ap);
+}
+
+void predefine_weak(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	predefine_fmt(fmt, 1, ap);
+	va_end(ap);
+}
+
 static int do_handle_define(struct stream *stream, struct token **line, struct token *token, int attr)
 {
 	struct token *arglist, *expansion;
-- 
2.27.0




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux