static int session_driver_initialized = 0;
#if !HAVE_ZIP_DISCARD
-/* Replacement for zip_discard() if it isn't available.
- */
+/* Replacement for zip_discard() if it isn't available. */
+/** @private */
SR_PRIV void sr_zip_discard(struct zip *archive)
{
if (zip_unchange_all(archive) < 0 || zip_close(archive) < 0)
}
#endif
-/** Read metadata entries from a session archive.
+/**
+ * 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.
+ *
* @return A new key/value store containing the session metadata.
+ *
+ * @private
*/
SR_PRIV GKeyFile *sr_sessionfile_read_metadata(struct zip *archive,
const struct zip_stat *entry)
return SR_OK;
}
-
+
+/** @private */
SR_PRIV struct sr_dev_inst *sr_session_prepare_sdi(const char *filename, struct sr_session **session)
{
struct sr_dev_inst *sdi = NULL;
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->driver = &session_driver;
- sdi->status = SR_ST_ACTIVE;
+ sdi->status = SR_ST_INACTIVE;
if (!session_driver_initialized) {
/* first device, init the driver */
session_driver_initialized = 1;
int unitsize;
char **sections, **keys, *val;
char channelname[SR_MAX_CHANNELNAME_LEN + 1];
+ gboolean file_has_logic;
if ((ret = sr_sessionfile_check(filename)) != SR_OK)
return ret;
return ret;
}
+ total_channels = 0;
+
error = NULL;
ret = SR_OK;
+ file_has_logic = FALSE;
sections = g_key_file_get_groups(kf, NULL);
for (i = 0; sections[i] && ret == SR_OK; i++) {
if (!strcmp(sections[i], "global"))
sr_config_set(sdi, NULL, SR_CONF_CAPTUREFILE,
g_variant_new_string(val));
g_free(val);
+ file_has_logic = TRUE;
}
g_clear_error(&error);
g_free(val);
sr_config_set(sdi, NULL, SR_CONF_SAMPLERATE,
g_variant_new_uint64(tmp_u64));
- } else if (!strcmp(keys[j], "unitsize")) {
+ } else if (!strcmp(keys[j], "unitsize") && file_has_logic) {
unitsize = g_key_file_get_integer(kf, sections[i],
keys[j], &error);
if (!sdi || unitsize <= 0 || error) {