
	/* fixed many problems in the raw Shimmer recorded events files
	** to standardize to the EatMon format
	*/

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

void fixtime(char *input,char *output)

{
int	c1,c2,i;
char	text[320];
int	hour,min,sec;

c1=c2=-1;
strcpy(text,input);
for (i=0; i<strlen(text); i++)
  {
  if (text[i] == ':')
    {
    if (c1 == -1)
      c1=i;
    else
      c2=i;
    }
  }
text[c1]=0;
hour=atoi(&(text[0]));
if (c2 == -1)
  {
  min=atoi(&(text[c1+1]));
  sec=0;
  }
else
  {
  text[c2]=0;
  min=atoi(&(text[c1+1]));
  sec=atoi(&(text[c2+1]));
  }
sprintf(output,"%02d:%02d:%02d",hour,min,sec);
}



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

{
FILE	*fpt;
char	filename[320],text[320],orig[320],text2[320],text3[320];
char	start[320],end[320];
char	mealname[10][64];
char	mealstart[10][64],mealend[10][64];
char	mealloc[10][64];
char	mealserv[10][64];
char	mealcomp1[10][64];
char	mealcomp2[10][64];
char	mealcomp[10][64];
char	mealfoods[10][320];
char	mealactiv[10][320];
int	i,j,k,t;
int	c1,c2;
int	sh,sm,ss,eh,em,es;

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

if ((fpt=fopen(argv[1],"rb")) == NULL)
  {
  printf("Unable to open %s\n",argv[1]);
  exit(0);
  }
t=0;
while (1)
  {
  i=fscanf(fpt,"%s",text);
  if (i != 1)
    break;
  if (strstr(text,"START") != NULL)
    {
    fscanf(fpt,"%s",text2);
    fscanf(fpt,"%s",text3);
    sprintf(start,"START %s %s",text2,text3);
    continue;
    }
  else if (strstr(text,"END") != NULL)
    {
    fscanf(fpt,"%s",text2);
    fscanf(fpt,"%s",text3);
    sprintf(end,"END %s %s",text2,text3);
    continue;
    }
  strcpy(mealname[t],text);
  fscanf(fpt,"%s",text);
  fixtime(text,mealstart[t]);
  fscanf(fpt,"%s",text);
  fixtime(text,mealend[t]);
  fscanf(fpt,"%s",mealloc[t]);
  fscanf(fpt,"%s",mealserv[t]);
  fscanf(fpt,"%s",mealcomp1[t]);
  fscanf(fpt,"%s",mealcomp2[t]);
  if (strcmp(mealcomp1[t],"Alone") == 0)
    strcpy(mealcomp[t],"Alone");
  else if (strcmp(mealcomp1[t],"InCompany") == 0  &&
	strcmp(mealcomp2[t],"CompanyNotEating") == 0)
    strcpy(mealcomp[t],"CompanyNotEating");
  else if (strcmp(mealcomp1[t],"InCompany") == 0  &&
	strcmp(mealcomp2[t],"CompanyEating") == 0)
    strcpy(mealcomp[t],"CompanyEating");
  else
    {
    printf("WARNING!!! Company fields %s %s\n",mealcomp1[t],mealcomp2[t]);
    sprintf(mealcomp[t],"ERROR");
    }
  j=0;
  while (1)
    {
    i=fread(&(mealfoods[t][j]),1,1,fpt);
    if (i != 1)
      break;
    if (mealfoods[t][j] == '|')
      break;
    if (mealfoods[t][j] == ' '  ||  mealfoods[t][j] == '\t')
      mealfoods[t][j]='_';
    j++;
    }
	/* strip out leading and trailing underscores */
  mealfoods[t][j]=0;
  for (j=0; j<strlen(mealfoods[t]); j++)
    if (mealfoods[t][j] != '_')
      break;
  if (j > 0)
    {
    for (k=0; k<strlen(mealfoods[t])-j; k++)
      mealfoods[t][k]=mealfoods[t][k+j];
    mealfoods[t][k]=0;
    }
  for (j=strlen(mealfoods[t])-1; j>0; j--)
    if (mealfoods[t][j] != '_')
      break;
  mealfoods[t][j+1]=0;
	/* fix meal activity name - copy if anything there, else None */
  fgets(mealactiv[t],320,fpt);
  k=0;
  for (j=0; j<strlen(mealactiv[t]); j++)
    {
    if (mealactiv[t][j] == ' '  ||  mealactiv[t][j] == '\t'  ||
	mealactiv[t][j] == '\r'  ||  mealactiv[t][j] == '\n')
      {
      mealactiv[t][j]='_';
      }
    else
      k=1;	/* has real character */
    }
  if (k == 0)
    strcpy(mealactiv[t],"None");
	/* strip out leading and trailing underscores */
  for (j=0; j<strlen(mealactiv[t]); j++)
    if (mealactiv[t][j] != '_')
      break;
  if (j > 0)
    {
    for (k=0; k<strlen(mealactiv[t])-j; k++)
      mealactiv[t][k]=mealactiv[t][k+j];
    mealactiv[t][k]=0;
    }
  for (j=strlen(mealactiv[t])-1; j>0; j--)
    if (mealactiv[t][j] != '_')
      break;
  mealactiv[t][j+1]=0;
  t++;
  }
fclose(fpt);


printf("\nFIXING=>%s\n",argv[1]);
fpt=fopen(argv[1],"wb");
fprintf(fpt,"%s\n",start);
for (i=0; i<t; i++)
  fprintf(fpt,"%s %s %s %s %s %s %s %s\n",
	mealname[i],mealstart[i],mealend[i],
	mealloc[i],mealserv[i],mealcomp[i],
	mealfoods[i],mealactiv[i]);
fprintf(fpt,"%s\n",end);
fclose(fpt);

}

