bool CSite::HasChanged(void) const { CString Filename = m_ConfigPath; CLocalPath::Terminate(Filename); Filename += "asearch.cnf"; struct_stat NewStat; base_stat((const char *) Filename.GetBuffer(), &NewStat); if (m_Stat.st_mtime == NewStat.st_mtime) return false; return true; }
void CEquivManager::Read(void) { struct_stat NewStat; base_stat((const char *) m_Filename.GetBuffer(), &NewStat); if (GetSize() && (m_Stat.st_mtime == NewStat.st_mtime)) return; m_LoadMutex.Lock(); m_Stat = NewStat; RemoveAll(); (* (CTSStringTable *) this) = m_PersistentTable; CLocalFile File(m_Filename); if (File.OpenReadBinary()) { CVector<CString> Lines; File.ReadLines(&Lines); CString Line; for (register int i=0; i<(int) Lines.GetSize(); i++) { Line = Lines[i]; //// _L_DEBUG(6, cout << "CEquivManager::Read() - parsing " << Line << endl); if (!Line.GetLength()) continue; if (Line[0] == '#') { Line.Delete(0, 1); if ((Line.Pos('<')>=0)&&(Line.Pos('>')> Line.Pos('<'))) m_EmailVector += Line; } else { CVector<CString> Tokens; CString::StrToVector(Line, ',', &Tokens); if ((Tokens.GetSize() == 2)&&(Tokens[0].GetLength())&&(Tokens[1].GetLength())) { // complex equivalences CVector<CString> TokensLeft; CString::StrToVector(Tokens[0], '+', &TokensLeft); CVector<CString> TokensRight; CString::StrToVector(Tokens[1], '+', &TokensRight); if ((int) TokensLeft.GetSize() > 1) { if (TokensLeft.GetSize() > TokensRight.GetSize()) { cout << "Dropping malformed equivalence at " << Tokens[0] << "=" << Tokens[1] << endl; } else { for (int ii=1; ii<(int)TokensLeft.GetSize(); ii++) { CString TL(TokensLeft[0]); TL+=TokensLeft[ii]; CString TR(TokensRight[0]); TR+=TokensRight[ii]; CTSStringTable::Set(TL, TR); } } } else { CTSStringTable::Set(Tokens[0], Tokens[1]); } } } } } m_LoadMutex.UnLock(); }
/* * Copyright (c) 2008-2010 Wind River Systems; see * guts/COPYRIGHT for information. * * static FILE * * wrap_freopen(const char *path, const char *mode, FILE *stream) { * FILE * rc = NULL; */ PSEUDO_STATBUF buf; int save_errno; int existed = (base_stat(path, &buf) != -1); rc = real_freopen(path, mode, stream); save_errno = errno; if (rc) { int fd = fileno(rc); pseudo_debug(2, "freopen '%s': fd %d\n", path, fd); if (base_fstat(fd, &buf) != -1) { if (!existed) { pseudo_client_op(OP_CREAT, 0, -1, -1, path, &buf); } pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, &buf); } else { pseudo_debug(1, "fopen (fd %d) succeeded, but stat failed (%s).\n", fd, strerror(errno)); pseudo_client_op(OP_OPEN, pseudo_access_fopen(mode), fd, -1, path, 0); } errno = save_errno; }
bool CEquivManager::HasChanged(void) const { struct_stat NewStat; base_stat((const char *) m_Filename.GetBuffer(), &NewStat); return (m_Stat.st_mtime != NewStat.st_mtime); }