[libdvdcss-devel] [PATCH 40/47] libdvdcss: Factor out writing cache directory tag from dvdcss_open()

Diego Biurrun <[email protected]>
Newsgroups gmane.comp.video.videolan.libdvdcss,gmane.comp.video.videolan.libdvdcss.devel
Message-ID <[email protected]>
---

I think this is broken, the cache directory does not exist on the
first invocation of libdvdcss.

 src/libdvdcss.c | 45 +++++++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/src/libdvdcss.c b/src/libdvdcss.c
index 4e78da1..dc27d69 100644
--- a/src/libdvdcss.c
+++ b/src/libdvdcss.c
@@ -269,6 +269,30 @@ static char *set_cache_directory( dvdcss_t dvdcss )
     return psz_cache;
 }
 
+static void write_cache_dir_tag( dvdcss_t dvdcss, const char *psz_cache )
+{
+    static const char psz_tag[] =
+        "Signature: 8a477f597d28d172789f06886806bc55\r\n"
+        "# This file is a cache directory tag created by libdvdcss.\r\n"
+        "# For information about cache directory tags, see:\r\n"
+        "#   http://www.brynosaurus.com/cachedir/\r\n";
+    char psz_tagfile[PATH_MAX + 1 + 12 + 1];
+    int i_fd;
+
+    sprintf( psz_tagfile, "%s/CACHEDIR.TAG", psz_cache );
+    i_fd = open( psz_tagfile, O_RDWR|O_CREAT, 0644 );
+    if( i_fd >= 0 )
+    {
+        ssize_t len = strlen(psz_tag);
+        if( write( i_fd, psz_tag, len ) < len )
+        {
+            print_error( dvdcss,
+                         "Error writing cache directory tag, continuing..\n" );
+        }
+        close( i_fd );
+    }
+}
+
 /**
  * \brief Open a DVD device or directory and return a dvdcss instance.
  *
@@ -370,26 +394,7 @@ LIBDVDCSS_EXPORT dvdcss_t dvdcss_open ( const char *psz_target )
     /* If the cache is enabled, write the cache directory tag */
     if( psz_cache )
     {
-        static const char psz_tag[] =
-            "Signature: 8a477f597d28d172789f06886806bc55\r\n"
-            "# This file is a cache directory tag created by libdvdcss.\r\n"
-            "# For information about cache directory tags, see:\r\n"
-            "#   http://www.brynosaurus.com/cachedir/\r\n";
-        char psz_tagfile[PATH_MAX + 1 + 12 + 1];
-        int i_fd;
-
-        sprintf( psz_tagfile, "%s/CACHEDIR.TAG", psz_cache );
-        i_fd = open( psz_tagfile, O_RDWR|O_CREAT, 0644 );
-        if( i_fd >= 0 )
-        {
-            ssize_t len = strlen(psz_tag);
-            if( write( i_fd, psz_tag, len ) < len )
-            {
-                print_error( dvdcss,
-                             "Error writing cache directory tag, continuing..\n" );
-            }
-            close( i_fd );
-        }
+        write_cache_dir_tag( dvdcss, psz_cache );
     }
 
     /* If the cache is enabled, extract a unique disc ID */
-- 
1.9.1

_______________________________________________
libdvdcss-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libdvdcss-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.