|
@@ -174,20 +174,28 @@ static void rrd_point(time_t t, const char *name, double val, char *unit)
|
|
|
|
|
|
static void store_latest(time_t t, int id, const char *name, int raw, double val, double val2, char *unit, int q)
|
|
|
{
|
|
|
+ char fileTemp[] = "/tmp/tl-500.XXXXXX";
|
|
|
char fileName[64];
|
|
|
char buffer[250];
|
|
|
+ int f;
|
|
|
|
|
|
- snprintf(fileName, sizeof(fileName), "/tmp/sensor_%d", id);
|
|
|
- FILE *f = fopen("/tmp/tl-500.tmp", "w");
|
|
|
- if(f == NULL)
|
|
|
+ f = mkstemp(fileTemp);
|
|
|
+ if (f < 1)
|
|
|
+ {
|
|
|
+ log_error("Could not open temporary file for sensor data");
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
- // snprintf(buffer, sizeof(buffer), "%s %d %d %2.1f C\n", system_time(), sensor, value, temperature);
|
|
|
- snprintf(buffer, sizeof(buffer), "%u Sensor:%d Raw:%d Value:%.2f Unit:%s Name:\"%s\" Value2:%.2f Q:%d", (unsigned)t, id, raw, val, unit, name, val2, q);
|
|
|
+ fchmod(f, 0644);
|
|
|
|
|
|
- fprintf(f, buffer);
|
|
|
- fclose(f);
|
|
|
- rename("/tmp/tl-500.tmp", fileName);
|
|
|
+ /* Prepare content of file */
|
|
|
+ snprintf(buffer, sizeof(buffer), "%u Sensor:%d Raw:%d Value:%.2f Unit:%s Name:\"%s\" Value2:%.2f Q:%d\n", (unsigned)t, id, raw, val, unit, name, val2, q);
|
|
|
+ write(f, buffer, strlen(buffer));
|
|
|
+ close(f);
|
|
|
+
|
|
|
+ /* Rename temp file */
|
|
|
+ snprintf(fileName, sizeof(fileName), "/tmp/sensor_%d", id);
|
|
|
+ rename(fileTemp, fileName);
|
|
|
}
|
|
|
|
|
|
/*** Transforms ***/
|