..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)