else origtot++;
}
if (action)
- printf("=%02d/%02d:%02d\t%4d\t%s\n",days,hours,mins,
+ printf("=%03d/%02d:%02d %4d\t%s\n",days,hours,mins,
action->stores,action->what);
return(origtot);
}
int totalwidth=dumpaction(NULL);
while (totalwidth-->5) putchar(' ');
- puts("Total Da Hr Mi\tStor\tDescription");
+ puts("Total Day Hr Mi Stor\tDescription");
if (!(sorta=malloc(sizeof(*sorta)*hashtable_tot))) {
fprintf(ERRH1"malloc() of %d pointers"ERRNO1,ERRH2,hashtable_tot,ERRNO2);
exit(EXIT_FAILURE);
{
unsigned r=57;
- while (*s) r=r*7+11*(*s++);
+ while (*s) r=r*7+11*toupper(*s++);
return r;
}
storeone(what,length);
}
-static void hit(time_t t)
+static void hit(time_t t,char *bufaction)
{
static time_t last=-1;
static char bufbackup[sizeof(buf)];
char *acts[ACTS_MAX],*s;
int timetot,acti,i;
- if (verbose) printf("hit: %ld: %s\n",t,buf+6);
+ if (verbose) printf("hit: %ld: %s\n",t,bufaction);
if (last!=-1) {
if (t<last) {
fprintf(ERRH1"Time goes backward"WHERE1,ERRH2,WHERE2);
t=last;
}
- acts[0]=bufbackup+6;
+ acts[0]=bufbackup;
acti=1;
while ((s=strchr(acts[acti-1],'+'))) {
*s='\0';
for (i=0;i<acti;i++)
store(acts[i],calctime(timetot,i,acti));
}
- strcpy(bufbackup,buf);
+ strcpy(bufbackup,bufaction);
last=t;
}
{
int optc;
time_t basetime=-1,currtime;
-int hour,min;
+int hour,min,sec;
pname=argv[0];
while ((optc=getopt_long(argc,argv,"b:pw:qusTtc:f:r:vhV",longopts,NULL))!=EOF) switch (optc) {
continue;
}
- if (!isdigit(buf[0]) || !isdigit(buf[1]) || buf[2]!=':' || !isdigit(buf[3]) || !isdigit(buf[4]) || buf[5]!='-'
- || sscanf(buf,"%d:%d-",&hour,&min)!=2
+ if (!(isdigit(buf[0]) && isdigit(buf[1]) && buf[2]==':' && isdigit(buf[3]) && isdigit(buf[4])
+ && (buf[5]=='-' || (buf[5]==':' && isdigit(buf[6]) && isdigit(buf[7]) && buf[8]=='-'))
+ )
+ || (sec=0,sscanf(buf,(buf[5]=='-'?"%d:%d-":"%d:%d:%d-"),&hour,&min,&sec)!=2+(buf[5]==':'))
|| hour<0 || hour>23
|| min <0 || min >59
+ || sec <0 || sec >59
) {
fprintf(ERRH1"Incorrect day-time \"%s\""WHERE1,ERRH2,buf,WHERE2);
exit(EXIT_FAILURE);
fprintf(ERRH1"Day-time found but no basetime timestamp set"WHERE1,ERRH2,WHERE2);
exit(EXIT_FAILURE);
}
- currtime=basetime+(hour*60+min)*60;
- hit(currtime);
+ currtime=basetime+(hour*60+min)*60+sec;
+ hit(currtime,buf+(buf[5]=='-'?6:9));
}
if (!feof(fi) || ferror(fi)) {