rendered paste body..but I have
kexec/kexec.c: In function 'kexec_loaded':
kexec/kexec.c:946: warning: passing argument 1 of 'fgets' from incompatible pointer type
kexec/kexec.c:948: warning: passing argument 1 of 'strtol' from incompatible pointer type
kexec/kexec.c: In function 'get_command_line':
kexec/kexec.c:1000: warning: unused variable 'len'
kexec/kexec.c: In function 'kexec_loaded':
kexec/kexec.c:952: warning: 'ret' may be used uninitialized in this function
Index: kexec-tools-2.0.1/kexec/kexec.c
===================================================================
--- kexec-tools-2.0.1.orig/kexec/kexec.c 2008-02-24 14:15:46.950825917 +0100
+++ kexec-tools-2.0.1/kexec/kexec.c 2009-10-06 00:37:01.000000000 +0200
@@ -935,11 +935,19 @@
{
int ret;
FILE *fp;
+ char *endptr;
+ char *line[3];
fp = fopen("/sys/kernel/kexec_loaded", "r");
if (fp == NULL)
return -1;
- fscanf(fp, "%d", &ret);
+/* fscanf(fp, "%d", &ret); */
+
+ if ( NULL == fgets(line, sizeof(line), fp) ) {
+ return -1;
+ ret = strtol(line, &endptr, 10);
+ }
+
fclose(fp);
return ret;
}
@@ -989,17 +997,22 @@
char *get_command_line(void)
{
FILE *fp;
- size_t len;
- char *line = NULL;
+ const int sizeof_line = 1024;
+ char *line = malloc(sizeof_line); /* according to strdup() later */
fp = fopen("/proc/cmdline", "r");
if (!fp)
- die("Could not read /proc/cmdline.");
- getline(&line, &len, fp);
+ die("Could not open /proc/cmdline.");
+
+ if ( NULL == fgets(line, sizeof(line), fp) ) {
+ die("Can't read /proc/cmdline.");
+
+/* getline(&line, &len, fp); */
fclose(fp);
+ }
if (line) {
/* strip newline */
- *(line + strlen(line) - 1) = 0;
+ line[strlen(line) - 1] = '\0';
remove_parameter(line, "BOOT_IMAGE");
if (kexec_flags & KEXEC_ON_CRASH)