This file is indexed.

/usr/include/ola/base/Init.h is in libola-dev 0.9.8-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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 *
 * Init.h
 * A grab bag of functions useful for programs.
 * Copyright (C) 2012 Simon Newton
 */

/**
 * @defgroup init Initialization
 * @brief Functions called during program startup.
 *
 * Programs using the OLA libraries should call either ServerInit() or
 * AppInit(). There are also extra functions to help with installing signal
 * handlers and daemonizing a process.
 *
 * @examplepara
 *   @code
 *   // For client applications
 *   AppInit(argc, argv);
 *   // For server applications
 *   ServerInit(argc, argv, &export_map);
 *   @endcode
 *
 * @addtogroup init
 * @{
 * @file Init.h
 * @brief Functions called during program startup.
 * @}
 */

#ifndef INCLUDE_OLA_BASE_INIT_H_
#define INCLUDE_OLA_BASE_INIT_H_

#include <ola/ExportMap.h>
#include <ola/Callback.h>
#include <string>

namespace ola {
/**
 * @addtogroup init
 * @{
 */

/**
 * @brief Used to initialize a server.
 * @param argc argument count
 * @param argv pointer to argument strings
 * @param export_map an optional pointer to an ExportMap
 * @return true on success and false otherwise
 * @note If you are a client/application then call AppInit() instead.
 *
 * This does the following:
 *  - installs the SEGV handler
 *  - initializes the random number generator
 *  - sets the thread scheduling options
 *  - populates the export map
 *  - initializes the network stack (Windows only).
 */
bool ServerInit(int argc, char *argv[], ExportMap *export_map);

/**
 * @brief Used to initialize a server. Installs the SEGV handler, initializes
 * the random number generator and populates the export map. Also sets the help
 * string for the program, parses flags and initialises logging from flags.
 * @param argc argument count
 * @param argv pointer to argument strings
 * @param export_map an optional pointer to an ExportMap
 * @param first_line the inital line that is displayed in the help section.
 * This is displayed after argv[0].
 * @param description a multiline description of the program
 * @return true on success and false otherwise
 * @note If you are a client/application then call AppInit() instead.
 * @sa ola::SetHelpString ola::ParseFlags ola::InitLoggingFromFlags
 */
bool ServerInit(int *argc,
                char *argv[],
                ExportMap *export_map,
                const std::string &first_line,
                const std::string &description);

/**
 * @brief Used to initialize a application. Installs the SEGV handler and
 * initializes the random number generator, sets the help string for the
 * program, parses flags and initialises logging from flags.
 * @param argc argument count
 * @param argv pointer to the argument strings
 * @param first_line the inital line that is displayed in the help section.
 * This is displayed after argv[0].
 * @param description a multiline description of the program
 * @return true on success and false otherwise
 * @note If you are a server then call ServerInit() instead.
 * @sa ola::SetHelpString ola::ParseFlags ola::InitLoggingFromFlags
 */
bool AppInit(int *argc,
             char *argv[],
             const std::string &first_line,
             const std::string &description);

/**
 * @brief Perform platform-specific initialization of the networking subsystem.
 *
 * This method is called by ServerInit() and AppInit(), so you only need to
 * call this yourself if you're not using those.
 * @return true on success and false otherwise
 */
bool NetworkInit();

/**
 * @brief Install a signal handler.
 * @param signal the signal number to catch
 * @param fp is a function pointer to the handler
 * @return true on success and false otherwise
 */
bool InstallSignal(int signal, void(*fp)(int signo));

/**
 * @brief Install signal handlers to deal with SIGBUS & SIGSEGV.
 * @return true on success and false otherwise
 *
 * On receiving a SIGBUS or SIGSEGV a stack trace will be printed.
 */
bool InstallSEGVHandler();

/**
 * @brief Populate the ExportMap with a couple of basic variables.
 * @param argc argument count
 * @param argv pointer to the arugment strings
 * @param export_map ExportMap to populate
 *
 * This is called by ServerInit(). It sets the following variables:
 *  - binary: name of the binary.
 *  - cmd-line: command line used to start the binary
 *  - fd-limit: the max number of file descriptors
 */
void InitExportMap(int argc, char* argv[], ExportMap *export_map);

/**
 * @brief Run as a daemon
 *
 * Daemonize logs messages if it fails, so it's best to initialize the
 * logging system (ola::InitLogging) before calling. However Daemonize() closes
 * all open file descriptors so stdout/stderr will point to /dev/null in the
 * daemon process. Therefore daemons should always use syslog logging.
 *
 * If we can't daemonize the process is terminated.
 *
 * See logging.
 * @sa @ref logging
 */
void Daemonise();
/**@}*/
}  // namespace ola
#endif  // INCLUDE_OLA_BASE_INIT_H_