obsd_sensors: cleanup code (untested)
authorPhil Sutter <phil@nwl.cc>
Fri, 9 Oct 2009 01:55:46 +0000 (03:55 +0200)
committerPhil Sutter <phil@nwl.cc>
Tue, 3 Nov 2009 22:23:22 +0000 (23:23 +0100)
src/conky.c
src/core.c
src/openbsd.c
src/openbsd.h

index a1bee78..b0cb0d4 100644 (file)
@@ -1114,23 +1114,13 @@ void generate_text_internal(char *p, int p_max_size,
 #endif
 #ifdef __OpenBSD__
                        OBJ(obsd_sensors_temp) {
-                               obsd_sensors.device = sensor_device;
-                               update_obsd_sensors();
-                               temp_print(p, p_max_size,
-                                          obsd_sensors.temp[obsd_sensors.device][obj->data.sensor],
-                                          TEMP_CELSIUS);
+                               print_obsd_sensors_temp(obj, p, p_max_size);
                        }
                        OBJ(obsd_sensors_fan) {
-                               obsd_sensors.device = sensor_device;
-                               update_obsd_sensors();
-                               snprintf(p, p_max_size, "%d",
-                                               obsd_sensors.fan[obsd_sensors.device][obj->data.sensor]);
+                               print_obsd_sensors_fan(obj, p, p_max_size);
                        }
                        OBJ(obsd_sensors_volt) {
-                               obsd_sensors.device = sensor_device;
-                               update_obsd_sensors();
-                               snprintf(p, p_max_size, "%.2f",
-                                               obsd_sensors.volt[obsd_sensors.device][obj->data.sensor]);
+                               print_obsd_sensors_volt(obj, p, p_max_size);
                        }
                        OBJ(obsd_vendor) {
                                get_obsd_vendor(p, p_max_size);
index 6efab87..697fc06 100644 (file)
@@ -325,26 +325,11 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
 #endif
 #if defined(__OpenBSD__)
        END OBJ_ARG(obsd_sensors_temp, 0, "obsd_sensors_temp: needs an argument")
-               if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
-                               || atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) {
-                       obj->data.sensor = 0;
-                       NORM_ERR("Invalid temperature sensor number!");
-               } else
-                       obj->data.sensor = atoi(&arg[0]);
+               parse_obsd_sensor(obj, arg);
        END OBJ_ARG(obsd_sensors_fan, 0, "obsd_sensors_fan: needs 2 arguments (device and sensor number)")
-               if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
-                               || atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) {
-                       obj->data.sensor = 0;
-                       NORM_ERR("Invalid fan sensor number!");
-               } else
-                       obj->data.sensor = atoi(&arg[0]);
+               parse_obsd_sensor(obj, arg);
        END OBJ_ARG(obsd_sensors_volt, 0, "obsd_sensors_volt: needs 2 arguments (device and sensor number)")
-               if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
-                               || atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) {
-                       obj->data.sensor = 0;
-                       NORM_ERR("Invalid voltage sensor number!");
-               } else
-                       obj->data.sensor = atoi(&arg[0]);
+               parse_obsd_sensor(obj, arg);
        END OBJ(obsd_vendor, 0)
        END OBJ(obsd_product, 0)
 #endif /* __OpenBSD__ */
index 4d5f240..b6fba3d 100644 (file)
@@ -440,6 +440,14 @@ void update_load_average()
        info.loadavg[2] = (float) v[2];
 }
 
+#define OBSD_MAX_SENSORS 256
+static struct obsd_sensors_struct {
+       int device;
+       float temp[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
+       unsigned int fan[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
+       float volt[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
+} obsd_sensors;
+
 /* read sensors from sysctl */
 void update_obsd_sensors()
 {
@@ -503,6 +511,41 @@ void update_obsd_sensors()
        init_sensors = 1;
 }
 
+void parse_obsd_sensor(struct text_object *obj, const char *arg)
+{
+       if (!isdigit(arg[0]) || atoi(&arg[0]) < 0
+                       || atoi(&arg[0]) > OBSD_MAX_SENSORS - 1) {
+               obj->data.l = 0;
+               NORM_ERR("Invalid sensor number!");
+       } else
+               obj->data.l = atoi(&arg[0]);
+}
+
+void print_obsd_sensors_temp(struct text_object *obj, char *p, int p_max_size)
+{
+       obsd_sensors.device = sensor_device;
+       update_obsd_sensors();
+       temp_print(p, p_max_size,
+                       obsd_sensors.temp[obsd_sensors.device][obj->data.l],
+                       TEMP_CELSIUS);
+}
+
+void print_obsd_sensors_fan(struct text_object *obj, char *p, int p_max_size)
+{
+       obsd_sensors.device = sensor_device;
+       update_obsd_sensors();
+       snprintf(p, p_max_size, "%d",
+                       obsd_sensors.fan[obsd_sensors.device][obj->data.l]);
+}
+
+void print_obsd_sensors_volt(struct text_object *obj, char *p, int p_max_size)
+{
+       obsd_sensors.device = sensor_device;
+       update_obsd_sensors();
+       snprintf(p, p_max_size, "%.2f",
+                       obsd_sensors.volt[obsd_sensors.device][obj->data.l]);
+}
+
 /* chipset vendor */
 void get_obsd_vendor(char *buf, size_t client_buffer_size)
 {
index 2ee32cb..0f7a3ac 100644 (file)
@@ -9,45 +9,13 @@
 #include <sys/sensors.h>
 #include <machine/apmvar.h>
 
-void update_obsd_sensors(void);
+void parse_obsd_sensor(struct text_object *, const char *);
+void print_obsd_sensors_temp(struct text_object *, char *, int);
+void print_obsd_sensors_fan(struct text_object *, char *, int);
+void print_obsd_sensors_volt(struct text_object *, char *, int);
 void get_obsd_vendor(char *buf, size_t client_buffer_size);
 void get_obsd_product(char *buf, size_t client_buffer_size);
 
-#define OBSD_MAX_SENSORS 256
-struct obsd_sensors_struct {
-       int device;
-       float temp[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-       unsigned int fan[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-       float volt[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-};
-struct obsd_sensors_struct obsd_sensors;
-
-#if defined(i386) || defined(__i386__)
-typedef struct apm_power_info *apm_info_t;
-#endif
-
-#endif /*OPENBSD_H_*/
-#ifndef OPENBSD_H_
-#define OPENBSD_H_
-
-#include "common.h"
-#include <sys/sysctl.h>
-#include <sys/sensors.h>
-#include <machine/apmvar.h>
-
-void update_obsd_sensors(void);
-void get_obsd_vendor(char *buf, size_t client_buffer_size);
-void get_obsd_product(char *buf, size_t client_buffer_size);
-
-#define OBSD_MAX_SENSORS 256
-struct obsd_sensors_struct {
-       int device;
-       float temp[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-       unsigned int fan[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-       float volt[MAXSENSORDEVICES][OBSD_MAX_SENSORS];
-};
-struct obsd_sensors_struct obsd_sensors;
-
 #if defined(i386) || defined(__i386__)
 typedef struct apm_power_info *apm_info_t;
 #endif