]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
epgdb: improve statistics logs
authorJaroslav Kysela <perex@perex.cz>
Tue, 27 Sep 2016 19:23:51 +0000 (21:23 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 27 Sep 2016 19:23:51 +0000 (21:23 +0200)
src/epgdb.c
src/settings.c
src/tvheadend.h
src/zlib.c

index cedfbf666d092a2c607e90fdd2a248b64b38ffb5..2e5f526123338559d7781145fd13c0e84f3be7a6 100644 (file)
@@ -344,13 +344,15 @@ void epg_init ( void )
 #if ENABLE_ZLIB
   if (remain > 12 && memcmp(rp, "\xff\xffGZIP00", 8) == 0) {
     uint32_t orig = (rp[8] << 24) | (rp[9] << 16) | (rp[10] << 8) | rp[11];
-    tvhinfo(LS_EPGDB, "gzip format detected, inflating (ratio %.1f%%)",
-           (float)((remain * 100.0) / orig));
+    tvhinfo(LS_EPGDB, "gzip format detected, inflating (ratio %.1f%% deflated size %zd)",
+           (float)((remain * 100.0) / orig), remain);
     rp = zlib_mem = tvh_gzip_inflate(rp + 12, remain - 12, orig);
     remain = rp ? orig : 0;
   }
 #endif
 
+  tvhinfo(LS_EPGDB, "parsing %zd bytes", remain);
+
   /* Process */
   memset(&stats, 0, sizeof(stats));
   while ( remain > 4 ) {
@@ -402,7 +404,7 @@ void epg_init ( void )
   /* Stats */
   tvhinfo(LS_EPGDB, "loaded v%d", ver);
   tvhinfo(LS_EPGDB, "  config     %d", stats.config.total);
-  tvhinfo(LS_EPGDB, "  channels   %d", stats.channels.total);
+  //tvhinfo(LS_EPGDB, "  channels   %d", stats.channels.total);
   tvhinfo(LS_EPGDB, "  brands     %d", stats.brands.total);
   tvhinfo(LS_EPGDB, "  seasons    %d", stats.seasons.total);
   tvhinfo(LS_EPGDB, "  episodes   %d", stats.episodes.total);
@@ -468,7 +470,7 @@ static int _epg_write_sect ( sbuf_t *sb, const char *sect )
 static void epg_save_tsk_callback ( void *p, int dearmed )
 {
   sbuf_t *sb = p;
-  size_t size = sb->sb_ptr;
+  size_t size = sb->sb_ptr, orig;
   int fd, r;
 
   tvhinfo(LS_EPGDB, "save start");
@@ -476,15 +478,15 @@ static void epg_save_tsk_callback ( void *p, int dearmed )
   if (fd >= 0) {
 #if ENABLE_ZLIB
     if (config.epg_compress) {
-      r = tvh_gzip_deflate_fd_header(fd, sb->sb_data, sb->sb_ptr, 3) < 0;
+      r = tvh_gzip_deflate_fd_header(fd, sb->sb_data, size, &orig, 3) < 0;
    } else
 #endif
-      r = tvh_write(fd, sb->sb_data, sb->sb_ptr);
+      r = tvh_write(fd, sb->sb_data, orig = size);
     close(fd);
     if (r)
-      tvherror(LS_EPGDB, "write error (size %zd)", size);
+      tvherror(LS_EPGDB, "write error (size %zd)", orig);
     else
-      tvhinfo(LS_EPGDB, "stored (size %zd)", size);
+      tvhinfo(LS_EPGDB, "stored (size %zd)", orig);
   } else
     tvherror(LS_EPGDB, "unable to open epgdb file");
   sbuf_free(sb);
index 812997097e627580a9fdb42e30bce625723c90cc..3718c488fbc7db73074e1b85589df09853038717 100644 (file)
@@ -184,7 +184,7 @@ hts_settings_save(htsmsg_t *record, const char *pathfmt, ...)
     size_t msglen;
     r = htsmsg_binary_serialize(record, &msgdata, &msglen, 2*1024*1024);
     if (!r && msglen >= 4) {
-      r = tvh_gzip_deflate_fd_header(fd, msgdata + 4, msglen - 4, 3);
+      r = tvh_gzip_deflate_fd_header(fd, msgdata + 4, msglen - 4, NULL, 3);
       if (r)
         ok = 0;
     } else {
index 534c017bfe94efab8905b3719bc03b52b9f03f48..c34e1f2130bca306700d84a610d2b9f48177ccbe 100644 (file)
@@ -821,7 +821,7 @@ char *regexp_escape ( const char *str );
 uint8_t *tvh_gzip_inflate ( const uint8_t *data, size_t size, size_t orig );
 uint8_t *tvh_gzip_deflate ( const uint8_t *data, size_t orig, size_t *size );
 int      tvh_gzip_deflate_fd ( int fd, const uint8_t *data, size_t orig, size_t *size, int speed );
-int      tvh_gzip_deflate_fd_header ( int fd, const uint8_t *data, size_t orig, int speed );
+int      tvh_gzip_deflate_fd_header ( int fd, const uint8_t *data, size_t orig, size_t *size, int speed );
 #endif
 
 /* URL decoding */
index 3dcc994d524cb6444a7f66cf05f74d915a51c168..2df7b09cb2e8f8c7cec93b5a86e336ff6471959a 100644 (file)
@@ -153,12 +153,14 @@ int tvh_gzip_deflate_fd ( int fd, const uint8_t *data, size_t orig, size_t *size
   return r;
 }
 
-int tvh_gzip_deflate_fd_header ( int fd, const uint8_t *data, size_t orig, int speed )
+int tvh_gzip_deflate_fd_header ( int fd, const uint8_t *data, size_t orig,
+                                 size_t *deflated_size, int speed )
 {
   uint8_t data2[4];
-  size_t size;
+  size_t size = 0;
   int r;
 
+  if (deflated_size) *deflated_size = 0;
   r = tvh_write(fd, "\xff\xffGZIP00\x00\x00\x00\x00", 12);
   if (r)
     return 1;
@@ -166,10 +168,11 @@ int tvh_gzip_deflate_fd_header ( int fd, const uint8_t *data, size_t orig, int s
     r = tvh_gzip_deflate_fd(fd, data, orig, &size, 3) < 0;
     if (r || size > UINT_MAX)
       return 1;
-    r = lseek(fd, 8, SEEK_SET) != (off_t)8;
-    if (r)
-      return 1;
   }
+  r = lseek(fd, 8, SEEK_SET) != (off_t)8;
+  if (r)
+    return 1;
+  if (deflated_size) *deflated_size = size + 12;
   data2[0] = (orig >> 24) & 0xff;
   data2[1] = (orig >> 16) & 0xff;
   data2[2] = (orig >> 8) & 0xff;