summaryrefslogtreecommitdiffstats
path: root/subopt-helper.c
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-10-01 18:29:35 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-02 04:18:08 +0200
commit69e3e06a1ab7c58b16294d0c7451b374e5966e21 (patch)
tree2505424106c7b90448262cc3bdc3f73b699ccf32 /subopt-helper.c
parentb44a0edd9fd1d88e7d114c3ba1f34662127981ad (diff)
downloadmpv-69e3e06a1ab7c58b16294d0c7451b374e5966e21.tar.bz2
mpv-69e3e06a1ab7c58b16294d0c7451b374e5966e21.tar.xz
Move code to avoid forward declarations in top-level .c files
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32421 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'subopt-helper.c')
-rw-r--r--subopt-helper.c135
1 files changed, 66 insertions, 69 deletions
diff --git a/subopt-helper.c b/subopt-helper.c
index 31cedeef6c..37c634b5ff 100644
--- a/subopt-helper.c
+++ b/subopt-helper.c
@@ -47,10 +47,72 @@
#define NDEBUG
#endif
-/* prototypes for argument parsing */
-static char const * parse_int( char const * const str, int * const valp );
-static char const * parse_str( char const * const str, strarg_t * const valp );
-static char const * parse_float( char const * const str, float * const valp );
+
+static char const * parse_int( char const * const str, int * const valp )
+{
+ char * endp;
+
+ assert( str && "parse_int(): str == NULL" );
+
+ *valp = (int)strtol( str, &endp, 0 );
+
+ /* nothing was converted */
+ if ( str == endp ) { return NULL; }
+
+ return endp;
+}
+
+static char const * parse_float( char const * const str, float * const valp )
+{
+ char * endp;
+
+ assert( str && "parse_float(): str == NULL" );
+
+ *valp = strtod( str, &endp );
+
+ /* nothing was converted */
+ if ( str == endp ) { return NULL; }
+
+ return endp;
+}
+
+#define QUOTE_CHAR '%'
+static char const * parse_str( char const * str, strarg_t * const valp )
+{
+ char const * match = strchr( str, ':' );
+
+ if (str[0] == QUOTE_CHAR) {
+ int len = 0;
+ str = &str[1];
+ len = (int)strtol(str, (char **)&str, 0);
+ if (!str || str[0] != QUOTE_CHAR || (len > strlen(str) - 1))
+ return NULL;
+ str = &str[1];
+ match = &str[len];
+ }
+ else
+ if (str[0] == '"') {
+ str = &str[1];
+ match = strchr(str, '"');
+ if (!match)
+ return NULL;
+ valp->len = match - str;
+ valp->str = str;
+ return &match[1];
+ }
+ if ( !match )
+ match = &str[strlen(str)];
+
+ // empty string or too long
+ if ((match == str) || (match - str > INT_MAX))
+ return NULL;
+
+ valp->len = match - str;
+ valp->str = str;
+
+ return match;
+}
+
/**
* \brief Try to parse all options in str and fail if it was not possible.
@@ -249,71 +311,6 @@ else if ( substr_len == opt_len+2 )
return 0;
}
-static char const * parse_int( char const * const str, int * const valp )
-{
- char * endp;
-
- assert( str && "parse_int(): str == NULL" );
-
- *valp = (int)strtol( str, &endp, 0 );
-
- /* nothing was converted */
- if ( str == endp ) { return NULL; }
-
- return endp;
-}
-
-static char const * parse_float( char const * const str, float * const valp )
-{
- char * endp;
-
- assert( str && "parse_float(): str == NULL" );
-
- *valp = strtod( str, &endp );
-
- /* nothing was converted */
- if ( str == endp ) { return NULL; }
-
- return endp;
-}
-
-#define QUOTE_CHAR '%'
-static char const * parse_str( char const * str, strarg_t * const valp )
-{
- char const * match = strchr( str, ':' );
-
- if (str[0] == QUOTE_CHAR) {
- int len = 0;
- str = &str[1];
- len = (int)strtol(str, (char **)&str, 0);
- if (!str || str[0] != QUOTE_CHAR || (len > strlen(str) - 1))
- return NULL;
- str = &str[1];
- match = &str[len];
- }
- else
- if (str[0] == '"') {
- str = &str[1];
- match = strchr(str, '"');
- if (!match)
- return NULL;
- valp->len = match - str;
- valp->str = str;
- return &match[1];
- }
- if ( !match )
- match = &str[strlen(str)];
-
- // empty string or too long
- if ((match == str) || (match - str > INT_MAX))
- return NULL;
-
- valp->len = match - str;
- valp->str = str;
-
- return match;
-}
-
/*** common test functions ***/