author | Michael Krelin <hacker@klever.net> | 2009-12-12 00:21:52 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2009-12-12 00:21:52 (UTC) |
commit | 29ab361797d5677ce3296555efa7fe34dedaf0d4 (patch) (side-by-side diff) | |
tree | f0b328c790ddb405e56aa4c1653a73cbadd8135f /lib/hypnodata.cc | |
parent | f888c15a5df36dcd767823cf5c223540270524c3 (diff) | |
download | napkin-master.zip napkin-master.tar.gz napkin-master.tar.bz2 |
Thanks to Kevin Turner for spotting and patching it.
-rw-r--r-- | lib/hypnodata.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/hypnodata.cc b/lib/hypnodata.cc index a64b7d7..376c7ff 100644 --- a/lib/hypnodata.cc +++ b/lib/hypnodata.cc @@ -1,50 +1,51 @@ -#include <stdlib.h> -#include <string.h> +#include <cstdio> +#include <cstdlib> +#include <cstring> #include <napkin/exception.h> #include <napkin/util.h> #include <napkin/types.h> namespace napkin { void hypnodata_t::clear() { to_bed = alarm = 0; data_a = window = 0; almost_awakes.clear(); } static time_t from_minute_w3c(const string& w3c) { struct tm t; memset(&t,0,sizeof(t)); t.tm_isdst=-1; if(sscanf(w3c.c_str(),"%04d-%02d-%02dT%02d:%02d", &t.tm_year,&t.tm_mon,&t.tm_mday,&t.tm_hour,&t.tm_min)!=5) throw exception("failed to parse w3c time"); --t.tm_mon;t.tm_year-=1900; time_t rv = mktime(&t); if(rv==(time_t)-1) throw exception("failed to mktime()"); return rv; } void hypnodata_t::set_to_bed(const string& w3c) { to_bed = from_minute_w3c(w3c); } void hypnodata_t::set_alarm(const string& w3c) { alarm = from_minute_w3c(w3c); } void hypnodata_t::set_window(const string& str) { window = strtol(str.c_str(),0,10); /* TODO: check for error */ } void hypnodata_t::set_data_a(const string& str) { data_a = strtol(str.c_str(),0,10); /* TODO: check for error */ } void hypnodata_t::set_almost_awakes(const string& str) { almost_awakes.clear(); static const char *significants = "0123456789-T:Z"; string::size_type p = str.find_first_of(significants); struct tm t; memset(&t,0,sizeof(t)); t.tm_isdst=-1; while(p!=string::npos) { string::size_type ns = str.find_first_not_of(significants,p); string w3c; if(ns==string::npos) { w3c = str.substr(p); p = string::npos; }else{ w3c = str.substr(p,ns-p); p = str.find_first_of(significants,ns); |