| |
sbuf_cat(sqlcond, "desc");
|
| |
state = OPERATOR_STRING;
|
| |
break;
|
| - |
case '#':
|
| + |
case '#': /* FALLTHROUGH */
|
| + |
case '?':
|
| |
str++;
|
| |
const char *dbstr = for_remote ? "%1$s." : "";
|
| + |
const char *sqlop = (str[0] == '#' ? "COUNT(*)" : "COUNT(*) > 0");
|
| |
switch (str[0]) {
|
| |
case 'd':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %sdeps AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %sdeps AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'r':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %sdeps AS d WHERE d.origin=p.origin)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %sdeps AS d WHERE d.origin=p.origin)", sqlop, dbstr);
|
| |
break;
|
| |
case 'C':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_categories AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_categories AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'F':
|
| |
if (for_remote)
|
| |
goto bad_option;
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %sfiles AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %sfiles AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'O':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %soptions AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %soptions AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'D':
|
| |
if (for_remote)
|
| |
goto bad_option;
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_directories AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_directories AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'L':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_licenses AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_licenses AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'U':
|
| |
if (for_remote)
|
| |
goto bad_option;
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_users AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_users AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'G':
|
| |
if (for_remote)
|
| |
goto bad_option;
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_groups AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_groups AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'B':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_shlibs_required AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_shlibs_required AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'b':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_shlibs_provided AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_shlibs_provided AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
case 'A':
|
| - |
sbuf_printf(sqlcond, "(SELECT COUNT(*) FROM %spkg_annotation AS d WHERE d.package_id=p.id)", dbstr);
|
| + |
sbuf_printf(sqlcond, "(SELECT %s FROM %spkg_annotation AS d WHERE d.package_id=p.id)", sqlop, dbstr);
|
| |
break;
|
| |
default:
|
| |
goto bad_option;
|