#!/bin/sh

# Shellscript mit " chmod u+x dateiname " freigeben!

# Aufruf: VM_spr_check Filename       (Filename kann Pfad enthalten!)

# Funktion: berprft SPR-File auf Richtigkeit 

i=$1 

if test -r $i
 then :
 else
  echo "Error:" $i "not a readable file!"
  exit 1
fi

n=`echo $1 | sed 's#.*\/\([_0-9a-z\.]*\)$#\1#'`
echo $n

length=`cat $i | wc -l`

length=`expr $length + 0` 
#ntig, da sonst length im Argument von head als Dateiname interpretiert wird
char=`cat $i | wc -c`
a=`head -n $length $i | wc -c`
if test "$a" -lt "$char" 
 then echo "Error: \n in last line is missing!"
fi

a=`cat $i | grep '#'`
if test "$a" != ""
 then echo "Error: spr-File should not contain '#'!"
fi

a=`cat $i | tr '\011' '#' | grep "#" | wc -l`
if test $a -lt $length
 then echo "Error: In all lines columns should be separated by a 'TAB'!"
fi

a=`head -n 1 $i | tr '\011' '#' | egrep "^id#[A-Z][A-Z][A-Z]$" | sed s/id#//`
if test "$a" = ""
 then echo "Error: First line should contain 'id TAB Sprecherkrzel'!"
fi
spk=`echo $n | sed 's/[gejm]_\([a-z][a-z][a-z]\)\.spr/\1/' | tr a-z A-Z`
if test $a != $spk
 then echo "Error: Speaker id in filename and entry for "id" are different!"
fi

a=`head -n 2 $i | tail -1 | tr '\011' '#' | egrep "^sex#[mf]$"`
if test "$a" = ""
 then echo "Error: Second line should contain 'sex TAB m' or 'sex TAB f'!"
fi

a=`head -n 3 $i | tail -1 | tr '\011' '#' | egrep '^date_of_birth#[0-9][0-9][01][0-9][0-3][0-9]$'`
if test "$a" = ""
 then echo "Error: Third line should contain 'date_of_birth TAB YYMMDD'!"
 else
  date=`echo $a | sed 's/date_of_birth#[0-9][0-9]\([01][0-9]\)[0-3][0-9]/\1/'`
  if test $date -gt 12
   then 
    echo "Error: Third line should contain 'date_of_birth TAB YYMMDD'!"
  fi
  date=`echo $a | sed 's/date_of_birth#[0-9][0-9][01][0-9]\([0-3][0-9]\)/\1/'`
  if test $date -gt 31
   then 
    echo "Error: Third line should contain 'date_of_birth TAB YYMMDD'!"
  fi
fi

runline=4 
length=`expr $length + 1` #vielleicht jetzt berflssig

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^own_native_language#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'own_native_language'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'own_native_language', then leave out entire line or colums not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1`
    lang=`echo $a | sed 's/own_native_language#//'`
    if test "$lang" = "German"
     then
      lang="g"
    elif test "$lang" = "g"
     then
      lang="g"
    elif test "$lang" = "English"
     then
      lang="e"
    elif test "$lang" = "e"
     then
      lang="e"
    elif test "$lang" = "Japanese"
     then
      lang="j"
    elif test "$lang" = "j"
     then
      lang="j"
     else echo "Error? own_native_language" $lang
    fi
    a=`echo $n | sed 's/\([a-z]\)_[a-z][a-z][a-z]\.spr/\1/'`
    if test "$lang" != "$a"
     then 
      echo "Error: Non-corresponding entries in filename and in 'own_native_language'!"
    fi
  fi  
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^native_language_father#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'native_language_father'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'native_language_father', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi


if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^native_language_mother#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'native_language_mother'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'native_language_mother', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^primary_school#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'primary_school'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'primary_school', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^dialect#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'dialect'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'dialect', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^education#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'education'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'education', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^profession#..*$'`
  if test "$a" = ""
   then 
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'profession'`
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'profession', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^height#[0-9]*cm$'`
  if test "$a" = ""
   then
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^height#[0-9]*foot$'`
    if test "$a" = ""
     then 
      a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'height'`
      if test "$a" != ""
       then 
        echo "Error: If there is no entry for 'height', then better leave out entire line or columns not separated by 'TAB'!" 
        runline=`expr $runline + 1`
      fi
     else
      runline=`expr $runline + 1` 
    fi   
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^weight#[0-9]*kg$'`
  if test "$a" = ""
   then
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^weight#[0-9]*pound$'`
    if test "$a" = ""
     then
      a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^weight#[0-9]*stone$'`
      if test "$a" = ""
       then
        a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'weight'`
        if test "$a" != ""
         then
          echo "Error: If there is no entry for 'weight', then better leave out entire line or columns not separated by 'TAB'!" 
      runline=`expr $runline + 1`
        fi
       else
        runline=`expr $runline + 1` 
      fi 
     else
      runline=`expr $runline + 1` 
    fi
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^smoker#[yn]$'`
  if test "$a" = ""
   then
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^smoker#former$'`
     if test "$a" = ""
      then
       a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'smoker'`
       if test "$a" != ""
        then 
         echo "Error: If the entry for 'smoker TAB y or n or former' is not known, then better leave out entire line!" 
      runline=`expr $runline + 1`
       fi
      else
       runline=`expr $runline + 1` 
     fi 
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^right_left_handed#[rl]$'`
  if test "$a" = ""
   then
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^right_left_handed#ambi$'`
     if test "$a" = ""
      then
       a=`head -n $runline $i | tail -1 | tr '\011' '#' | grep 'right_left_handed'`
       if test "$a" != ""
        then 
         echo "Error: If the entry for 'right_left_handed TAB r oder l oder ambi' is not known, then better leave out entire line!" 
      runline=`expr $runline + 1`
       fi
      else
       runline=`expr $runline + 1` 
     fi 
   else
    runline=`expr $runline + 1` 
  fi
fi

if test $runline -le $length
 then
  a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep '^comments#.*$'`
  if test "$a" = ""
   then
    a=`head -n $runline $i | tail -1 | tr '\011' '#' | egrep 'comments'` 
    if test "$a" != ""
     then 
      echo "Error: If there is no entry for 'comment', then better leave out entire line!" 
      runline=`expr $runline + 1`
    fi
   else
    runline=`expr $runline + 1` 
  fi 
 else
  runline=`expr $runline + 1` 
fi

if test $runline -ne $length
 then
  echo "A line is incorrect!"
fi
