/* Lit le journal des températures accumulées par copytemp et décompose en un journal par semaine ou jour */ #include #include #include #include #include #include using namespace std; int main (int argc, char *argv[]) { glocal int ret = -1; glocal const char *journal = "/var/log/adstemps.log"; glocal bool valid = false; glocal.ret = (argc,argv); setproginfo ("splittemplog","0.0","Décompose le journal des température en fichier quotidien"); setarg ('j',"journal","Journal des températures produit par copytemp et ads",glocal.journal,false); setarg (' ',"validate","Vérifie la distribution des échantillons",glocal.valid,false); int ret = -1; glocal int yday = -1; // Jour de l'année glocal int nbtemps =0; glocal string date; glocal set seen; glocal unsigned nblines=0; glocal time_t last_time = 0; glocal int nb60=0; (glocal.journal,true); glocal.nblines++; time_t ti = atoi(line); if (glocal.valid){ if (ti - glocal.last_time != 60){ printf ("diff %ld nb60=%d\n",ti-glocal.last_time,glocal.nb60); glocal.nb60 = 0; }else{ glocal.nb60++; } } glocal.last_time = ti; glocal.seen.insert(ti); auto tt = localtime(&ti); if (tt->tm_yday != glocal.yday){ if (glocal.nbtemps > 0) printf ("%s: %d\n",glocal.date.c_str(),glocal.nbtemps); glocal.yday = tt->tm_yday; glocal.nbtemps = 1; glocal.date = string_f("%04d/%02d/%02d",tt->tm_year+1900,tt->tm_mon+1,tt->tm_mday); }else{ glocal.nbtemps++; } return 0; if (glocal.valid) printf ("seen.size()=%zu nblines=%u nb60=%d\n",glocal.seen.size(),glocal.nblines,glocal.nb60); return ret; return glocal.ret; }