This file is indexed.

/usr/include/crystalspace-2.0/csutil/vfscache.h is in libcrystalspace-dev 2.0+dfsg-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
/*
    Copyright (C) 2002 by Jorrit Tyberghein

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
    
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
    
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef __CS_UTIL_VFSCACHE_H__
#define __CS_UTIL_VFSCACHE_H__

/**\file
 * VFS Cache Manager
 */
#include "csextern.h"
#include "iutil/cache.h"
#include "csutil/csstring.h"
#include "csutil/scf_implementation.h"

struct iObjectRegistry;
struct iVFS;

/**
 * This is a general cache that can cache data on VFS.
 */
class CS_CRYSTALSPACE_EXPORT csVfsCacheManager : 
  public scfImplementation1<csVfsCacheManager, iCacheManager>
{
private:
  iObjectRegistry* object_reg;
  char* vfsdir;
  csRef<iVFS> vfs;
  csString current_type;
  csString current_scope;
  bool readonly;

  iVFS* GetVFS ();

  void CacheName (csStringFast<512>& buf, const char* type, const char* scope,
  	uint32 id);
  void RecursiveDelete (const char* fn);
public:
  /**
   * Construct the cache manager with the given directory.
   * All cached data will be put somewhere in that directory.
   */
  csVfsCacheManager (iObjectRegistry* object_reg, const char* vfsdir);

  virtual ~csVfsCacheManager ();


  virtual void SetReadOnly (bool ro) { readonly = ro; }
  virtual bool IsReadOnly () const { return readonly; }

  /**
   * Set current type. 
   */
  virtual void SetCurrentType (const char* type);
  /**
   * Get current type or 0 if none set.
   */
  virtual const char* GetCurrentType () const { return current_type; }
  /**
   * Set current scope. 
   */
  virtual void SetCurrentScope (const char* scope);
  /**
   * Get current scope or 0 if none set.
   */
  virtual const char* GetCurrentScope () const { return current_scope; }
  /**
   * Cache some data. Returns true if this succeeded.
   */
  virtual bool CacheData (const void* data, size_t size,
  	const char* type, const char* scope, uint32 id);
  /**
   * Retrieve some data from the cache. Returns 0 if the
   * data could not be found in the cache.
   */
  virtual csPtr<iDataBuffer> ReadCache (const char* type, const char* scope,
  	uint32 id);
  /**
   * Clear items from the cache. 
   */
  virtual bool ClearCache (const char* type = 0, const char* scope = 0,
  	const uint32* id = 0);

  /**
   * Flush VFS.
   */
  virtual void Flush ();
};

#endif // __CS_UTIL_VFSCACHE_H__