/************************************************************************ ** ** FILE : filetraio.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "filetraio.h" #include "tra.h" #include "misc.h" #include "hatraio.h" #include #include /************************************************************************* ** FUNKTION: FileSaveTra ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void FileSaveTra( f) FILE *f; { register int i; register TRANSITION **t; for (i=0, t=TraTrans; iName, (*t)->Prio, (*t)->PosTrans.x, (*t)->PosTrans.y, (*t)->PosName.x, (*t)->PosName.y, (int)((*t)->Break), (*t)->Darstellung); } /************************************************************************* ** FUNKTION: FileLoadTra ** ZWECK: laedt eine Trans und installiert sie ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ #define RETURN_ON_ERROR() { free( t); return NOT_OK;} BOOLEAN FileLoadTra( b) char *b; { int TNr; int i; TRANSITION *t; char *p, *z; int h; t = (TRANSITION *)malloc( sizeof( TRANSITION)); if ( sscanf( b, "T%d", &TNr) != 1) RETURN_ON_ERROR(); for (i=0, p=b; ( (i<20) && (*p != '~') ); i++, p++); if (i==20) RETURN_ON_ERROR(); for (++p, z=t->Name; ( (i<40) && (*p != '~') ); i++, p++, z++) *z = *p; if (i==40) RETURN_ON_ERROR(); *z = EOL; i = sscanf( ++p, "%d %d %d %d %d %d %c\n", &(t->Prio), &(t->PosTrans.x), &(t->PosTrans.y), &(t->PosName.x), &(t->PosName.y), &h, &(t->Darstellung) ); if (i != 7) RETURN_ON_ERROR(); t->Break = (char)(h); HaTraInsertX( TNr, t); return OK; }