From 627814bdc3ef9b405a77686d73e7b53ebd767a07 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Tue, 3 May 2005 22:34:03 +0000 Subject: Takeharu Kato said: I found that lsmod in busybox does not support linux-2.6. I fix this issue(it is caused by changes of /proc/modules format). If you use lsmod in busybox with kernel-2.6, please use this patch. --- modutils/lsmod.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/modutils/lsmod.c b/modutils/lsmod.c index 7bf314afe..525fc2dc2 100644 --- a/modutils/lsmod.c +++ b/modutils/lsmod.c @@ -164,10 +164,51 @@ extern int lsmod_main(int argc, char **argv) { printf("Module Size Used by"); check_tainted(); - +#if defined(CONFIG_FEATURE_2_6_MODULES) + { + FILE *file; + char line[4096]; + + file = fopen("/proc/modules", "r"); + + if (!file) + bb_error_msg_and_die("Opening /proc/modules"); + + while (fgets(line, sizeof(line), file)) { + char *tok; + + tok = strtok(line, " \t"); + printf("%-19s", tok); + tok = strtok(NULL, " \t\n"); + printf(" %8s", tok); + tok = strtok(NULL, " \t\n"); + /* Null if no module unloading support. */ + if (tok) { + printf(" %s", tok); + tok = strtok(NULL, "\n"); + if (!tok) + tok = ""; + /* New-style has commas, or -. If so, + truncate (other fields might follow). */ + else if (strchr(tok, ',')) { + tok = strtok(tok, "\t "); + /* Strip trailing comma. */ + if (tok[strlen(tok)-1] == ',') + tok[strlen(tok)-1] = '\0'; + } else if (tok[0] == '-' + && (tok[1] == '\0' || isspace(tok[1]))) + tok = ""; + printf(" %s", tok); + } + printf("\n"); + } + fclose(file); + } +#else if (bb_xprint_file_by_name("/proc/modules") < 0) { return 0; } +#endif /* CONFIG_FEATURE_2_6_MODULES */ return 1; } -- cgit v1.2.3