Mercurial > mplayer.hg
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 |
rev | line source |
---|---|
14281 | 1 #ifndef SUBOPT_HELPER_H |
2 #define SUBOPT_HELPER_H | |
3 | |
4 /** | |
5 * \file subopt-helper.h | |
6 * | |
7 * \brief Datatype and functions declarations for usage | |
8 * of the suboption parser. | |
9 * | |
10 */ | |
11 | |
12 #define OPT_ARG_BOOL 0 | |
13 #define OPT_ARG_INT 1 | |
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 | 16 #define OPT_ARG_FLOAT 4 |
14281 | 17 |
14285 | 18 typedef int (*opt_test_f)(void *); |
19 | |
14281 | 20 /** simple structure for defining the option name, type and storage location */ |
21 typedef struct opt_s | |
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 | 24 int type; ///< option type as defined in subopt-helper.h |
25 void * valp; ///< pointer to the mem where the value should be stored | |
14285 | 26 opt_test_f test; ///< argument test func ( optional ) |
14281 | 27 int set; ///< Is set internally by the parser if the option was found. |
28 ///< Don't use it at initialization of your opts, it will be | |
29 ///< overriden anyway! | |
30 } opt_t; | |
31 | |
32 /** parses the string for the options specified in opt */ | |
33 int subopt_parse( char const * const str, opt_t * opts ); | |
34 | |
35 | |
36 /*------------------ arg specific types and declaration -------------------*/ | |
37 typedef struct strarg_s | |
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 | 40 char const * str; ///< pointer to position inside the parse string |
41 } strarg_t; | |
42 | |
14736 | 43 |
44 int int_non_neg( int * i ); | |
45 int int_pos( int * i ); | |
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 | 50 #endif |