]> sigrok.org Git - libsigrok.git/blobdiff - src/session_file.c
zip: Provide fallback if zip_discard() is unavailable
[libsigrok.git] / src / session_file.c
index fdceba1476b3b8c690412fd52a2936064f25fa62..d86f5c1c744973715234070e1b3818fd13096610 100644 (file)
 extern SR_PRIV struct sr_dev_driver session_driver;
 static int session_driver_initialized = 0;
 
+#if !HAVE_ZIP_DISCARD
+/* Replacement for zip_discard() if it isn't available.
+ */
+SR_PRIV void sr_zip_discard(struct zip *archive)
+{
+       if (zip_unchange_all(archive) < 0 || zip_close(archive) < 0)
+               sr_err("Failed to discard ZIP archive: %s", zip_strerror(archive));
+}
+#endif
+
 /** Read metadata entries from a session archive.
  * @param[in] archive An open ZIP archive.
  * @param[in] entry Stat buffer filled in for the metadata archive member.
@@ -266,7 +276,7 @@ SR_API int sr_session_load(struct sr_context *ctx, const char *filename,
                                                break;
                                        }
                                        sr_config_set(sdi, NULL, SR_CONF_NUM_LOGIC_CHANNELS,
-                                                       g_variant_new_uint64(total_channels));
+                                                       g_variant_new_int32(total_channels));
                                        for (k = 0; k < total_channels; k++) {
                                                g_snprintf(channelname, sizeof channelname,
                                                                "%d", k);