Allow empty values in DMAP queries for string fields
This commit is contained in:
parent
371725b0da
commit
f56884015f
|
@ -136,28 +136,18 @@ expr returns [ pANTLR3_STRING result, int valid ]
|
||||||
*val = '\0';
|
*val = '\0';
|
||||||
val++;
|
val++;
|
||||||
|
|
||||||
if (*val == '\0')
|
|
||||||
{
|
|
||||||
if (op == '!')
|
|
||||||
DPRINTF(E_LOG, L_DAAP, "Negation found but operator missing in clause '\%s\%c'\n", field, op);
|
|
||||||
else
|
|
||||||
DPRINTF(E_LOG, L_DAAP, "No value given in clause '\%s\%c'\n", field, op);
|
|
||||||
$valid = 0;
|
|
||||||
goto STR_result_valid_0; /* ABORT */
|
|
||||||
}
|
|
||||||
|
|
||||||
if (op == '!')
|
if (op == '!')
|
||||||
{
|
{
|
||||||
neg_op = 1;
|
|
||||||
op = *val;
|
|
||||||
val++;
|
|
||||||
|
|
||||||
if (*val == '\0')
|
if (*val == '\0')
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DAAP, "No value given in clause '\%s!\%c'\n", field, op);
|
DPRINTF(E_LOG, L_DAAP, "Negation found but operator missing in clause '\%s\%c'\n", field, op);
|
||||||
$valid = 0;
|
$valid = 0;
|
||||||
goto STR_result_valid_0; /* ABORT */
|
goto STR_result_valid_0; /* ABORT */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
neg_op = 1;
|
||||||
|
op = *val;
|
||||||
|
val++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
neg_op = 0;
|
neg_op = 0;
|
||||||
|
@ -171,6 +161,14 @@ expr returns [ pANTLR3_STRING result, int valid ]
|
||||||
goto STR_result_valid_0; /* ABORT */
|
goto STR_result_valid_0; /* ABORT */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Empty values OK for string fields, NOK for integer */
|
||||||
|
if ((*val == '\0') && (dqfm->as_int))
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_DAAP, "No value given in clause '\%s\%s\%c'\n", field, (neg_op) ? "!" : "", op);
|
||||||
|
$valid = 0;
|
||||||
|
goto STR_result_valid_0; /* ABORT */
|
||||||
|
}
|
||||||
|
|
||||||
$result->append8($result, dqfm->db_col);
|
$result->append8($result, dqfm->db_col);
|
||||||
|
|
||||||
/* Int field: check integer conversion */
|
/* Int field: check integer conversion */
|
||||||
|
@ -182,16 +180,16 @@ expr returns [ pANTLR3_STRING result, int valid ]
|
||||||
if (((errno == ERANGE) && ((longval == LONG_MAX) || (longval == LONG_MIN)))
|
if (((errno == ERANGE) && ((longval == LONG_MAX) || (longval == LONG_MIN)))
|
||||||
|| ((errno != 0) && (longval == 0)))
|
|| ((errno != 0) && (longval == 0)))
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DAAP, "Value '\%s' in clause '\%s\%c\%s' does not convert to an integer type\n",
|
DPRINTF(E_LOG, L_DAAP, "Value '\%s' in clause '\%s\%s\%c\%s' does not convert to an integer type\n",
|
||||||
val, field, op, val);
|
val, field, (neg_op) ? "!" : "", op, val);
|
||||||
$valid = 0;
|
$valid = 0;
|
||||||
goto STR_result_valid_0; /* ABORT */
|
goto STR_result_valid_0; /* ABORT */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (end == (char *)val)
|
if (end == (char *)val)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DAAP, "Value '\%s' in clause '\%s\%c\%s' does not represent an integer value\n",
|
DPRINTF(E_LOG, L_DAAP, "Value '\%s' in clause '\%s\%s\%c\%s' does not represent an integer value\n",
|
||||||
val, field, op, val);
|
val, field, (neg_op) ? "!" : "", op, val);
|
||||||
$valid = 0;
|
$valid = 0;
|
||||||
goto STR_result_valid_0; /* ABORT */
|
goto STR_result_valid_0; /* ABORT */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue