|
|
@@ -2491,9 +2491,12 @@ void notify_clear(snac *snac)
|
|
|
|
|
|
/** searches **/
|
|
|
|
|
|
-xs_list *content_search(snac *user, const char *regex, int priv, int max_secs, int *timeout)
|
|
|
+xs_list *content_search(snac *user, const char *regex, int priv, int max_secs, int max_res, int *timeout)
|
|
|
/* returns a list of posts which content matches the regex */
|
|
|
{
|
|
|
+ if (regex == NULL || *regex == '\0')
|
|
|
+ return xs_list_new();
|
|
|
+
|
|
|
xs_set seen;
|
|
|
|
|
|
xs_set_init(&seen);
|
|
|
@@ -2517,7 +2520,7 @@ xs_list *content_search(snac *user, const char *regex, int priv, int max_secs, i
|
|
|
xs_list_next(pub_tl, &pub_md5, &pub_c);
|
|
|
xs_list_next(priv_tl, &priv_md5, &priv_c);
|
|
|
|
|
|
- for (;;) {
|
|
|
+ while (max_res > 0) {
|
|
|
char *md5 = NULL;
|
|
|
enum { NONE, PUBLIC, PRIVATE } from = NONE;
|
|
|
|
|
|
@@ -2587,8 +2590,10 @@ xs_list *content_search(snac *user, const char *regex, int priv, int max_secs, i
|
|
|
/* apply regex */
|
|
|
xs *l = xs_regex_select_n(c, regex, 1);
|
|
|
|
|
|
- if (xs_list_len(l))
|
|
|
+ if (xs_list_len(l)) {
|
|
|
xs_set_add(&seen, md5);
|
|
|
+ max_res--;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return xs_set_result(&seen);
|