Code:
   unsigned long int seek=file.length;
   s = ffread();
   seek--;
// Ich vermute, damit willst du erreichen, nicht über das Ende der Datei "hinauszulesen".
// Geht so aber nicht, weil du nicht berücksichtigst, wo in der Datei du gerade bist.
   do {
      strcat(name, (char*) s);
// Schon wieder zu kompliziert gedacht (und das Gedachte auch falsch realisiert).
// Warum nicht einfach *name++ = s; ?
// (dann aber nach der Schleife die Terminierung nicht vergessen: *name = 0; )
      s = ffread();
    } while ((s=='=') || !(seek--));
// while heißt "während" und nicht "bis".
// Deine Bedingung hat die falsche Logik.