Only return OK from the format match routine when either of the tested
conditions reliably matched. Return an error in all other cases. This
avoids that the Saleae module is "winning a contest" due to even the
weakest condition, and then is not able to handle the input file.
static const char *zip_ext = ".sal";
static const char *bin_ext = ".bin";
static const char *zip_ext = ".sal";
static const char *bin_ext = ".bin";
const char *fn;
size_t fn_len, ext_len;
const char *ext_pos;
GString *buf;
const char *fn;
size_t fn_len, ext_len;
const char *ext_pos;
GString *buf;
/* Weak match on the filename (when available). */
fn = g_hash_table_lookup(metadata, GINT_TO_POINTER(SR_INPUT_META_FILENAME));
if (fn && *fn) {
/* Weak match on the filename (when available). */
fn = g_hash_table_lookup(metadata, GINT_TO_POINTER(SR_INPUT_META_FILENAME));
if (fn && *fn) {
ext_len = strlen(zip_ext);
ext_pos = &fn[fn_len - ext_len];
if (fn_len >= ext_len && g_ascii_strcasecmp(ext_pos, zip_ext) == 0) {
ext_len = strlen(zip_ext);
ext_pos = &fn[fn_len - ext_len];
if (fn_len >= ext_len && g_ascii_strcasecmp(ext_pos, zip_ext) == 0) {
- if (SALEAE_WITH_SAL_SUPPORT)
+ if (SALEAE_WITH_SAL_SUPPORT) {
}
ext_len = strlen(bin_ext);
ext_pos = &fn[fn_len - ext_len];
if (fn_len >= ext_len && g_ascii_strcasecmp(ext_pos, bin_ext) == 0) {
*confidence = 50;
}
ext_len = strlen(bin_ext);
ext_pos = &fn[fn_len - ext_len];
if (fn_len >= ext_len && g_ascii_strcasecmp(ext_pos, bin_ext) == 0) {
*confidence = 50;
case FMT_LOGIC2_DIGITAL:
case FMT_LOGIC2_ANALOG:
*confidence = 1;
case FMT_LOGIC2_DIGITAL:
case FMT_LOGIC2_ANALOG:
*confidence = 1;
break;
default:
/* EMPTY */
break;
}
break;
default:
/* EMPTY */
break;
}
+ return matched ? SR_OK : SR_ERR_DATA;
}
static int init(struct sr_input *in, GHashTable *options)
}
static int init(struct sr_input *in, GHashTable *options)