// bords.c

// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.

#include <stdio.h>
#include "chl.h"

int *bords(Mot x, Longueur m) {
   int i, j, *bord;

   bord = (int *)malloc(m*sizeof(int));
   if (bord == NULL) error("bords");

   i = 0;
   for (j = 1; j <= m - 1; ++j) {
      bord[j - 1] = i;
      while (i >= 0 && x[j] != x[i])
         if (i == 0)
            i = -1;
         else
            i = bord[i - 1];
      ++i;
   }
   bord[m - 1] = i;
   return(bord);
}