[libdvdcss-devel] libdvdcss: Factor out setting DVD access method from dvdcss_open()
[email protected] (Diego Biurrun)
| Newsgroups | gmane.comp.video.videolan.libdvdcss,gmane.comp.video.videolan.libdvdcss.devel |
|---|---|
| Message-ID | <[email protected]> |
libdvdcss | branch: master | Diego Biurrun <[email protected]> | Sat Oct 25 03:17:12 2014 +0200| [a57fbab5e3299a69e9c40f2f915c59a15816891b] | committer: Diego Biurrun libdvdcss: Factor out setting DVD access method from dvdcss_open() > http://git.videolan.org/gitweb.cgi/libdvdcss.git/?a=commit;h=a57fbab5e3299a69e9c40f2f915c59a15816891b --- src/libdvdcss.c | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/libdvdcss.c b/src/libdvdcss.c index 75b0d05..af7857e 100644 --- a/src/libdvdcss.c +++ b/src/libdvdcss.c @@ -154,6 +154,34 @@ static void set_verbosity( dvdcss_t dvdcss ) } } +static int set_access_method( dvdcss_t dvdcss ) +{ + const char *psz_method = getenv( "DVDCSS_METHOD" ); + + if( !psz_method ) + return 0; + + if( !strncmp( psz_method, "key", 4 ) ) + { + dvdcss->i_method = DVDCSS_METHOD_KEY; + } + else if( !strncmp( psz_method, "disc", 5 ) ) + { + dvdcss->i_method = DVDCSS_METHOD_DISC; + } + else if( !strncmp( psz_method, "title", 5 ) ) + { + dvdcss->i_method = DVDCSS_METHOD_TITLE; + } + else + { + print_error( dvdcss, "unknown decrypt method, please choose " + "from 'title', 'key' or 'disc'" ); + return -1; + } + return 0; +} + /** * \brief Open a DVD device or directory and return a dvdcss instance. * @@ -171,7 +199,6 @@ LIBDVDCSS_EXPORT dvdcss_t dvdcss_open ( const char *psz_target ) char psz_buffer[PATH_MAX]; int i_ret; - const char *psz_method = getenv( "DVDCSS_METHOD" ); const char *psz_cache = getenv( "DVDCSS_CACHE" ); #ifdef DVDCSS_RAW_OPEN const char *psz_raw_device = getenv( "DVDCSS_RAW_DEVICE" ); @@ -198,26 +225,9 @@ LIBDVDCSS_EXPORT dvdcss_t dvdcss_open ( const char *psz_target ) set_verbosity( dvdcss ); /* Set DVD access method from DVDCSS_METHOD environment variable. */ - if( psz_method != NULL ) + if( set_access_method( dvdcss ) < 0 ) { - if( !strncmp( psz_method, "key", 4 ) ) - { - dvdcss->i_method = DVDCSS_METHOD_KEY; - } - else if( !strncmp( psz_method, "disc", 5 ) ) - { - dvdcss->i_method = DVDCSS_METHOD_DISC; - } - else if( !strncmp( psz_method, "title", 5 ) ) - { - dvdcss->i_method = DVDCSS_METHOD_TITLE; - } - else - { - print_error( dvdcss, "unknown decrypt method, please choose " - "from 'title', 'key' or 'disc'" ); - goto error; - } + goto error; } /* Set CSS key cache directory. */ _______________________________________________ libdvdcss-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libdvdcss-devel