2
// Copyright 2010 John P. T. Moore
11
#include <dbus/dbus-glib.h>
13
#include <libsoup/soup.h>
21
#define dbg(fmtstr, args...) \
22
(g_print(PROGNAME ":%s: " fmtstr "\n", __func__, ##args))
29
sqlite3 *openLog(char *file)
34
rc = sqlite3_open(file, &db);
36
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
45
void closeLog(sqlite3 *db)
51
int logDevice(sqlite3 *db, RestProxy *twitter, char *mac, char *name)
53
int rc; // result code
54
int id; // primary key
61
gettimeofday(&t_now, NULL);
64
sql = sqlite3_mprintf("select id from log where mac = '%s'", mac);
65
rc = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
68
fprintf(stderr, "SQL error: %s\n", zErrMsg);
69
sqlite3_free(zErrMsg);
73
rc = sqlite3_step(stmt);
80
fprintf(stderr, "SQL error: %s\n", zErrMsg);
81
sqlite3_free(zErrMsg);
85
id = sqlite3_column_int(stmt, 0);
86
sqlite3_finalize(stmt);
87
// if no record exists
89
sql = sqlite3_mprintf("insert into log (mac, name, seen) values ('%s', \"%s\", %d)", mac, name, seen);
90
// post to Twitter if proxy set
94
message = g_strdup_printf ("saw %s with id %s #%s",
95
(name) ? name : "someone who didn't set their device name", mac, PROGNAME);
96
tweet(twitter, message);
101
sql = sqlite3_mprintf("update log set name = \"%s\", seen = %d where id = %d", name, seen, id);
104
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
106
if( rc!=SQLITE_OK ) {
107
fprintf(stderr, "SQL error: %s\n", zErrMsg);
108
sqlite3_free(zErrMsg);