get_ibm_acpi_fan(p, p_max_size);
}
OBJ(ibm_temps) {
- get_ibm_acpi_temps();
- temp_print(p, p_max_size,
- ibm_acpi.temps[obj->data.sensor], TEMP_CELSIUS);
+ print_ibm_temps(obj, p, p_max_size);
}
OBJ(ibm_volume) {
get_ibm_acpi_volume(p, p_max_size);
END OBJ(i8k_buttons_status, &update_i8k)
#if defined(IBM)
END OBJ(ibm_fan, 0)
- END OBJ(ibm_temps, 0, "ibm_temps: needs an argument")
- if (!isdigit(arg[0]) || strlen(arg) >= 2 || atoi(&arg[0]) >= 8) {
- obj->data.sensor = 0;
- NORM_ERR("Invalid temperature sensor! Sensor number must be 0 to 7. "
- "Using 0 (CPU temp sensor).");
- } else
- obj->data.sensor = atoi(&arg[0]);
+ END OBJ(ibm_temps, &get_ibm_acpi_temps, "ibm_temps: needs an argument")
+ parse_ibm_temps_arg(obj, arg);
END OBJ(ibm_volume, 0)
END OBJ(ibm_brightness, 0)
#endif
#include <string.h>
#include <stdlib.h>
+static int ibm_acpi_temps[8];
+
/* Here come the IBM ACPI-specific things. For reference, see
* http://ibm-acpi.sourceforge.net/README
* If IBM ACPI is installed, /proc/acpi/ibm contains the following files:
break;
}
if (sscanf(line, "temperatures: %d %d %d %d %d %d %d %d",
- &ibm_acpi.temps[0], &ibm_acpi.temps[1], &ibm_acpi.temps[2],
- &ibm_acpi.temps[3], &ibm_acpi.temps[4], &ibm_acpi.temps[5],
- &ibm_acpi.temps[6], &ibm_acpi.temps[7])) {
+ &ibm_acpi_temps[0], &ibm_acpi_temps[1], &ibm_acpi_temps[2],
+ &ibm_acpi_temps[3], &ibm_acpi_temps[4], &ibm_acpi_temps[5],
+ &ibm_acpi_temps[6], &ibm_acpi_temps[7])) {
break;
}
}
snprintf(p_client_buffer, client_buffer_size, "%d", brightness);
}
+void parse_ibm_temps_arg(struct text_object *obj, const char *arg)
+{
+ if (!isdigit(arg[0]) || strlen(arg) > 1 || atoi(&arg[0]) >= 8) {
+ obj->data.sensor = 0;
+ NORM_ERR("Invalid temperature sensor! Sensor number must be 0 to 7. "
+ "Using 0 (CPU temp sensor).");
+ } else
+ obj->data.sensor = atoi(arg);
+}
+
+void print_ibm_temps(struct text_object *obj, char *p, int p_max_size)
+{
+ temp_print(p, p_max_size, ibm_acpi_temps[obj->data.sensor], TEMP_CELSIUS);
+}
#include <sys/types.h>
-struct ibm_acpi_struct {
- int temps[8];
-};
-
-struct ibm_acpi_struct ibm_acpi;
-
void get_ibm_acpi_fan(char *buf, size_t client_buffer_size);
void get_ibm_acpi_temps(void);
void get_ibm_acpi_volume(char *buf, size_t client_buffer_size);
void get_ibm_acpi_brightness(char *buf, size_t client_buffer_size);
+void parse_ibm_temps_arg(struct text_object *, const char *);
+void print_ibm_temps(struct text_object *, char *, int);
#endif /* _IBM_H */