#include <stdio.h>

/*
 =======================================================================

     ligstr =  sous programme C
               teste si la chaine de caracteres zlig2 est contenue
               dans la chaine de caracteres zlig1.

     parametres =
        e       zlig1   = chaine de caracteres a analyser,
        e       llig1   = longueur de la chaine de caracteres a analyser,
        e       zlig2   = chaine de caracteres a trouver,
        e       llig2   = longueur de la chaine de caracteres a trouver.

        retourne =
           kerr = 1 si zlig2 se trouve dans zlig1,
                    = 0 sinon.

     generiques =
         err    = erreur
      P...      = pointeur
      S...      = structure
       ...t     = tableau

     auteur = marimai.henaff    iut.orsay
     version 1.4 du 6/1/92

 =======================================================================
*/

int ligstr ( zlig1, llig1, zlig2, llig2)
char    *zlig1, *zlig2;

{

        /* ... variables locales ... */

        int     kerr;
        int     bfind;
        int     icar1, icar2, itmp1, itmp2;
        char    car1, car2 ;

        /* ... initialisations ...................................... */

        kerr = 0 ;
        icar1 = 0 ;

        car1 = zlig1[icar1] ;
        car2 = zlig2[0] ;

        /* ... debut du traitement .................................. */

        while ( ( !kerr) && ( icar1 < llig1 ) && ( car1 != '\0')) {

                if ( car1 != car2 ) {
                        icar1++ ;
                }
                else {
                   itmp1 = icar1 + 1;
                   icar2 = 0 ;

                   while ( ( car1 == car2) && ( icar1 < llig1 ) &&
                           ( icar2 < llig2)) {

                      car1 = zlig1[++icar1] ;
                      car2 = zlig2[++icar2] ;
                   }
                   if ( icar2 == llig2 ) {
                      kerr = 1 ;
                   }
                   else {
                      if ( icar1 < llig1 ) icar1 = itmp1 ;
                      car2 = zlig2[0] ;
                   }
                }
                car1 = zlig1[icar1] ;
        }


        /* ... fin du traitement .................................... */

        return ( kerr) ;

}
