This file is indexed.

/usr/include/dar/fichier_local.hpp is in libdar-dev 2.5.14+bis-1.

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*********************************************************************/
// dar - disk archive - a backup/restoration program
// Copyright (C) 2002-2052 Denis Corbin
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// to contact the author : http://dar.linux.free.fr/email.html
/*********************************************************************/

    /// \file fichier_local.hpp
    /// \brief class fichier_global definition. This is a full implementation/inherited class of class fichier_global
    /// this type of object are generated by entrepot_local.
    /// \ingroup Private

#ifndef FICHIER_LOCAL_HPP
#define FICHIER_LOCAL_HPP


#include "/usr/include/dar/libdar_my_config.h"

extern "C"
{
#if LIBDAR_HAS_UNISTD_H
#include <unistd.h>
#endif
} // end extern "C"

#include "/usr/include/dar/integers.hpp"
#include "/usr/include/dar/thread_cancellation.hpp"
#include "/usr/include/dar/label.hpp"
#include "/usr/include/dar/crc.hpp"
#include "/usr/include/dar/user_interaction.hpp"
#include "/usr/include/dar/mem_ui.hpp"
#include "/usr/include/dar/fichier_global.hpp"

#include <string>

namespace libdar
{

	/// \addtogroup Private
	/// @{


	/// filesystem local files

    class fichier_local : public fichier_global
    {
    public :

	    // constructors

        fichier_local(user_interaction & dialog,
		      const std::string & chemin,
		      gf_mode m,
		      U_I permission,
		      bool fail_if_exists,
		      bool erase,
		      bool furtive_mode);
	fichier_local(const std::string & chemin, bool furtive_mode = false); // builds a read-only object
	fichier_local(const fichier_local & ref) : fichier_global(ref) { copy_from(ref); };

	    // assignment operator
	const fichier_local & operator = (const fichier_local & ref) { detruit(); copy_parent_from(ref); copy_from(ref); return *this; };

	    // destructor
	~fichier_local() { detruit(); };


	    /// set the ownership of the file
	virtual void change_ownership(const std::string & user, const std::string & group);

	    /// change the permission of the file
	virtual void change_permission(U_I perm);

	    /// return the size of the file
        infinint get_size() const;

	    /// set posix_fadvise for the whole file
	void fadvise(advise adv) const;

            // inherited from generic_file
	bool skippable(skippability direction, const infinint & amount) { return true; };
        bool skip(const infinint & pos);
        bool skip_to_eof();
        bool skip_relative(S_I x);
        infinint get_position() const;

	    /// provide the low level filedescriptor to the call and terminate()
	    ///
	    /// \note this the caller duty to close() the provided filedescriptor
	S_I give_fd_and_terminate() { int ret = filedesc; filedesc = -1; terminate(); return ret; };

    protected :
	    // inherited from generic_file grand-parent class
	void inherited_read_ahead(const infinint & amount) {}; // nothing done, calling readahead(2) could be added in the future
	void inherited_sync_write() { fsync(); };
	void inherited_flush_read() {}; // nothing stored in transit in this object
	void inherited_terminate() { if(adv == advise_dontneed) fadvise(adv); };

	    // inherited from fichier_global parent class
	U_I fichier_global_inherited_write(const char *a, U_I size);
        bool fichier_global_inherited_read(char *a, U_I size, U_I & read, std::string & message);

    private :
        S_I filedesc;
	advise adv;

	void open(const std::string & chemin,
		  gf_mode m,
		  U_I permission,
		  bool fail_if_exists,
		  bool erase,
		  bool furtive_mode);

	void copy_from(const fichier_local & ref);
	void copy_parent_from(const fichier_local & ref);
	void detruit() { if(filedesc >= 0) close(filedesc); filedesc = -1; };
	int advise_to_int(advise arg) const;

	    /// sync the data to disk

	    /// this is necessary under Linux for better efficiency
	    /// before calling fadvise(advise_dontneed) else write pending blocks
	    /// would stay in the cache more time than necessary
	void fsync() const;

    };

	/// @}

} // end of namespace

#endif