This file is indexed.

/usr/include/codeblocks/filemanager.h is in codeblocks-dev 16.01+dfsg-2+b1.

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
/*
 * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
 * http://www.gnu.org/licenses/lgpl-3.0.html
 */

#ifndef FILEMANAGER_H
#define FILEMANAGER_H

#include <wx/thread.h>
#include <wx/string.h>
#include <wx/log.h>

#include "backgroundthread.h"

#undef new
#include <deque>
#include <memory>

#ifndef CB_PRECOMP
    #include <wx/file.h>
    #include <wx/filename.h>
    #include "configmanager.h"
#endif


class TiXmlDocument;
namespace TinyXML{ 	bool SaveDocument(const wxString&, TiXmlDocument*); }


// ***** class: LoaderBase *****
class DLLIMPORT LoaderBase : public AbstractJob
{
    wxSemaphore sem;
    bool wait;

    void WaitReady()
    {
        if (wait)
        {
            wait = false;
            sem.Wait();
        }
    };

protected:
    wxString fileName;
    char *data;
    size_t len;

    void Ready()
    {
        sem.Post();
    };

public:
    LoaderBase() : wait(true), data(nullptr), len(0) {};
    ~LoaderBase();
    void operator()() {};
    wxString FileName() const { return fileName; };

    bool Sync();
    char* GetData();
    size_t GetLength();
};

// ***** class: FileLoader *****
class DLLIMPORT FileLoader : public LoaderBase
{
public:
    FileLoader(const wxString& name) { fileName = name; };
    void operator()();
};

// ***** class: URLLoader *****
class DLLIMPORT URLLoader : public LoaderBase
{
public:
    URLLoader(const wxString& name) { fileName = name; };
    void operator()();
private:
	std::vector<char> mBuffer;
};

// ***** class: NullLoader *****
class DLLIMPORT NullLoader : public LoaderBase
{
public:
    NullLoader(const wxString& name, char* buffer, size_t size) { fileName = name; data = buffer; len = size; Ready(); };
    void operator()(){};
};

// ***** class: EditorReuser *****
class DLLIMPORT EditorReuser : public LoaderBase
{
public:
    /** Gets a UTF8 representation of the editor's content
     *  @param name the file name opened by the editor
     *  @param s the editor's content
     */
    EditorReuser(const wxString& name, const wxString& s)
    {
        fileName = name;
        len = strlen(s.mb_str(wxConvUTF8));
        data = new char[len + 1];
        strcpy(data, (const char*)s.mb_str(wxConvUTF8));
        Ready();
    }
    void operator()(){};
};

// ***** class: FileManager *****
class DLLIMPORT FileManager : public Mgr<FileManager>
{
    BackgroundThread fileLoaderThread;
    BackgroundThread uncLoaderThread;
    BackgroundThread urlLoaderThread;
public:
    FileManager();
    ~FileManager();

    /** Loads a file, once this function is called, the actually loading process is done in the
     *  worker thread(BackgroundThread).
     *  @param file the file path, it can an absolute file path, an unc file, or a url file
     *  @param reuseEditors if true, we try to use the file contents in the editor if the file is
     *  modified in the editor.
     *  @return a loader pointer holding the loader, user must delete it later, otherwise memory
     *  leak will happen.
     */
    cb_must_consume_result LoaderBase* Load(const wxString& file, bool reuseEditors = false);

    bool Save(const wxString& file, const wxString& data, wxFontEncoding encoding, bool bom);

private:
	friend bool TinyXML::SaveDocument(const wxString&, TiXmlDocument*);
    bool SaveUTF8(const wxString& file, const char* data, size_t len);

    bool WriteWxStringToFile(wxFile& f, const wxString& data, wxFontEncoding encoding, bool bom);
};

#endif