--- a/panel-plugin/xfce4-cpufreq-linux.c 2011-01-22 13:03:42.000000000 +0100 +++ b/panel-plugin/xfce4-cpufreq-linux.c 2013-08-29 03:04:32.416199007 +0200 @@ -163,7 +163,7 @@ /* read min cpu freq */ filePath = g_strdup_printf ( - "/sys/devices/system/cpu/cpu%i/cpufreq/scaling_max_freq", + "/sys/devices/system/cpu/cpu%i/cpufreq/scaling_min_freq", cpu_number); if (!g_file_test (filePath, G_FILE_TEST_EXISTS)) goto file_error; @@ -344,22 +344,18 @@ static gboolean cpufreq_cpu_read_sysfs () { - gint j, i = -2; - DIR *dir; - struct dirent *dir_entry; - - if ((dir = opendir ("/sys/devices/system/cpu")) != NULL) + int filter(const struct dirent * dir) { - while ((dir_entry = readdir (dir)) != NULL) - i++; + return fnmatch("cpu[0-9]*", dir->d_name, 0) == 0; } - else - return FALSE; - closedir (dir); - - for (j = 0; j < i; j++) + gint n,j,cpuno; + struct dirent **namelist; + n = scandir("/sys/devices/system/cpu", &namelist, filter, alphasort); + if (n == -1) return FALSE; + for (j = 0; j < n; j++) { - cpufreq_cpu_parse_sysfs_init (j); + sscanf(namelist[j]->d_name,"cpu%d", &cpuno); + cpufreq_cpu_parse_sysfs_init (cpuno); } return TRUE;