[lm-sensors] [PATCH v2 7/7] sensord: Refactoring of rrdInit()

Andre Prendel andre.prendel at gmx.de
Mon May 11 18:04:35 CEST 2009


Refactoring of the rrdInit() function.

* Fix deep indentation levels
* Return with unique error code (-1)

Changes in v2:

Fix wrong condition.
Rename buffer for struct stat to sb.

 rrd.c |   87 ++++++++++++++++++++++++++++++------------------------------------
 1 file changed, 40 insertions(+), 47 deletions(-)

Index: quilt-sensors/prog/sensord/rrd.c
===================================================================
--- quilt-sensors.orig/prog/sensord/rrd.c	2009-05-08 19:55:45.000000000 +0200
+++ quilt-sensors/prog/sensord/rrd.c	2009-05-08 20:17:04.000000000 +0200
@@ -242,58 +242,51 @@
 
 int rrdInit(void)
 {
-	int ret = 0;
-	struct stat tmp;
+	int ret;
+	struct stat sb;
+	char stepBuff[STEP_BUFF], rraBuff[RRA_BUFF];
+	int argc = 4, num;
+	const char *argv[6 + MAX_RRD_SENSORS] = {
+		"sensord", sensord_args.rrdFile, "-s", stepBuff
+	};
 
 	sensorLog(LOG_DEBUG, "sensor RRD init");
-	if (stat(sensord_args.rrdFile, &tmp)) {
-		if (errno == ENOENT) {
-			char stepBuff[STEP_BUFF], rraBuff[RRA_BUFF];
-			int argc = 4, num;
-			const char *argv[6 + MAX_RRD_SENSORS] = {
-				"sensord", sensord_args.rrdFile, "-s", stepBuff
-			};
-
-			sensorLog(LOG_INFO, "creating round robin database");
-			num = rrdGetSensors(argv + argc);
-			if (num == 0) {
-				sensorLog(LOG_ERR,
-					  "Error creating RRD: %s: %s",
-					  sensord_args.rrdFile,
-					  "No sensors detected");
-				ret = 2;
-			} else if (num < 0) {
-				ret = -num;
-			} else {
-				sprintf(stepBuff, "%d", sensord_args.rrdTime);
-				sprintf(rraBuff, "RRA:%s:%f:%d:%d",
-					sensord_args.rrdNoAverage ? "LAST" :
-					"AVERAGE",
-					0.5 /* fraction of non-unknown samples needed per entry */,
-					1 /* samples per entry */,
-					7 * 24 * 60 * 60 /
-					sensord_args.rrdTime /* 1 week */);
-
-				argc += num;
-				argv[argc ++] = rraBuff;
-				argv[argc] = NULL;
-				if ((ret = rrd_create(argc,
-						      (char **) /* WEAK */ argv))) {
-					sensorLog(LOG_ERR,
-						  "Error creating RRD file: %s: %s",
-						  sensord_args.rrdFile,
-						  rrd_get_error());
-				}
-			}
-		} else {
-			sensorLog(LOG_ERR, "Error stat()ing RRD: %s: %s",
-				  sensord_args.rrdFile, strerror(errno));
-			ret = 1;
+
+	/* Create RRD if it does not exist. */
+	if (stat(sensord_args.rrdFile, &sb)) {
+		if (errno != ENOENT) {
+			sensorLog(LOG_ERR, "Could not stat rrd file: %s\n",
+				  sensord_args.rrdFile);
+			return -1;
+		}
+		sensorLog(LOG_INFO, "Creating round robin database");
+
+		num = rrdGetSensors(argv + argc);
+		if (num < 1) {
+			sensorLog(LOG_ERR, "Error creating RRD: %s: %s",
+				  sensord_args.rrdFile, "No sensors detected");
+			return -1;
+		}
+
+		sprintf(stepBuff, "%d", sensord_args.rrdTime);
+		sprintf(rraBuff, "RRA:%s:%f:%d:%d",
+			sensord_args.rrdNoAverage ? "LAST" :"AVERAGE",
+			0.5, 1, 7 * 24 * 60 * 60 / sensord_args.rrdTime);
+
+		argc += num;
+		argv[argc++] = rraBuff;
+		argv[argc] = NULL;
+
+		ret = rrd_create(argc, (char**) argv);
+		if (ret == -1) {
+			sensorLog(LOG_ERR, "Error creating RRD file: %s: %s",
+				  sensord_args.rrdFile, rrd_get_error());
+			return -1;
 		}
 	}
-	sensorLog(LOG_DEBUG, "sensor RRD inited");
 
-	return ret;
+	sensorLog(LOG_DEBUG, "sensor RRD initialized");
+	return 0;
 }
 
 #define RRDCGI "/usr/bin/rrdcgi"




More information about the lm-sensors mailing list