+ mysql_init(&mysql);
+ if(!mysql_real_connect(&mysql, host, user, pass, dbnm, 0, NULL, 0)) {
+ g_warning("mysql connect error: %s\n", mysql_error(&mysql));
+ return 1;
+ }
+ mysql_autocommit(&mysql, FALSE);
+ /* ======== */
+ snprintf(statement, sizeof(statement),
+ "select value from %scnt order by timestamp desc limit 1;\n",
+ table);
+ if ((rc = mysql_query(&mysql, statement)))
+ g_warning("mysql \"%s\" error: %s\n",
+ statement, mysql_error(&mysql));
+ else if ((result = mysql_store_result(&mysql))){
+ MYSQL_ROW row = mysql_fetch_row(result);
+ if (row && *row) prev_val = atoi(*row);
+ mysql_free_result(result);
+ }
+ if (val <= prev_val) {
+ snprintf(statement, sizeof(statement),
+ "insert into %sadj values (\"%s\",%u);\n",
+ table, tstr, prev_val);
+ g_info("%s %u <= %u, %s", table, val, prev_val, statement);
+ if ((rc = mysql_query(&mysql, statement)))
+ g_warning("mysql \"%s\" error: %s\n",
+ statement, mysql_error(&mysql));
+ }
+ snprintf(statement, sizeof(statement),
+ "insert into %scnt values (\"%s\",%u);\n",
+ table, tstr, val);
+ if ((rc = mysql_query(&mysql, statement)))
+ g_warning("mysql \"%s\" error: %s\n",
+ statement, mysql_error(&mysql));
+ /* ======== */
+ if (!rc) {
+ if ((rc = mysql_commit(&mysql)))
+ g_warning("mysql commit error: %s\n",
+ mysql_error(&mysql));
+ }
+ mysql_close(&mysql);
+ return rc;
+}
+
+#ifdef TEST_CONFIG
+int main(int const argc, char *argv[])
+{
+ if (dbconfig(argv[1])) {
+ printf("could not parse config file\n");
+ return 1;
+ }
+ printf("host: %s\nuser: %s\npass: %s\ndbnm: %s\n",
+ host, user, pass, dbnm);