This file is indexed.

/usr/include/collectd/utils_match.h is in collectd-dev 4.10.1-2.1ubuntu7.

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
/**
 * collectd - src/utils_match.h
 * Copyright (C) 2008  Florian octo Forster
 *
 * 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.,
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 *
 * Authors:
 *   Florian octo Forster <octo at verplant.org>
 **/

#ifndef UTILS_MATCH_H
#define UTILS_MATCH_H 1

#include "plugin.h"

/*
 * Defines
 */
#define UTILS_MATCH_DS_TYPE_GAUGE   0x10
#define UTILS_MATCH_DS_TYPE_COUNTER 0x20
#define UTILS_MATCH_DS_TYPE_DERIVE 0x30
#define UTILS_MATCH_DS_TYPE_ABSOLUTE 0x40

#define UTILS_MATCH_CF_GAUGE_AVERAGE 0x01
#define UTILS_MATCH_CF_GAUGE_MIN     0x02
#define UTILS_MATCH_CF_GAUGE_MAX     0x04
#define UTILS_MATCH_CF_GAUGE_LAST    0x08

#define UTILS_MATCH_CF_COUNTER_SET   0x01
#define UTILS_MATCH_CF_COUNTER_ADD   0x02
#define UTILS_MATCH_CF_COUNTER_INC   0x04

#define UTILS_MATCH_CF_DERIVE_SET   0x01
#define UTILS_MATCH_CF_DERIVE_ADD   0x02
#define UTILS_MATCH_CF_DERIVE_INC   0x04

#define UTILS_MATCH_CF_ABSOLUTE_SET   0x01
#define UTILS_MATCH_CF_ABSOLUTE_ADD   0x02
#define UTILS_MATCH_CF_ABSOLUTE_INC   0x04

/*
 * Data types
 */
struct cu_match_s;
typedef struct cu_match_s cu_match_t;

struct cu_match_value_s
{
  int ds_type;
  value_t value;
  unsigned int values_num;
};
typedef struct cu_match_value_s cu_match_value_t;

/*
 * Prototypes
 */
/*
 * NAME
 *  match_create_callback
 *
 * DESCRIPTION
 *  Creates a new `cu_match_t' object which will use the regular expression
 *  `regex' to match lines, see the `match_apply' method below. If the line
 *  matches, the callback passed in `callback' will be called along with the
 *  pointer `user_pointer'.
 *  The string that's passed to the callback depends on the regular expression:
 *  If the regular expression includes a sub-match, i. e. something like
 *    "value=([0-9][0-9]*)"
 *  then only the submatch (the part in the parenthesis) will be passed to the
 *  callback. If there is no submatch, then the entire string is passed to the
 *  callback.
 *  The optional `excluderegex' allows to exclude the line from the match, if
 *  the excluderegex matches.
 */
cu_match_t *match_create_callback (const char *regex, const char *excluderegex,
		int (*callback) (const char *str,
		  char * const *matches, size_t matches_num, void *user_data),
		void *user_data);

/*
 * NAME
 *  match_create_simple
 *
 * DESCRIPTION
 *  Creates a new `cu_match_t' with a default callback. The user data for that
 *  default callback will be a `cu_match_value_t' structure, with
 *  `ds_type' copied to the structure. The default callback will handle the
 *  string as containing a number (see strtoll(3) and strtod(3)) and store that
 *  number in the `value' member. How that is done depends on `ds_type':
 *
 *  UTILS_MATCH_DS_TYPE_GAUGE
 *    The function will search for a floating point number in the string and
 *    store it in value.gauge.
 *  UTILS_MATCH_DS_TYPE_COUNTER_SET
 *    The function will search for an integer in the string and store it in
 *    value.counter.
 *  UTILS_MATCH_DS_TYPE_COUNTER_ADD
 *    The function will search for an integer in the string and add it to the
 *    value in value.counter.
 *  UTILS_MATCH_DS_TYPE_COUNTER_INC
 *    The function will not search for anything in the string and increase
 *    value.counter by one.
 */
cu_match_t *match_create_simple (const char *regex,
				 const char *excluderegex, int ds_type);

/*
 * NAME
 *  match_destroy
 *
 * DESCRIPTION
 *  Destroys the object and frees all internal resources.
 */
void match_destroy (cu_match_t *obj);

/*
 * NAME
 *  match_apply
 *
 * DESCRIPTION
 *  Tries to match the string `str' with the regular expression of `obj'. If
 *  the string matches, calls the callback in `obj' with the (sub-)match.
 *
 *  The user_data pointer passed to `match_create_callback' is NOT freed
 *  automatically. The `cu_match_value_t' structure allocated by
 *  `match_create_callback' is freed automatically.
 */
int match_apply (cu_match_t *obj, const char *str);

/*
 * NAME
 *  match_get_user_data
 *
 * DESCRIPTION
 *  Returns the pointer passed to `match_create_callback' or a pointer to the
 *  `cu_match_value_t' structure allocated by `match_create_simple'.
 */
void *match_get_user_data (cu_match_t *obj);

#endif /* UTILS_MATCH_H */

/* vim: set sw=2 sts=2 ts=8 : */