This file is indexed.

/usr/include/debian-installer/parser.h is in libdebian-installer4-dev 0.87.

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
/*
 * parser.h
 *
 * Copyright (C) 2003 Bastian Blank <waldi@debian.org>
 *
 * 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, see <http://www.gnu.org/licenses/>.
 */

#ifndef DEBIAN_INSTALLER__PARSER_H
#define DEBIAN_INSTALLER__PARSER_H

#include <debian-installer/hash.h>
#include <debian-installer/slist.h>
#include <debian-installer/string.h>

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct di_parser_info di_parser_info;
typedef struct di_parser_fieldinfo di_parser_fieldinfo;

/**
 * @addtogroup di_parser
 * @{
 */

/**
 * Read a single field
 *
 * @param data the actual data
 * @param fip info of the actual field
 * @param value the actual value
 * @param value_size size of the actual value
 * @param user_data data supplied to the parser
 */
typedef void di_parser_fields_function_read (void **data, const di_parser_fieldinfo *fip, di_rstring *field_modifier, di_rstring *value, void *user_data);

/**
 * Write a single field - callback
 *
 * @param field the field
 * @param value the value of the field
 * @param data the callback_data
 */
typedef void di_parser_fields_function_write_callback (const di_rstring *field, const di_rstring *value, void *data);

/**
 * Write a single field
 *
 * @param data the actual data
 * @param fip info of the actual field
 * @param output static buffer for output
 * @param user_data data supplied to the parser
 *
 * @return written bytes
 */
typedef void di_parser_fields_function_write (void **data, const di_parser_fieldinfo *fip, di_parser_fields_function_write_callback callback, void *callback_data, void *user_data);

/**
 * @param user_data data supplied to di_parse
 * @return new data
 */
typedef void *di_parser_read_entry_new (void *user_data);

/**
 * @param data the actual data
 * @param user_data data supplied to di_parse
 */
typedef int di_parser_read_entry_finish (void *data, void *user_data);

/**
 * @param data the actual data
 * @param user_data data supplied to di_parse
 */
typedef void *di_parser_write_entry_next (void **state_data, void *user_data);

/**
 * @brief Parse info
 */
struct di_parser_info
{
  di_hash_table *table;                                 /**< table of di_parser_fieldinfo */
  di_slist list;                                        /**< list of di_parser_fieldinfo */
  bool modifier;                                        /**< use modifier */
  bool wildcard;                                        /**< use wildcard (entry with key "") */
};

/**
 * @brief Info about a parser field
 */
struct di_parser_fieldinfo
{
  di_rstring key;                                       /**< field name */
  di_parser_fields_function_read *read;                 /**< function for reading a field */
  di_parser_fields_function_write *write;               /**< function for writing a field */
  unsigned int integer;                                 /**< Simple value, usage is defined by the read and write functions.
                                                         *   Most used with an offset of the field in the structure. */
};

/**
 * generates a di_parser_fieldinfo
 */
#define DI_PARSER_FIELDINFO(name, read, write, integer) \
  { { name, sizeof (name) - 1 }, read, write, integer }

di_parser_fields_function_read
  /**
   * Read function for a boolean (true == "Yes")
   */
  di_parser_read_boolean,
  /**
   * Read function for an int
   */
  di_parser_read_int,
  /**
   * Read function for a di_rstring
   */
  di_parser_read_rstring,
  /**
   * Read function for a string
   */
  di_parser_read_string;

di_parser_fields_function_write
  /**
   * Write function for a boolean ("Yes" == true)
   */
  di_parser_write_boolean,
  /**
   * Write function for an int
   */
  di_parser_write_int,
  /**
   * Write function for a di_string
   */
  di_parser_write_rstring,
  /**
   * Write function for a string
   */
  di_parser_write_string;

di_parser_info *di_parser_info_alloc (void);
void di_parser_info_free (di_parser_info *info);

void di_parser_info_add (di_parser_info *info, const di_parser_fieldinfo *fieldinfo[]);

/** @} */
#endif