:

# Define the variables. Edit config.dat if you want to make changes.
# Appel de toutes les variables modifiables par l'utilisateur.
# C'est donc dans config.dat que vous devez faire vos modifications.
. ./config.dat
. ./version.sh


########################################################################
echo "Language selection - selection de langue"
if [ $LCRZODEF_LANG = 1 ] ; then
  echo " English - Anglais"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo " Francais - French"
else
  echo "Error : Unknown language : verify LCRZODEF_LANG"
  echo "Erreur : Langue inconnue : verifiez LCRZODEF_LANG"
  exit
fi


########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "System selection"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Selection du systeme"
fi

case $LCRZODEF_SYS in
 "Linux_X_i386" )
    LCRZODEF_ENDIANLITTLE=1
    LCRZODEF_ENDIANBIG=0
    LCRZODEF_SYSTEM="Linux"
    LCRZODEF_SYSVER="Linux_X"
    ;;
 "FreeBSD_3_i386" )
    LCRZODEF_ENDIANLITTLE=1
    LCRZODEF_ENDIANBIG=0
    LCRZODEF_SYSTEM="FreeBSD"
    LCRZODEF_SYSVER="FreeBSD_3"
    ;;
 "FreeBSD_4_i386" )
    LCRZODEF_ENDIANLITTLE=1
    LCRZODEF_ENDIANBIG=0
    LCRZODEF_SYSTEM="FreeBSD"
    LCRZODEF_SYSVER="FreeBSD_4"
    ;;
 "Solaris_24_Sparc" )
    LCRZODEF_ENDIANLITTLE=0
    LCRZODEF_ENDIANBIG=1
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_24"
    ;;
 "Solaris_25_Sparc" )
    LCRZODEF_ENDIANLITTLE=0
    LCRZODEF_ENDIANBIG=1
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_25"
    ;;
 "Solaris_26_Sparc" )
    LCRZODEF_ENDIANLITTLE=0
    LCRZODEF_ENDIANBIG=1
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_26"
    ;;
 "Solaris_27_i386" )
    LCRZODEF_ENDIANLITTLE=1
    LCRZODEF_ENDIANBIG=0
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_27"
    ;;
 "Solaris_27_Sparc" )
    LCRZODEF_ENDIANLITTLE=0
    LCRZODEF_ENDIANBIG=1
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_27"
    ;;
 "Solaris_28_i386" )
    LCRZODEF_ENDIANLITTLE=1
    LCRZODEF_ENDIANBIG=0
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_28"
    ;;
 "Solaris_28_Sparc" )
    LCRZODEF_ENDIANLITTLE=0
    LCRZODEF_ENDIANBIG=1
    LCRZODEF_SYSTEM="Solaris"
    LCRZODEF_SYSVER="Solaris_28"
    ;;
 * )
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: unknown LCRZODEF_SYS";
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: LCRZODEF_SYS inconnu";
    fi
    exit ;;
esac


########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Program selection"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Selection des programmes"
fi

case $LCRZODEF_SYSTEM in
 "Linux" )
    LCRZODEF_PROGCC=gcc
    LCRZODEF_PROGAR=ar
    ;;
 "FreeBSD" )
    LCRZODEF_PROGCC=gcc
    LCRZODEF_PROGAR=ar
    ;;
 "Solaris" )
    LCRZODEF_PROGCC=gcc
    LCRZODEF_PROGAR=ar
    ;;
 * )
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: unknown LCRZODEF_SYSTEM";
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: LCRZODEF_SYSTEM inconnu";
    fi
    exit ;;
esac

type $LCRZODEF_PROGCC 2> /dev/null 1> /dev/null
if [ "$?Z" != "0Z" ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the compiler '$LCRZODEF_PROGCC' wasn't found"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le compilateur '$LCRZODEF_PROGCC' n'a pas ete trouve"
  fi
  exit
else
  echo " $LCRZODEF_PROGCC ok"
fi

type $LCRZODEF_PROGAR 2> /dev/null 1> /dev/null
if [ "$?Z" != "0Z" ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Erreur: the archive program '$LCRZODEF_PROGAR' wasn't found"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: l'archiveur '$LCRZODEF_PROGAR' n'a pas ete trouve"
  fi
  exit
else
  echo " $LCRZODEF_PROGAR ok"
fi


########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Directory selection"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Selection des repertoires"
fi

case $LCRZODEF_SYSTEM in
 "Linux" )
    LCRZODEF_INSTINCLUDE=/usr/local/include
    LCRZODEF_INSTLIB=/usr/local/lib
    LCRZODEF_INSTBIN=/usr/local/bin
    LCRZODEF_INSTMAN1=/usr/local/man/man1
    LCRZODEF_INSTMAN3=/usr/local/man/man3
    ;;
 "FreeBSD" )
    LCRZODEF_INSTINCLUDE=/usr/local/include
    LCRZODEF_INSTLIB=/usr/local/lib
    LCRZODEF_INSTBIN=/usr/local/bin
    LCRZODEF_INSTMAN1=/usr/local/man/man1
    LCRZODEF_INSTMAN3=/usr/local/man/man3
    ;;
 "Solaris" )
    LCRZODEF_INSTINCLUDE=/usr/local/include
    LCRZODEF_INSTLIB=/usr/local/lib
    LCRZODEF_INSTBIN=/usr/local/bin
    LCRZODEF_INSTMAN1=/usr/local/man/man1
    LCRZODEF_INSTMAN3=/usr/local/man/man3
    ;;
 * )
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: unknown LCRZODEF_SYSTEM";
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: LCRZODEF_SYSTEM inconnu";
    fi
    exit ;;
esac

if [ ! -d $LCRZODEF_INSTINCLUDE ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the include directory '$LCRZODEF_INSTINCLUDE' doesn't exists"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le repertoire d'include '$LCRZODEF_INSTINCLUDE' n'existe pas"
  fi
  exit
else
  echo " $LCRZODEF_INSTINCLUDE ok"
fi
if [ ! -d $LCRZODEF_INSTLIB ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the library directory '$LCRZODEF_INSTLIB' doesn't exists"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le repertoire de biblio. '$LCRZODEF_INSTLIB' n'existe pas"
  fi 
  exit
else
  echo " $LCRZODEF_INSTLIB ok"
fi
if [ ! -d $LCRZODEF_INSTBIN ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the binary directory '$LCRZODEF_INSTBIN' doesn't exists"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le repertoire de binaire '$LCRZODEF_INSTBIN' n'existe pas"
  fi
  exit
else
  echo " $LCRZODEF_INSTBIN ok"
fi
if [ ! -d $LCRZODEF_INSTMAN1 ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the help directory '$LCRZODEF_INSTMAN1' doesn't exists"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le repertoire d'aide '$LCRZODEF_INSTMAN1' n'existe pas"
  fi
  exit
else
  echo " $LCRZODEF_INSTMAN1 ok"
fi
if [ ! -d $LCRZODEF_INSTMAN3 ] ; then
  if [ $LCRZODEF_LANG = 1 ] ; then
    echo "Error: the help directory '$LCRZODEF_INSTMAN3' doesn't exists"
  elif [ $LCRZODEF_LANG = 2 ] ; then
    echo "Erreur: le repertoire d'aide '$LCRZODEF_INSTMAN3' n'existe pas"
  fi
  exit
else
  echo " $LCRZODEF_INSTMAN3 ok"
fi


########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Compilation options selection"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Selection des options de compilation"
fi

case $LCRZODEF_SYSTEM in
 "Linux" )
    gccOpt="-Wall -ansi"
    ;;
 "FreeBSD" )
    gccOpt="-Wall -ansi"
    ;;
 "Solaris" )
    gccOpt="-Wall -ansi"
    ;;
 * )
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: unknown LCRZODEF_SYSTEM";
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: LCRZODEF_SYSTEM inconnu";
    fi
    exit ;;
esac


########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Library selection"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Selection des bibliotheques"
fi

case $LCRZODEF_SYSTEM in
 "Linux" )
    gccLib=""
    ;;
 "FreeBSD" )
    gccLib=""
    ;;
 "Solaris" )
    gccLib="-lsocket -lnsl"
    ;;
 * )
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: unknown LCRZODEF_SYSTEM";
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: LCRZODEF_SYSTEM inconnu";
    fi
    exit ;;
esac

#---------
# we have libpcap - disponibilite de libpcap
if [ $LCRZODEF_LIBPCAPINSTALLED = 1 ] ; then
  gccLib="$gccLib -lpcap"
  # on tente de compiler le programme factice suivant
  cat > config.verif.tmp.c <<EOF
   void *pcap_open_live(char *d, int s, int p, int t, char *e);
   int main(void);
   int main(void)
   { char e[1000];
     void * t;
     t = pcap_open_live(e, 0, 0, 0, e);
     return(0);
   }
EOF
  commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
  $commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
  if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: the library libpcap doesn't seemed to be installed"
      echo "--------I used the command :"
      echo "  $commande_compil"
      echo "--------I wasn't able to compil the folowing test :"
      cat config.verif.tmp.c
      echo "--------I got the folowing errors :"
      cat config.verif.tmp.err
      echo "--------If you do not want to use libpcap, edit config.dat"
      echo "to put inside 'LCRZODEF_LIBPCAPINSTALLED=0'. Then, you will not "
      echo "be able to sniff packets on the wire."
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: la bibliotheque libpcap ne semble pas installee"
      echo "--------J'ai utilise la commande :"
      echo "  $commande_compil"
      echo "--------Je n'ai pas pu compiler le programme de test suivant :"
      cat config.verif.tmp.c
      echo "--------J'ai obtenu les erreurs suivantes :"
      cat config.verif.tmp.err
      echo "--------Si vous desirez ne pas utiliser libpcap, editez config.dat"
      echo "pour y mettre 'LCRZODEF_LIBPCAPINSTALLED=0'. Vous ne pourrez "
      echo "alors pas sniffer les paquets du reseau."
    fi
    exit
  else
    echo " libpcap ok"
  fi
  rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 
fi

#---------
# we have libnet - disponibilite de libnet
LCRZODEF_LIBNETINSTALLED=0
gccOptLibnet="$gccOpt"
if [ $LCRZODEF_LIBNETINSTALLED = 1 ] ; then
  gccLib="$gccLib -lnet"
  type libnet-config 2> /dev/null 1> /dev/null
  if [ "$?Z" != "0Z" ] ; then
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Warning: the program libnet-config wasn't found"
      echo "         You may encounter problems with libnet."
      echo "Press ENTER to continue."
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Warning: le programme libnet-config n'a pas ete trouve"
      echo "         vous risquez de rencontrer des problemes avec libnet."
      echo "Pressez la touche ENTREE pour continuer."
    fi
    read toto
  else
    echo " libnet-config ok"
    gccOptLibnet="$gccOpt "`libnet-config --defines`
  fi

  # on tente de compiler le programme factice suivant
  cat > config.verif.tmp.c <<EOF
   int libnet_destroy_packet(char **b);
   int main(void);
   int main(void)
   { char ** t;
     libnet_destroy_packet(t);
     return(0);
   }
EOF
  commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
  $commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
  if [ "$?Z" != "0Z" ] ; then
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Error: the library libnet doesn't seemed to be installed"
      echo "--------I used the command :"
      echo "  $commande_compil"
      echo "--------I wasn't able to compil the folowing test :"
      cat config.verif.tmp.c
      echo "--------I got the folowing errors :"
      cat config.verif.tmp.err
      echo "--------If you do not want to use libnet, edit config.dat"
      echo "to put inside 'LCRZODEF_LIBPCAPINSTALLED=0'."
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Erreur: la bibliotheque libnet ne semble pas installee"
      echo "--------J'ai utilise la commande :"
      echo "  $commande_compil"
      echo "--------Je n'ai pas pu compiler le programme de test suivant :"
      cat config.verif.tmp.c
      echo "--------J'ai obtenu les erreurs suivantes :"
      cat config.verif.tmp.err
      echo "--------Si vous desirez ne pas utiliser libnet, editez config.dat "
      echo "pour y mettre 'LCRZODEF_LIBNETINSTALLED=0'."
    fi
    exit
  else
    echo " libnet ok"
  fi
  rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 

fi


########################################################################
########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Verify the present functions"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Verification de la presence de certaines fonctions"
fi

# on tente de compiler le programme factice suivant
cat > config.verif.tmp.c <<EOF
 int ether_ntohost(char *para1, char *para2);
 int main(void);
 int main(void)
 { char p1[10], p2[10];
   ether_ntohost(p1, p2);
   return(0);
 }
EOF
commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
$commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
  echo " ether_ntohost ko"
  LCRZODEF_HAVEFONC_ETHER_NTOHOST=0
else
  echo " ether_ntohost ok"
  LCRZODEF_HAVEFONC_ETHER_NTOHOST=1
fi
rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err

# on tente de compiler le programme factice suivant
cat > config.verif.tmp.c <<EOF
 int ether_hostton(char *para1, char *para2);
 int main(void);
 int main(void)
 { char p1[10], p2[10];
   int t;
   t=strlen("t")+strlen("u"); /*sans cela, pas de bug ...*/
   ether_hostton(p1, p2);
   return(0);
 }
EOF
commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
$commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
  echo " ether_hostton ko"
  LCRZODEF_HAVEFONC_ETHER_HOSTTON=0
else
  echo " ether_hostton ok"
  ./config.verif.tmp 2> config.verif.tmp.err 1> config.verif.tmp.err
  if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
    echo " exec ether_hostton ko"
    rm -f core
    LCRZODEF_HAVEFONC_ETHER_HOSTTON=0
    if [ $LCRZODEF_LANG = 1 ] ; then
      echo "Warning: you are on a computed with a bad ether_hostton."
      echo "         The library lcrzo will still be usable, but read "
      echo "         ../doc/knownproblems_us.txt if you want to use the file"
      echo "         /etc/ethers."
      echo "Press ENTER to continue."
    elif [ $LCRZODEF_LANG = 2 ] ; then
      echo "Warning: vous etes sur une machine avec ether_hostton bogue."
      echo "         La bibliotheque lcrzo fonctionnera quand meme, mais"
      echo "         lisez ../doc/knownproblems_fr.txt si vous voulez utiliser"
      echo "         le contenu de /etc/ethers."
      echo "Pressez la touche ENTREE pour continuer."
    fi
    read toto
  else
    echo " exec ether_hostton ok"
    LCRZODEF_HAVEFONC_ETHER_HOSTTON=1
  fi
fi
rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 

# on tente de compiler le programme factice suivant
cat > config.verif.tmp.c <<EOF
 char *hstrerror(int para);
 int main(void);
 int main(void)
 { char *p;
   p=hstrerror(10);
   return(0);
 }
EOF
commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
$commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
  echo " hstrerror ko"
  LCRZODEF_HAVEFONC_HSTRERROR=0
else
  echo " hstrerror ok"
  LCRZODEF_HAVEFONC_HSTRERROR=1
fi
rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 

# on tente de compiler le programme factice suivant
cat > config.verif.tmp.c <<EOF
 int snprintf(char *str, int n, const char *format, ... );
 int main(void);
 int main(void)
 { char *p;
   snprintf(p, 3, "%d",5);
   return(0);
 }
EOF
commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
$commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
  echo " snprintf ko"
  LCRZODEF_HAVEFONC_SNPRINTF=0
else
  echo " snprintf ok"
  LCRZODEF_HAVEFONC_SNPRINTF=1
fi
rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 

# on tente de compiler le programme factice suivant
cat > config.verif.tmp.c <<EOF
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <net/if.h>
 #include <sys/ioctl.h>
 #include <net/bpf.h>
 int main(void);
 int main(void)
 { int fd, un;
   ioctl(fd, BIOCSHDRCMPLT, &un);
   return(0);
 }
EOF
commande_compil="$LCRZODEF_PROGCC -o config.verif.tmp config.verif.tmp.c $gccLib"
$commande_compil 2> config.verif.tmp.err 1> config.verif.tmp.err
if [ "$?Z" != "0Z" -a "Z$crossCompil" != "Z1" ] ; then
  echo " ioctl_biocshdrcmplt ko"
  LCRZODEF_HAVEFONC_IOCTL_BIOCSHDRCMPLT=0
else
  echo " ioctl_biocshdrcmplt ok"
  LCRZODEF_HAVEFONC_IOCTL_BIOCSHDRCMPLT=1
fi
rm -f config.verif.tmp.c config.verif.tmp config.verif.tmp.err 


########################################################################
########################################################################
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "Generate the different files"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Generation des differents fichiers"
fi

#########
if [ $LCRZODEF_LANG = 1 ] ; then
  echo " Creation of lcrzo_defs.h"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo " Creation de lcrzo_defs.h"
fi
echo "#define LCRZODEF_LANG $LCRZODEF_LANG" > lcrzo_defs.h
echo "#define LCRZODEF_SYS \"$LCRZODEF_SYS\"" >> lcrzo_defs.h
echo "#define LCRZODEF_SYS_$LCRZODEF_SYS 1" >> lcrzo_defs.h
echo "#define LCRZODEF_SYSTEM \"$LCRZODEF_SYSTEM\"" >> lcrzo_defs.h
echo "#define LCRZODEF_SYSTEM_$LCRZODEF_SYSTEM 1" >> lcrzo_defs.h
echo "#define LCRZODEF_SYSVER \"$LCRZODEF_SYSVER\"" >> lcrzo_defs.h
echo "#define LCRZODEF_SYSVER_$LCRZODEF_SYSVER 1" >> lcrzo_defs.h
echo "#define LCRZODEF_ENDIANLITTLE $LCRZODEF_ENDIANLITTLE" >> lcrzo_defs.h
echo "#define LCRZODEF_ENDIANBIG $LCRZODEF_ENDIANBIG" >> lcrzo_defs.h
echo "#define LCRZODEF_VERSION \"$LCRZODEF_VERSION\"" >> lcrzo_defs.h
echo "#define LCRZODEF_LIBPCAPINSTALLED $LCRZODEF_LIBPCAPINSTALLED">>lcrzo_defs.h
echo "#define LCRZODEF_LIBNETINSTALLED $LCRZODEF_LIBNETINSTALLED" >> lcrzo_defs.h
echo "#define LCRZODEF_PROGCC \"$LCRZODEF_PROGCC\"" >> lcrzo_defs.h
echo "#define LCRZODEF_PROGAR \"$LCRZODEF_PROGAR\"" >> lcrzo_defs.h
echo "#define LCRZODEF_INSTINCLUDE \"$LCRZODEF_INSTINCLUDE\"" >> lcrzo_defs.h
echo "#define LCRZODEF_INSTLIB \"$LCRZODEF_INSTLIB\"" >> lcrzo_defs.h
echo "#define LCRZODEF_INSTBIN \"$LCRZODEF_INSTBIN\"" >> lcrzo_defs.h
echo "#define LCRZODEF_INSTMAN1 \"$LCRZODEF_INSTMAN1\"" >> lcrzo_defs.h
echo "#define LCRZODEF_INSTMAN3 \"$LCRZODEF_INSTMAN3\"" >> lcrzo_defs.h
echo "#define LCRZODEF_HAVEFONC_ETHER_NTOHOST $LCRZODEF_HAVEFONC_ETHER_NTOHOST" >> lcrzo_defs.h
echo "#define LCRZODEF_HAVEFONC_ETHER_HOSTTON $LCRZODEF_HAVEFONC_ETHER_HOSTTON" >> lcrzo_defs.h
echo "#define LCRZODEF_HAVEFONC_HSTRERROR $LCRZODEF_HAVEFONC_HSTRERROR" >> lcrzo_defs.h
echo "#define LCRZODEF_HAVEFONC_SNPRINTF $LCRZODEF_HAVEFONC_SNPRINTF" >> lcrzo_defs.h
echo "#define LCRZODEF_HAVEFONC_IOCTL_BIOCSHDRCMPLT $LCRZODEF_HAVEFONC_IOCTL_BIOCSHDRCMPLT" >> lcrzo_defs.h


#########
# special end ; you should not use
if [ "$1." = "test." ] ; then
  return
fi


#########
if [ $LCRZODEF_LANG = 1 ] ; then
  echo " Determine user:group needed to install"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo " Determination du user:groupe d'installation"
fi
case $LCRZODEF_SYSTEM in
 "Linux" )
    usergroupe="root:root"
    ;;
 "FreeBSD" )
    usergroupe="root:wheel"
    ;;
 "Solaris" )
    usergroupe="bin:bin"
    ;;
 * )
    usergroupe="root:root"
esac


#########
if [ $LCRZODEF_LANG = 1 ] ; then
  echo " Creation of makefile in src"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo " Creation du makefile de src"
fi
cat > Makefile <<EOF
#----------------------------------------------------------------------
# This file was generated with ./genemake
# Ce fichier a ete genere avec ./genemake

#----------------------------------------------------------------------
# variables modifiables
CC=$LCRZODEF_PROGCC
AR=$LCRZODEF_PROGAR
INSTINCLUDE=$LCRZODEF_INSTINCLUDE
INSTLIB=$LCRZODEF_INSTLIB
INSTBIN=$LCRZODEF_INSTBIN
INSTMAN1=$LCRZODEF_INSTMAN1
INSTMAN3=$LCRZODEF_INSTMAN3

GCCOPTb=-g -O -Wtraditional -Wshadow -Wpointer-arith
GCCOPTc=-Wcast-qual -Wwrite-strings -Wcast-align
GCCOPTd=-Wstrict-prototypes -Wnested-externs -Werror
GCCOPTe=-Wmissing-prototypes -Wmissing-declarations -Wid-clash-32
#GCCOPT=$gccOpt \$(GCCOPTb) \$(GCCOPTc) \$(GCCOPTd) \$(GCCOPTe)
#GCCOPTL=$gccOptLibnet \$(GCCOPTb) \$(GCCOPTc) \$(GCCOPTd) \$(GCCOPTe)
GCCOPT=$gccOpt
GCCOPTL=$gccOptLibnet

#----------------------------------------------------------------------

# we want ... - on veut ...
all: liblcrzo.a

# object list
# liste des objets a faire
lcrzo_address.o: lcrzo_address.h lcrzo_address.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_device.o: lcrzo_device.h lcrzo_device.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_data.o: lcrzo_data.h lcrzo_data.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_string.o: lcrzo_string.h lcrzo_string.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_header.o: lcrzo_header.h lcrzo_header.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_ipopt.o: lcrzo_ipopt.h lcrzo_ipopt.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_tcpopt.o: lcrzo_tcpopt.h lcrzo_tcpopt.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_packet.o: lcrzo_packet.h lcrzo_packet.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_file.o: lcrzo_file.h lcrzo_file.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_print.o: lcrzo_print.h lcrzo_print.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_record.o: lcrzo_record.h lcrzo_record.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_ipc.o: lcrzo_ipc.h lcrzo_ipc.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_list.o: lcrzo_list.h lcrzo_list.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_conf.o: lcrzo_conf.h lcrzo_conf.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_spoof.o: lcrzo_spoof.h lcrzo_spoof.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_sniff.o: lcrzo_sniff.h lcrzo_sniff.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_cliser.o: lcrzo_cliser.h lcrzo_cliser.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_time.o: lcrzo_time.h lcrzo_time.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_global.o: lcrzo_global.h lcrzo_global.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_error.o: lcrzo_error.h lcrzo_error.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_misc.o: lcrzo_misc.h lcrzo_misc.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_priv.o: lcrzo_priv.h lcrzo_priv.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPT) -c \$*.c -o \$*.o
lcrzo_sysdep.o: lcrzo_sysdep.h lcrzo_sysdep.c lcrzo.h lcrzo_defs.h
	\$(CC) \$(GCCOPTL) -c \$*.c -o \$*.o

# creation of the library
# creation de la librairie
OBJETS1=lcrzo_address.o lcrzo_device.o lcrzo_data.o 
OBJETS2=lcrzo_string.o lcrzo_header.o lcrzo_ipopt.o 
OBJETS3=lcrzo_tcpopt.o lcrzo_packet.o lcrzo_file.o 
OBJETS4=lcrzo_print.o lcrzo_record.o lcrzo_ipc.o 
OBJETS5=lcrzo_list.o lcrzo_conf.o lcrzo_spoof.o 
OBJETS6=lcrzo_sniff.o lcrzo_cliser.o lcrzo_time.o 
OBJETS7=lcrzo_global.o lcrzo_error.o lcrzo_misc.o 
OBJETS8=lcrzo_priv.o lcrzo_sysdep.o 
OBJETSa=\$(OBJETS1) \$(OBJETS2) \$(OBJETS3) \$(OBJETS4) \$(OBJETS5) \$(OBJETS6)
OBJETS=\$(OBJETSa) \$(OBJETS7) \$(OBJETS8)
liblcrzo.a: \$(OBJETS)
	\$(AR) -crs liblcrzo.a \$(OBJETS1)
	\$(AR) -rs liblcrzo.a \$(OBJETS2)
	\$(AR) -rs liblcrzo.a \$(OBJETS3)
	\$(AR) -rs liblcrzo.a \$(OBJETS4)
	\$(AR) -rs liblcrzo.a \$(OBJETS5)
	\$(AR) -rs liblcrzo.a \$(OBJETS6)
	\$(AR) -rs liblcrzo.a \$(OBJETS7)
	\$(AR) -rs liblcrzo.a \$(OBJETS8)

# install : to do when everything is ok
# installation : a faire quand tout est ok
install: liblcrzo.a
	cp lcrzo*.h \$(INSTINCLUDE)
	cp liblcrzo.a \$(INSTLIB)
EOF

if [ $LCRZODEF_LANG = 2 ] ; then
  l="fr.3 \$(INSTMAN3)"
else
  l="us.3 \$(INSTMAN3)"
fi
echo "	cp ../doc/man/lcrzo_$l/lcrzo.3" >> Makefile
echo "	cp ../doc/man/lcrzo_address_$l/lcrzo_address.3" >> Makefile
echo "	cp ../doc/man/lcrzo_cliser_$l/lcrzo_cliser.3" >> Makefile
echo "	cp ../doc/man/lcrzo_conf_$l/lcrzo_conf.3" >> Makefile
echo "	cp ../doc/man/lcrzo_data_$l/lcrzo_data.3" >> Makefile
echo "	cp ../doc/man/lcrzo_device_$l/lcrzo_device.3" >> Makefile
echo "	cp ../doc/man/lcrzo_error_$l/lcrzo_error.3" >> Makefile
echo "	cp ../doc/man/lcrzo_file_$l/lcrzo_file.3" >> Makefile
echo "	cp ../doc/man/lcrzo_global_$l/lcrzo_global.3" >> Makefile
echo "	cp ../doc/man/lcrzo_header_$l/lcrzo_header.3" >> Makefile
echo "	cp ../doc/man/lcrzo_ipc_$l/lcrzo_ipc.3" >> Makefile
echo "	cp ../doc/man/lcrzo_ipopt_$l/lcrzo_ipopt.3" >> Makefile
echo "	cp ../doc/man/lcrzo_list_$l/lcrzo_list.3" >> Makefile
echo "	cp ../doc/man/lcrzo_misc_$l/lcrzo_misc.3" >> Makefile
echo "	cp ../doc/man/lcrzo_packet_$l/lcrzo_packet.3" >> Makefile
echo "	cp ../doc/man/lcrzo_print_$l/lcrzo_print.3" >> Makefile
echo "	cp ../doc/man/lcrzo_record_$l/lcrzo_record.3" >> Makefile
echo "	cp ../doc/man/lcrzo_sniff_$l/lcrzo_sniff.3" >> Makefile
echo "	cp ../doc/man/lcrzo_spoof_$l/lcrzo_spoof.3" >> Makefile
echo "	cp ../doc/man/lcrzo_string_$l/lcrzo_string.3" >> Makefile
echo "	cp ../doc/man/lcrzo_tcpopt_$l/lcrzo_tcpopt.3" >> Makefile
echo "	cp ../doc/man/lcrzo_time_$l/lcrzo_time.3" >> Makefile
echo "	cp ../doc/man/lcrzo_types_$l/lcrzo_types.3" >> Makefile

# we start again - on recommence
cat >> Makefile <<EOF
	chown $usergroupe \$(INSTINCLUDE)/lcrzo*.h
	chown $usergroupe \$(INSTLIB)/liblcrzo.a
	chown $usergroupe \$(INSTMAN3)/lcrzo.3
	chmod 444 \$(INSTINCLUDE)/lcrzo*.h
	chmod 444 \$(INSTLIB)/liblcrzo.a
	chmod 444 \$(INSTMAN3)/lcrzo*.3

# complete install
installall: install
	cd ../lcrzoex ; make install

# desinstallation
uninstall: 
	-rm \$(INSTINCLUDE)/lcrzo*.h 
	-rm \$(INSTLIB)/liblcrzo.a 
	-rm \$(INSTMAN3)/lcrzo*.3

# cleanning - menage
clean:
	rm -f \$(OBJETS1)
	rm -f \$(OBJETS2)
	rm -f \$(OBJETS3)
	rm -f \$(OBJETS4)
	rm -f \$(OBJETS5)
	rm -f \$(OBJETS6)
	rm -f \$(OBJETS7)
	rm -f \$(OBJETS8)
	rm -f liblcrzo.a

cleanall: clean
	rm -f lcrzo_defs.h Makefile

EOF


#########
if [ $LCRZODEF_LANG = 1 ] ; then
  echo " Creation of makefile for examples"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo " Creation du makefile des exemples"
fi
cat > ../lcrzoex/Makefile <<EOF
#----------------------------------------------------------------------
# This file was generated with ../lcrzo/genemake
# Ce fichier a ete genere avec ../lcrzo/genemake

#----------------------------------------------------------------------
# variables modifiables
CC=$LCRZODEF_PROGCC
AR=$LCRZODEF_PROGAR
INSTINCLUDE=../lcrzo
INSTLIB=../lcrzo
# once liblcrzo.a is installed, you should to use these two variables
# quand liblcrzo.a est installe, vous devriez utiliser ces 2 variables
#INSTINCLUDE=$LCRZODEF_INSTINCLUDE
#INSTLIB=$LCRZODEF_INSTLIB
INSTBIN=$LCRZODEF_INSTBIN
INSTMAN1=$LCRZODEF_INSTMAN1

GCCOPTb=-g -O -Wtraditional -Wshadow -Wpointer-arith
GCCOPTc=-Wcast-qual -Wwrite-strings -Wcast-align
GCCOPTd=-Wstrict-prototypes -Wnested-externs -Werror
GCCOPTe=-Wmissing-prototypes -Wmissing-declarations -Wid-clash-32
#GCCOPT=$gccOpt \$(GCCOPTb) \$(GCCOPTc) \$(GCCOPTd) \$(GCCOPTe)
GCCOPT=$gccOpt

#----------------------------------------------------------------------
# we want only lcrzoex - on veut lcrzoex
all: lcrzoex

# program compilation - compilation du programme
lcrzoex: lcrzoex.c \$(INSTLIB)/liblcrzo.a
	\$(CC) \$(GCCOPT) -I\$(INSTINCLUDE) -o lcrzoex lcrzoex.c -L\$(INSTLIB) -llcrzo $gccLib

# installation : when everything is ok - a faire quand tout est ok
install: lcrzoex
	cp lcrzoex \$(INSTBIN)
	chown $usergroupe \$(INSTBIN)/lcrzoex
	chmod 555 \$(INSTBIN)/lcrzoex
EOF

if [ $LCRZODEF_LANG = 1 ] ; then
  echo "	cp ../doc/man/lcrzoex_us.1 \$(INSTMAN1)/lcrzoex.1" >> ../lcrzoex/Makefile
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "	cp ../doc/man/lcrzoex_fr.1 \$(INSTMAN1)/lcrzoex.1" >> ../lcrzoex/Makefile
fi

# we start again - on recommence
cat >> ../lcrzoex/Makefile <<EOF
	chmod 444 \$(INSTMAN1)/lcrzoex.1

# generic compilation - compilation generique
%: %.c
	\$(CC) \$(GCCOPT) -I\$(INSTINCLUDE) -o \$@ \$< -L\$(INSTLIB) -llcrzo $gccLib

# cleaning - menage
clean:
	rm -f lcrzoex lcrzoex.static ex1 core lcrzoex_0*.o
cleanall: clean
	rm -f Makefile

EOF


########################################################################
########################################################################
echo "Conclusion"
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "  We will compile with option :"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "  Vous allez compiler avec l'option :"
fi
echo "   LCRZODEF_SYS=\"$LCRZODEF_SYS\""
echo "    LCRZODEF_SYSTEM=\"$LCRZODEF_SYSTEM\""
echo "    LCRZODEF_SYSVER=\"$LCRZODEF_SYSVER\""

if [ $LCRZODEF_ENDIANLITTLE = 1 ] ; then
  echo "    LCRZODEF_ENDIANLITTLE=$LCRZODEF_ENDIANLITTLE (i386)"
fi
if [ $LCRZODEF_ENDIANBIG = 1 ] ; then
  echo "    LCRZODEF_ENDIANBIG=$LCRZODEF_ENDIANBIG (Sparc)"
fi
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "  On a system :"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "  Sur une architecture :"
fi
echo "   systeme : "`(uname -s) 2>/dev/null`
echo "   release : "`(uname -r) 2>/dev/null`
echo "   machine : "`(uname -m) 2>/dev/null`
if [ $LCRZODEF_LANG = 1 ] ; then
  echo "  If it is not ok, look at INSTALL_US.TXT, then edit config.dat."
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "  Si c'est incorrect, regardez INSTALL_FR.TXT et editez config.dat."
fi

if [ $LCRZODEF_LANG = 1 ] ; then
  echo "End of genemake"
elif [ $LCRZODEF_LANG = 2 ] ; then
  echo "Fin de genemake"
fi

