void FsStatSaveFsStatSr2(FahrstrasseStruct *Data) { FILE *FsStatSr2Stream; char *FsStatFile; if (FahrstrasseGetFahrstrasseFilePath(Data) != (char *)NULL) { FsStatFile = (char *)malloc(strlen(FahrstrasseGetFahrstrasseFilePath(Data)) + strlen(CS2_FILE_STRING_STATUS_FAHRSTRASSE) + 2); if (FsStatFile != (char *)NULL) { strcpy(FsStatFile, FahrstrasseGetFahrstrasseFilePath(Data)); if (FsStatFile[strlen(FsStatFile) - 1] != '/') strcat(FsStatFile, "/"); strcat(FsStatFile, CS2_FILE_STRING_STATUS_FAHRSTRASSE); FsStatSr2Stream = Cs2OpenByName(FsStatFile); if (FsStatSr2Stream != NULL) { fchmod(fileno(FsStatSr2Stream), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); Cs2WriteParagraphByType(FsStatSr2Stream, CS2_PARAGRAPH_TYPE_FAHRSTRASSEN); Cs2WriteTitleByName(FsStatSr2Stream, "version", 0); Cs2WriteIntValueByName(FsStatSr2Stream, "major", 0, 1); Cs2WriteIntValueByName(FsStatSr2Stream, "minor", 1, 1); MapWalkAscend(FahrstrasseGetFahrstrasseDb(Data), (MapWalkCbFkt)WriteFsStatOfFsStatSr2, (void *)FsStatSr2Stream); Cs2Close(FsStatSr2Stream); } free(FsStatFile); } } }
int main(int argc, char *argv[]) { MagnetartikelStruct *Magnetartikel; puts("Create Magnetartikel"); Magnetartikel = MagnetartikelCreate(); if (Magnetartikel != (MagnetartikelStruct *)NULL) { puts("Init Magnetartikel"); MagnetartikelInit(Magnetartikel, CS2_PATH); puts("Load magnetartikel.cs2"); MagnetartikelLoadMagnetartikelCs2(Magnetartikel); puts("Magnetartikel:"); MapWalkAscend(MagnetartikelGetMagnetartikelDb(Magnetartikel), (MapWalkCbFkt)WalkMagnetartikelOfMagnetartikelCs2, (void *)NULL); puts("Exit Magnetartikel"); MagnetartikelExit(Magnetartikel); puts("Destroy Magnetartikel"); MagnetartikelDestroy(Magnetartikel); } else { puts("Create Magnetartikel failed"); } }
void LokMarkAllUndeleted(LokStruct *Data) { AddrSearchType Search; LokSetNumLoks(Data, 0); Search.Addr = 0; MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)MarkUndelete, (void *)&Search); LokSetNumLoks(Data, Search.Addr); }
BOOL LokHaveDeleted(LokStruct *Data) { AddrSearchType Search; Search.Addr = 0l; Search.Result = (LokInfo *)NULL; MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)SearchDeleted, (void *)&Search); return(Search.Result != (LokInfo *)NULL); }
LokInfo *LokSearch(LokStruct *Data, unsigned long Addr) { AddrSearchType Search; Search.Addr = Addr; Search.Result = (LokInfo *)NULL; MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)SearchLokomotiveByAddress, (void *)&Search); return(Search.Result); }
static void PurgeDeletedLoks(LokStruct *Data) { AddrSearchType Search; do { Search.Addr = 0l; Search.Result = (LokInfo *)NULL; MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)SearchDeleted, (void *)&Search); if (Search.Result != (LokInfo *)NULL) { MapDel(LokGetLokDb(Data), LokInfoGetName(Search.Result)); } } while (Search.Result != (LokInfo *)NULL); }
void LokSaveLokomotiveCs2(LokStruct *Data) { FILE *LokCs2Stream; char *LokFile; LokWalkType LokWalk; if (LokGetIsChanged(Data) || LokHaveDeleted(Data)) { if (LokGetLocFilePath(Data) != (char *)NULL) { LokFile = (char *)malloc(strlen(LokGetLocFilePath(Data)) + strlen(CS2_FILE_STRING_LOKOMOTIVE) + 2); if (LokFile != (char *)NULL) { strcpy(LokFile, LokGetLocFilePath(Data)); if (LokFile[strlen(LokFile) - 1] != '/') strcat(LokFile, "/"); strcat(LokFile, CS2_FILE_STRING_LOKOMOTIVE); LokCs2Stream = Cs2OpenByName(LokFile); if (LokCs2Stream != NULL) { fchmod(fileno(LokCs2Stream), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); Cs2WriteParagraphByType(LokCs2Stream, CS2_PARAGRAPH_TYPE_LOKOMOTIVE); Cs2WriteTitleByName(LokCs2Stream, "version", 0); Cs2WriteIntValueByName(LokCs2Stream, "major", 0, 1); Cs2WriteIntValueByName(LokCs2Stream, "minor", 1, 1); Cs2WriteTitleByName(LokCs2Stream, "session", 0); Cs2WriteIntValueByName(LokCs2Stream, "id", 1, 1); LokWalk.Data = Data; LokWalk.LokCs2Stream = LokCs2Stream; MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)WriteLokOfLokomotiveCs2, (void *)&LokWalk); Cs2Close(LokCs2Stream); PurgeDeletedLoks(Data); LokSetIsChanged(Data, FALSE); } free(LokFile); } } } }
void GleisbildSaveGleisbildCs2(GleisbildStruct *Data) { FILE *GleisbildCs2Stream; char *GleisbildFile; GleisbildInfo *FirstPage; if (GleisbildGetGleisbildFilePath(Data) != (char *)NULL) { GleisbildFile = (char *)malloc(strlen(GleisbildGetGleisbildFilePath(Data)) + strlen(CS2_FILE_STRING_GLEISBILD) + 2); if (GleisbildFile != (char *)NULL) { strcpy(GleisbildFile, GleisbildGetGleisbildFilePath(Data)); if (GleisbildFile[strlen(GleisbildFile) - 1] != '/') strcat(GleisbildFile, "/"); strcat(GleisbildFile, CS2_FILE_STRING_GLEISBILD); GleisbildCs2Stream = Cs2OpenByName(GleisbildFile); if (GleisbildCs2Stream != NULL) { fchmod(fileno(GleisbildCs2Stream), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); Cs2WriteParagraphByType(GleisbildCs2Stream, CS2_PARAGRAPH_TYPE_GLEISBILD); Cs2WriteTitleByName(GleisbildCs2Stream, "version", 0); Cs2WriteIntValueByName(GleisbildCs2Stream, "major", 0, 1); Cs2WriteIntValueByName(GleisbildCs2Stream, "minor", 1, 1); Cs2WriteTitleByName(GleisbildCs2Stream, "groesse", 0); FirstPage = GleisbildSearch(Data, 0); if (FirstPage != (GleisbildInfo *)NULL) { Cs2WriteTitleByName(GleisbildCs2Stream, "zuletztBenutzt", 0); Cs2WriteStringValueByName(GleisbildCs2Stream, "name", GleisbildInfoGetName(FirstPage), 1); } MapWalkAscend(GleisbildGetGleisbildDb(Data), (MapWalkCbFkt)WriteGleisbildOfGleisbildCs2, (void *)GleisbildCs2Stream); Cs2Close(GleisbildCs2Stream); } free(GleisbildFile); } } }
void CanMemberDelAllInvalid(CanMemberStruct *Data) { Menge *MemberToDel; MengeIterator IterToDel; CollectStruct Collector; unsigned long *UidToDel; MemberToDel = MengeCreate(); MengeInit(MemberToDel, MemberDelCmp, (MengeDelCbFkt)free); Collector.CanMemberDb = CanMemberGetCanMemberDb(Data); Collector.MemberToDel = MemberToDel; MapWalkAscend(CanMemberGetCanMemberDb(Data), (MapWalkCbFkt)CollectInvalid, (void *)&Collector); MengeInitIterator(&IterToDel, MemberToDel); UidToDel = (unsigned long *)MengeFirst(&IterToDel); while (UidToDel != 0l) { MapDel(CanMemberGetCanMemberDb(Data), (MapKeyType)*UidToDel); UidToDel = (unsigned long *)MengeNext(&IterToDel); } MengeDestroy(MemberToDel); }
void LokMarkAllDeleted(LokStruct *Data) { MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)MarkDelete, (void *)NULL); LokSetNumLoks(Data, 0); }
void CanMemberMarkAllInvalid(CanMemberStruct *Data) { MapWalkAscend(CanMemberGetCanMemberDb(Data), (MapWalkCbFkt)MarkInvalid, (void *)NULL); }