LCOV - lcov.info - ept/textsearch/maint/path.cc

LTP GCOV extension - code coverage report
Current view: | directory - ept/textsearch/maint - path.cc
Test: | lcov.info
Date: | 2008-08-14 |  | Instrumented lines: | 29
Code covered: | 82.8 % |  | Executed lines: | 24

           1                 : // -*- mode: c++; indent-tabs-mode: t -*-
           2                 :
           3                 : /** \file
           4                 :  * popcon paths
           5                 :  */
           6                 :
           7                 : /*
           8                 :  * Copyright (C) 2005,2006,2007  Enrico Zini <enrico@debian.org>, Peter Rockai <me@mornfall.net>
           9                 :  *
          10                 :  * This program is free software; you can redistribute it and/or modify
          11                 :  * it under the terms of the GNU General Public License as published by
          12                 :  * the Free Software Foundation; either version 2 of the License, or
          13                 :  * (at your option) any later version.
          14                 :  *
          15                 :  * This program is distributed in the hope that it will be useful,
          16                 :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
          17                 :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
          18                 :  * GNU General Public License for more details.
          19                 :  *
          20                 :  * You should have received a copy of the GNU General Public License
          21                 :  * along with this program; if not, write to the Free Software
          22                 :  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
          23                 :  */
          24                 :
          25                 : #include <ept/config.h>
          26                 : #include <ept/textsearch/maint/path.h>
          27                 :
          28                 : #include <wibble/exception.h>
          29                 : #include <wibble/sys/fs.h>
          30                 : #include <wibble/string.h>
          31                 :
          32                 : #include <cstdio>
          33                 : #include <cerrno>
          34                 :
          35                 : #include <sys/types.h>
          36                 : #include <sys/stat.h>
          37                 : #include <unistd.h>
          38                 :
          39                 : using namespace std;
          40                 : using namespace wibble;
          41                 :
          42                 : namespace ept {
          43                 : namespace textsearch {
          44                 :
          45             111 : Path &Path::instance() {
          46             111 :         if (!s_instance) {
          47               1 :                 s_instance = new Path;
          48               1 :                 instance().m_indexDir = TEXTSEARCH_DB_DIR;
          49                 :         }
          50             111 :         return *s_instance;
          51                 : }
          52                 :
          53               0 : int Path::access( const std::string &s, int m )
          54                 : {
          55               0 :         return ::access( s.c_str(), m );
          56                 : }
          57                 :
          58              20 : time_t Path::indexTimestamp()
          59                 : {
          60              20 :         string tsfile = str::joinpath(instance().indexDir(), "update-timestamp");
          61              40 :         std::auto_ptr<struct stat> st = wibble::sys::fs::stat(tsfile);
          62              20 :         if (st.get())
          63              18 :                 return st->st_mtime;
          64                 :         else
          65               2 :                 return 0;
          66                 : }
          67                 :
          68               6 : void Path::setTimestamp(time_t ts)
          69                 : {
          70               6 :         string tsfile = str::joinpath(instance().indexDir(), "/update-timestamp");
          71              12 :         FILE* out = fopen(tsfile.c_str(), "wt");
          72               6 :         if (!out)
          73               0 :                 throw wibble::exception::File(tsfile, "opening file for truncate/writing");
          74               6 :         if (fprintf(out, "%ld\n", ts) < 0)
          75               0 :                 throw wibble::exception::File(tsfile, "writing the modification time");
          76               6 :         if (fclose(out) < 0)
          77               0 :                 throw wibble::exception::File(tsfile, "closing the file");
          78               6 : }
          79                 :
          80              22 : void Path::setIndexDir( const std::string &s )
          81                 : {
          82              22 :         instance().m_indexDir = s;
          83              22 : }
          84                 :
          85              37 : std::string Path::indexDir() { return instance().m_indexDir; }
          86              25 : std::string Path::index() { return str::joinpath(instance().m_indexDir, "/index"); }
          87                 :
          88                 : Path *Path::s_instance = 0;
          89                 :
          90                 : }
          91               6 : }
          92                 :
          93                 : // vim:set ts=4 sw=4:

Generated by: LTP GCOV extension version 1.6