annotate subopt-helper.h @ 24898:0701957d2bf7

af_scaletempo: Fix crash in option parsing The value of the "speed" suboption was not initialized before calling subopt_parse(). If the command line had suboptions but "speed" was not one of them then the code accessed an uninitialized pointer and possibly crashed. Fixed by initializing the option value.
author uau
date Thu, 01 Nov 2007 06:52:44 +0000
parents 5949a654e2d4
children 3baf6a2283da
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
1 #ifndef SUBOPT_HELPER_H
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
2 #define SUBOPT_HELPER_H
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
3
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
4 /**
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
5 * \file subopt-helper.h
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
6 *
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
7 * \brief Datatype and functions declarations for usage
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
8 * of the suboption parser.
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
9 *
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
10 */
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
11
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
12 #define OPT_ARG_BOOL 0
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
13 #define OPT_ARG_INT 1
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
14 #define OPT_ARG_STR 2
14538
00c3c4111017 New suboption type: malloc'ed, zero terminated string
reimar
parents: 14285
diff changeset
15 #define OPT_ARG_MSTRZ 3 ///< A malloced, zero terminated string, use free()!
16720
f73adf296f1e support float arguments in subopt helper.
joey
parents: 15734
diff changeset
16 #define OPT_ARG_FLOAT 4
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
17
14285
6c3241503d9b Add a type name for the test function
reimar
parents: 14281
diff changeset
18 typedef int (*opt_test_f)(void *);
6c3241503d9b Add a type name for the test function
reimar
parents: 14281
diff changeset
19
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
20 /** simple structure for defining the option name, type and storage location */
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
21 typedef struct opt_s
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
22 {
19194
5949a654e2d4 marks some read-only char* inside structs as const, patch by Stefan Huehner, stefan At huehner-org
reynaldo
parents: 19104
diff changeset
23 const char * name; ///< string that identifies the option
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
24 int type; ///< option type as defined in subopt-helper.h
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
25 void * valp; ///< pointer to the mem where the value should be stored
14285
6c3241503d9b Add a type name for the test function
reimar
parents: 14281
diff changeset
26 opt_test_f test; ///< argument test func ( optional )
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
27 int set; ///< Is set internally by the parser if the option was found.
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
28 ///< Don't use it at initialization of your opts, it will be
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
29 ///< overriden anyway!
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
30 } opt_t;
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
31
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
32 /** parses the string for the options specified in opt */
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
33 int subopt_parse( char const * const str, opt_t * opts );
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
34
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
35
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
36 /*------------------ arg specific types and declaration -------------------*/
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
37 typedef struct strarg_s
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
38 {
14538
00c3c4111017 New suboption type: malloc'ed, zero terminated string
reimar
parents: 14285
diff changeset
39 int len; ///< length of the string determined by the parser
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
40 char const * str; ///< pointer to position inside the parse string
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
41 } strarg_t;
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
42
14736
2ef20aa3623b Move generic tests to a common place.
al
parents: 14538
diff changeset
43
2ef20aa3623b Move generic tests to a common place.
al
parents: 14538
diff changeset
44 int int_non_neg( int * i );
2ef20aa3623b Move generic tests to a common place.
al
parents: 14538
diff changeset
45 int int_pos( int * i );
2ef20aa3623b Move generic tests to a common place.
al
parents: 14538
diff changeset
46
19104
2ec2301183cd marks several read-only string parameters which aren't modified inside the called function as const. Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents: 16720
diff changeset
47 int strargcmp(strarg_t *arg, const char *str);
15734
7e4fa8fc255c helper functions for comparing strarg_t "strings".
reimar
parents: 14736
diff changeset
48 int strargcasecmp(strarg_t *arg, char *str);
7e4fa8fc255c helper functions for comparing strarg_t "strings".
reimar
parents: 14736
diff changeset
49
14281
577c16f551ad suboption parser for vo and ao modules
al
parents:
diff changeset
50 #endif