
	/*
	** reads an existing -events.txt file to get the start/end time
	** reads ../PD###-pnp.txt to look for GT
	** updates the -events.txt file 
	*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define	DEBUG	0

int main(int argc, char *argv[])

{
FILE	*fpt;
int	i,j;
int	total_events;
char	event_type[30][32];
char	field[30][7][320];
char	start_date[32],end_date[32],start_time[32],end_time[32];
char	pnpfile[320];
int	year,month,day;
int	pnp_year,pnp_month,pnp_day;
int	pnp_meals;
char	text[320];
int	match,hour,minute;

if (argc != 2)
  {
  printf("Usage:  update-events [file-events.txt]\n");
  exit(0);
  }

	/* open events file and read its current contents */
if ((fpt=fopen(argv[1],"r")) == NULL)
  {
  printf("Unable to open %s\n",argv[1]);
  exit(0);
  }
i=fscanf(fpt,"%s %s %s",text,start_date,start_time);
if (i != 3)
  {
  printf("Unexpected first line in %s (no START?)\n",argv[1]);
  exit(0);
  }
strcpy(text,start_date);
text[4]=text[7]=0;
year=atoi(&(text[0]));
month=atoi(&(text[5]));
day=atoi(&(text[8]));
i=fscanf(fpt,"%s %s %s",text,end_date,end_time);
if (i != 3)
  {
  printf("Unexpected second line in %s (not END?)\n",argv[1]);
  exit(0);
  }
fclose(fpt);

if (DEBUG)
  printf("year=>%d  month=>%d  day=>%d\n",year,month,day);

	/* see if pnp file exists and can open */
strcpy(pnpfile,argv[1]);
i=strlen(pnpfile)-1;
while (pnpfile[i] != '/')	/* back up within IMU */
  i--;
i--;
while (pnpfile[i] != '/')	/* back up out of IMU */
  i--;
i--;
while (pnpfile[i] != '/')	/* back up to start of PD### */
  i--;
for (j=i+1; j<i+6; j++)
  pnpfile[j+6]=pnpfile[j];
pnpfile[j+6]=0;
strcat(pnpfile,"-pnp.txt");
if (DEBUG)
  printf("pnpfile -> %s\n",pnpfile);

if ((fpt=fopen(pnpfile,"r")) == NULL)
  {
  printf("Unable to open %s\n",pnpfile);
  exit(0);
  }
fgets(text,320,fpt);		/* header line */
total_events=0;
while (1)
  {
  i=fscanf(fpt,"%s",text);	/* PID */
  if (i != 1)
    break;
  fscanf(fpt,"%s",text);	/* date */
  i=strlen(text)-1;
  pnp_year=0;
  while (i > 0)
    {
    if (text[i] == '/')
      {
      text[i]=0;
      if (pnp_year == 0)
        pnp_year=atoi(&(text[i+1]));
      else
        pnp_day=atoi(&(text[i+1]));
      }
    i--;
    }
  pnp_month=atoi(&(text[i]));
  if (pnp_year == year  &&  pnp_month == month  &&  pnp_day == day)
    match=1;
  else
    match=0;
  fscanf(fpt,"%d",&pnp_meals);	/* #meals this day */
  if (DEBUG)
    printf("%4d-%02d-%02d\t%d\n",pnp_year,pnp_month,pnp_day,pnp_meals);
  for (i=0; i<pnp_meals; i++)
    {
    fscanf(fpt,"%s",text);
    if (match == 1)
      {
      sprintf(event_type[total_events],"meal%d",i+1);
      j=0;
      while (text[j] != ':')
        j++;
      text[j]=0;
      hour=atoi(&(text[0]));
      minute=atoi(&(text[j+1]));
      sprintf(field[total_events][0],"%02d:%02d:00",hour,minute); /* start */
      sprintf(field[total_events][1],"%02d:%02d:59",hour,minute); /* end */
      sprintf(field[total_events][2],"Unknown");	/* home/restaurant */
      sprintf(field[total_events][3],"Unknown");	/* seconds */
      sprintf(field[total_events][4],"Unknown");	/* alone/company */
      sprintf(field[total_events][5],"Unknown");	/* foods */
      sprintf(field[total_events][6],"Unknown");	/* second activity */
      total_events++;
      }
    }
  }
fclose(fpt);

if (1)
  {
  fpt=fopen(argv[1],"w");
  fprintf(fpt,"START %s %s\n",start_date,start_time);
  for (i=0; i<total_events; i++)
    { 
    fprintf(fpt,"%s",event_type[i]);
    if (strcmp(event_type[i],"START") == 0  ||
	strcmp(event_type[i],"END") == 0)
      {
      for (j=0; j<2; j++)
        fprintf(fpt," %s",field[i][j]);
      }
    else
      {
      for (j=0; j<7; j++)
        fprintf(fpt," %s",field[i][j]);
      }
    fprintf(fpt,"\n");
    }
  fprintf(fpt,"END %s %s\n",end_date,end_time);
  fclose(fpt);
  }
}

