[git commit] modinfo: match more standard module fields and fix version field

Denys Vlasenko vda.linux at googlemail.com
Tue Jun 12 14:26:03 UTC 2012


commit: http://git.busybox.net/busybox/commit/?id=772f17a8433b8572e1bf08b024fbf1f4e78395a3
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Previously, -F version could match the srcversion= string.

before :
  ~ # modinfo -F version tiwlan_drv
  version:        6.1.2012.05.29
  version:        533BB7E5866E52F63B9ACCB
  version:        0x%x, oui=0x%x, 0x%x, 0x%x
  version:        0x%x

  ~ # modinfo tiwlan_drv
  filename:       tiwlan_drv.ko
  author:         Texas Instruments Inc - Retouched by CyanogenDefy
  license:        GPL
  vermagic:       2.6.32.9 preempt mod_unload ARMv7
  parm:           g_sdio_debug_level:debug level
  depends:

now :
  ~ # modinfo -F version tiwlan_drv
  version:        6.1.2012.05.29

  ~ # modinfo tiwlan_drv
  filename:       tiwlan_drv.ko
  license:        GPL
  author:         Texas Instruments Inc - Retouched by CyanogenDefy
  version:        6.1.2012.05.29
  srcversion:     533BB7E5866E52F63B9ACCB
  depends:
  uts_release:    2.6.32.9-g306944c
  vermagic:       2.6.32.9 preempt mod_unload ARMv7
  parm:           g_sdio_debug_level:debug level

This patch also add support for the old "-n" and some other helpers

Change-Id: Icb4e9ca513cbce46b075a6f038799a7a19fb7e22
Signed-off-by: Tanguy Pruvot <tanguy.pruvot at gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 modutils/modinfo.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/modutils/modinfo.c b/modutils/modinfo.c
index c0910ff..7c978d1 100644
--- a/modutils/modinfo.c
+++ b/modutils/modinfo.c
@@ -24,9 +24,9 @@
 
 
 enum {
-	OPT_TAGS = (1 << 8) - 1,
-	OPT_F = (1 << 8), /* field name */
-	OPT_0 = (1 << 9),  /* \0 as separator */
+	OPT_TAGS = (1 << 12) - 1, /* shortcut count */
+	OPT_F = (1 << 12), /* field name */
+	OPT_0 = (1 << 13), /* \0 as separator */
 };
 
 struct modinfo_env {
@@ -49,13 +49,17 @@ static void modinfo(const char *path, const char *version,
 {
 	static const char *const shortcuts[] = {
 		"filename",
-		"description",
-		"author",
 		"license",
+		"author",
+		"description",
+		"version",
+		"alias",
+		"srcversion",
+		"depends",
+		"uts_release",
 		"vermagic",
 		"parm",
 		"firmware",
-		"depends",
 	};
 	size_t len;
 	int j, length;
@@ -97,8 +101,11 @@ static void modinfo(const char *path, const char *version,
 			if (ptr == NULL) /* no occurance left, done */
 				break;
 			if (strncmp(ptr, pattern, length) == 0 && ptr[length] == '=') {
-				ptr += length + 1;
-				ptr += display(ptr, pattern, (1<<j) != tags);
+				/* field prefixes are 0x80 or 0x00 */
+				if ((ptr[-1] & 0x7F) == '\0') {
+					ptr += length + 1;
+					ptr += display(ptr, pattern, (1<<j) != tags);
+				}
 			}
 			++ptr;
 		}
@@ -131,7 +138,7 @@ int modinfo_main(int argc UNUSED_PARAM, char **argv)
 
 	env.field = NULL;
 	opt_complementary = "-1"; /* minimum one param */
-	opts = getopt32(argv, "fdalvpF:0", &env.field);
+	opts = getopt32(argv, "nladvAsDumpF:0", &env.field);
 	env.tags = opts & OPT_TAGS ? opts & OPT_TAGS : OPT_TAGS;
 	argv += optind;
 


More information about the busybox-cvs mailing list