コード例 #1
0
ファイル: fsstat.c プロジェクト: GBert/railroad
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);
      }
   }
}
コード例 #2
0
ファイル: magtest.c プロジェクト: GBert/railroad
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");
   }
}
コード例 #3
0
ファイル: lok.c プロジェクト: GBert/railroad
void LokMarkAllUndeleted(LokStruct *Data)
{  AddrSearchType Search;

   LokSetNumLoks(Data, 0);
   Search.Addr = 0;
   MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)MarkUndelete,
                 (void *)&Search);
   LokSetNumLoks(Data, Search.Addr);
}
コード例 #4
0
ファイル: lok.c プロジェクト: GBert/railroad
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);
}
コード例 #5
0
ファイル: lok.c プロジェクト: GBert/railroad
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);
}
コード例 #6
0
ファイル: lok.c プロジェクト: GBert/railroad
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);
}
コード例 #7
0
ファイル: lok.c プロジェクト: GBert/railroad
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);
         }
      }
   }
}
コード例 #8
0
ファイル: gleisbild.c プロジェクト: GBert/railroad
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);
      }
   }
}
コード例 #9
0
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);
}
コード例 #10
0
ファイル: lok.c プロジェクト: GBert/railroad
void LokMarkAllDeleted(LokStruct *Data)
{
   MapWalkAscend(LokGetLokDb(Data), (MapWalkCbFkt)MarkDelete, (void *)NULL);
   LokSetNumLoks(Data, 0);
}
コード例 #11
0
void CanMemberMarkAllInvalid(CanMemberStruct *Data)
{
   MapWalkAscend(CanMemberGetCanMemberDb(Data), (MapWalkCbFkt)MarkInvalid,
                 (void *)NULL);
}