This file is indexed.

/usr/include/libguytools2/toolcfg.h is in libguytools2-dev 2.0.1-1.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
167
168
169
170
171
// ****************************************************************************
//  Project:        libguytools
// ****************************************************************************
//  Programmer:     Guy Voncken
//                  Police Grand-Ducale
//                  Service de Police Judiciaire
//                  Section Nouvelles Technologies
// ****************************************************************************
//  Module:         Configuration utility
// ****************************************************************************

#ifndef __TOOLCFG_H__
#define __TOOLCFG_H__

/* ------------------------------ */
/*  Type & structure definitions  */
/* ------------------------------ */

typedef enum
{
   CFGTYPE_PRESENCE,
   CFGTYPE_INTEGER,
   CFGTYPE_DOUBLE,
   CFGTYPE_STRING,
   CFGTYPE_SET,
   CFGTYPE_HMS,
   CFGTYPE_NULL
} t_ToolCfgType;


typedef enum
{
   CFGASN_SOURCE   = 0x0000000F,
   CFGASN_CMD      = 0x00000001,
   CFGASN_CFG      = 0x00000002,

   CFGASN_COUNT    = 0x000000F0,
   CFGASN_ONCE     = 0x00000010,
   CFGASN_TWICE    = 0x00000020,
   CFGASN_MULTIPLE = 0x00000030,

   CFGASN_OPTIONAL = 0x00000100
} t_ToolCfgAssignment;


#define CFGASSIGN_CMD              ((t_ToolCfgAssignment)(CFGASN_CMD | CFGASN_MULTIPLE                               ))
#define CFGASSIGN_CFG_ONCE         ((t_ToolCfgAssignment)(CFGASN_CFG | CFGASN_ONCE                                   ))
#define CFGASSIGN_CFG_MULTIPLE     ((t_ToolCfgAssignment)(CFGASN_CFG | CFGASN_MULTIPLE                               ))
#define CFGASSIGN_BOTH_ONCE        ((t_ToolCfgAssignment)(CFGASN_CMD | CFGASN_CFG | CFGASN_ONCE                      ))
#define CFGASSIGN_BOTH_TWICE       ((t_ToolCfgAssignment)(CFGASN_CMD | CFGASN_CFG | CFGASN_TWICE                     ))
#define CFGASSIGN_BOTH_MULTIPLE    ((t_ToolCfgAssignment)(CFGASN_CMD | CFGASN_CFG | CFGASN_MULTIPLE                  ))
#define CFGASSIGN_OPTIONAL         ((t_ToolCfgAssignment)(CFGASN_CMD | CFGASN_CFG | CFGASN_MULTIPLE | CFGASN_OPTIONAL))

typedef struct
{
   t_pcchar      pSetString;
   t_int          SetValue;
} t_ToolCfgSet, *t_pToolCfgSet;

typedef struct
{
   t_pcchar      pName;       /* The last one in the table must have pName set to NULL */
   t_ToolCfgType  CfgType;
   long           DestAddr;   /* For Params: the destination address: For table columns: the offset from the baseaddress */
   t_int          DestLen;    /* for strings, this length DOES NOT include the trailing '\0' */
   t_double       MinValue;
   t_double       MaxValue;
   t_pToolCfgSet pSetArray;
} t_ToolCfgDataDesc, *t_pToolCfgDataDesc;

/* ------------------------------------- */
/*  Structure to describe one parameter  */
/* ------------------------------------- */

typedef struct _t_ToolCfgParamDesc *t_pToolCfgParamDesc;

typedef APIRET (* t_pToolCfgCallOnInitFn)(t_pToolCfgParamDesc pCfgParamDesc, t_pchar *ppErrorText);

typedef struct  _t_ToolCfgParamDesc
{
   t_ToolCfgAssignment    Assign;
   t_pToolCfgCallOnInitFn pCallOnInitFn;
   t_ToolCfgDataDesc      DataDesc;

   /* The following two elements will be filled by the configuration scanner CfgScanConfiguration */
   /* and do not need to be set by the calling function.                                          */

   t_int            CmdAssignments;
   t_int            CfgAssignments;
} t_ToolCfgParamDesc;

#define CFG_FILLUP_FORLINT 0,0

/* ------------------------------- */
/*  Structure to describe a table  */
/* ------------------------------- */

typedef APIRET (* t_pTableStartFn      )(t_pchar pTableName, long *pBaseAddr, t_pcchar *ppErrorText);
typedef APIRET (* t_pTableSaveAndNextFn)(                    long *pBaseAddr, t_pcchar *ppErrorText);
typedef APIRET (* t_pTableEndFn        )(                                     t_pcchar *ppErrorText);

typedef struct
{
   t_pcchar              pTableType;
   t_pTableStartFn       pStartFn;
   t_pTableSaveAndNextFn pSaveAndNextFn;
   t_pTableEndFn         pEndFn;
   t_pToolCfgDataDesc    pDataDescArray; /* Pointer to array of data descriptors (one for each column) */
} t_ToolCfgTableDesc, *t_pToolCfgTableDesc;

/* Prototype of the user's logfunction */

typedef void (* t_pToolCfgUserLogFn)(t_pcchar pFileName, t_pcchar pFunction, t_int LineNr, t_pcchar pFormat, va_list pArguments);

/* ----------------- */
/*    Prototypes     */
/* ----------------- */

#ifdef __cplusplus
   #define EXTERN extern "C"
#elif __STDC__
   #define EXTERN extern
#else
   #error Unknown C compiler mode
#endif

EXTERN APIRET ToolCfgInit                   (int argc, char *argv[]);
EXTERN APIRET ToolCfgDeInit                 (void);
EXTERN APIRET ToolCfgUseAdjustedCommandLine (int argc, char *argv[]);
EXTERN APIRET ToolCfgSetLogFn               (t_pToolCfgUserLogFn pUserLogFn);
EXTERN APIRET ToolCfgGetCmdLineOption       (t_pcchar pParamName, t_pcchar *ppValue);
EXTERN APIRET ToolCfgAddGlobalSectionName   (t_pcchar pSectionName);
EXTERN APIRET ToolCfgDelGlobalSectionName   (t_pcchar pSectionName);
EXTERN APIRET ToolCfgScanConfiguration      (t_pcchar pFileName, t_pcchar pSectionName, t_ToolCfgParamDesc *pParamDescArray, t_ToolCfgTableDesc *pTableDescArray);
EXTERN APIRET ToolCfgBuildTemplate          (t_pcchar pFileName, t_pcchar pComment, t_pcchar pSectionName, t_ToolCfgParamDesc *pParamDescArray, t_ToolCfgTableDesc *pTableDescArray);
EXTERN APIRET ToolCfgLogConfiguration       (t_pToolCfgParamDesc pParamDescArray);
EXTERN APIRET ToolCfgPrintParamContents     (t_pToolCfgParamDesc pParamDescArray, t_pchar pName, t_pchar pBuff);
EXTERN APIRET ToolCfgGetSetString           (t_pToolCfgSet pSetArray, int SetValue, const char **ppSetString);

/* CfgGetCommandLineOption is usefull to the params that cannot be contained in the configuration file */
/* file itself, as for example the name of the cfg file.                                               */
/* Use CfgScanConfiguration to read a certain section of the cfg file. The two arrays pParamDescArray  */
/* and pTableDescArray specify the expected parameters and tables found in the indicated section.      */

/* ------------------------------ */
/*           Error codes          */
/* ------------------------------ */

static const APIRET TOOLCFG_ERROR_OPEN_FAILED               = ERROR_BASE_TOOL_CFG +  1;
static const APIRET TOOLCFG_ERROR_READ_FAILED               = ERROR_BASE_TOOL_CFG +  2;
static const APIRET TOOLCFG_ERROR_CLOSE_FAILED              = ERROR_BASE_TOOL_CFG +  3;
static const APIRET TOOLCFG_ERROR_FILE_NOT_FOUND            = ERROR_BASE_TOOL_CFG +  4;
static const APIRET TOOLCFG_ERROR_SEEKEND_FAILED            = ERROR_BASE_TOOL_CFG +  5;
static const APIRET TOOLCFG_ERROR_SEEKSET_FAILED            = ERROR_BASE_TOOL_CFG +  6;
static const APIRET TOOLCFG_ERROR_INVALID_STATE             = ERROR_BASE_TOOL_CFG +  7;
static const APIRET TOOLCFG_ERROR_NAME_TOO_LONG             = ERROR_BASE_TOOL_CFG +  8;
static const APIRET TOOLCFG_ERROR_INCLUDE_NESTING_OVERFLOW  = ERROR_BASE_TOOL_CFG +  9;
static const APIRET TOOLCFG_ERROR_CONFIG_ERROR              = ERROR_BASE_TOOL_CFG + 10;
static const APIRET TOOLCFG_ERROR_INVALID_ASSIGNMENT_OPTION = ERROR_BASE_TOOL_CFG + 11;
static const APIRET TOOLCFG_ERROR_INVALID_CFGTYPE           = ERROR_BASE_TOOL_CFG + 12;
static const APIRET TOOLCFG_ERROR_TEMPLATE_OPEN_FAILED      = ERROR_BASE_TOOL_CFG + 13;
static const APIRET TOOLCFG_ERROR_FPRINTF_FAILED            = ERROR_BASE_TOOL_CFG + 14;
static const APIRET TOOLCFG_ERROR_CMDLINE_OPTION_NOT_FOUND  = ERROR_BASE_TOOL_CFG + 15;
static const APIRET TOOLCFG_ERROR_SETBUF_FAILED             = ERROR_BASE_TOOL_CFG + 16;
static const APIRET TOOLCFG_ERROR_MALLOC_FAILED             = ERROR_BASE_TOOL_CFG + 17;
static const APIRET TOOLCFG_ERROR_SECTIONNAME_TOO_LONG      = ERROR_BASE_TOOL_CFG + 18;
static const APIRET TOOLCFG_ERROR_TOO_MANY_SECTIONNAMES     = ERROR_BASE_TOOL_CFG + 19;
static const APIRET TOOLCFG_ERROR_SECTIONNAME_NOTFOUND      = ERROR_BASE_TOOL_CFG + 20;
static const APIRET TOOLCFG_ERROR_UNKNOWN_PARAMETER         = ERROR_BASE_TOOL_CFG + 21;

#endif