This file is indexed.

/usr/include/avifile-0.7/avm_args.h is in libavifile-0.7-dev 1:0.7.48~20090503.ds-19+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
#ifndef AVM_ARGS_H
#define AVM_ARGS_H

#include "avm_default.h"

AVM_BEGIN_NAMESPACE;

class AVMEXPORT Args
{
public:
    class Option {
    public:
	enum Type {
	    NONE =	   '#',
	    HELP =	   'h',	// use default help text and options
	    CODEC =	   'c',	// show available codec options (char*)
	    OPTIONS =	   'O',	// @value is pointer to another Options array
	    SUBOPTIONS =   'o',	// @value is pointer to SubOptions array
				// these options are separated by ':'
	    BOOL =	   'b',	// true flag when option is present (default is false)
	    DOUBLE =	   'd',	// double from given range (max == min -> unlimited)
	    INT =	   'i',	// integer from given range (max == min -> unlimited)
	    STRING =	   's',	// any string could be given
	    SELECTSTRING = 'x',	// string from the list

	    REGBOOL =	   'B',
	    REGDOUBLE =    'D',
	    REGINT =	   'I',
	    REGSTRING =    'S'
	};
	Option(const char* o, const void* v = 0, int32_t mi = 0, int32_t ma = 0)
	    : opts(o), value(v), min(mi), max(ma) {}

	Option(const char* o, const bool* b)
	    : opts(o), value(b) {}

	const char* getLongOption() const { return opts + 1; }
	const char* getShortOption() const { return findString(1); }
	const char* getHelp() const { return findString(2); }

	int32_t getInt() const { return (value) ? *(const int32_t*)value : 0; }
	int32_t getMin() const { return min; }
	int32_t getMax() const { return max; }
	bool getBool() const { return (value) ? *(const bool*)value : false; }
	double getDouble() const { return (value) ? *(const double*)value : 0.; }
	const char* getString() const { return (const char*)value; }
	const Option* getOptions() const { return (const Option*)value; }
	Type getType() const { return (Type) opts[0]; }

	bool is(Type t) const { return (t == getType()); }
	bool isInRange(int32_t v) const { return (getMin() == getMax())
	    || (getMin() <= v && v <= getMax()); }

	int setBool(bool b) const { return (value) ? *(bool*)value = b, 0 : -1; }
	int setDouble(double d) const { return (value) ? *(double*)value = d, 0 : -1; }
	int setInt(int32_t i) const { return (value) ? *(int32_t*)value = i, 0 : -1; }
	int setString(char* s) const { return (value) ? *(char**)value = s, 0 :  -1; }

    private:
	// go through adjanced zero ended strings
	const char* findString(int cnt) const {
	    const char* r = opts;
	    while (cnt--)
		while (*r++)
		    ;
	    return r;
	}

	const char* opts;	// 'Type' long-option-str \0  short-option-str \0 help-str
	const void* value;	// storage pointer for value
				// for SUB/OPTIONS contains subarray with Options
				// for REG+  contains pointer to default value
	union {
	    struct {
		int32_t min;	// min integer value
		int32_t max;	// max integer value
	    };
	    const char* defstr;	// list of string options
	};
    };

    Args(const Option* options, int* argc, char** argv,
	 const char* help = 0, const char* regname = 0);
    ~Args();
    // could be used to parse CodecInfo arguments
    static void ParseCodecInfo(const char* str);

protected:
    int findOpt(int olong = 0);

    const Option* opts;
    int* argc;
    char** argv;
    const char* help;
    const char* regname;
    int idx;
};

#ifdef __GNUC__
#define ARGSOPTION(a, b, c, d, args...) \
    Args::Option(a b "\0" c "\0" d, ## args)
#else
#define ARGSOPTION(a, b, c, d, ...) \
    Args::Option(a b "\0" c "\0" d, __VA_ARGS__)
#endif

AVM_END_NAMESPACE;

#endif /* AVM_ARGS_H */