+
+static RSET rpn_save_set (RSET r, int *count)
+{
+#if 0
+ RSET d;
+ rset_temp_parms parms;
+#endif
+ int psysno = 0;
+ struct it_key key;
+
+ logf (LOG_DEBUG, "rpn_save_set");
+ *count = 0;
+#if 0
+ parms.key_size = sizeof(struct it_key);
+ d = rset_create (rset_kind_temp, &parms);
+ rset_open (d, 1);
+#endif
+
+ rset_open (r, 0);
+ while (rset_read (r, &key))
+ {
+ if (key.sysno != psysno)
+ {
+ psysno = key.sysno;
+ (*count)++;
+ }
+#if 0
+ rset_write (d, &key);
+#endif
+ }
+ rset_close (r);
+#if 0
+ rset_close (d);
+#endif
+ logf (LOG_DEBUG, "%d distinct sysnos", *count);
+#if 0
+ return d;
+#endif
+}
+
+int rpn_search (ZServerInfo *zi,
+ Z_RPNQuery *rpn, int num_bases, char **basenames,
+ const char *setname, int *hits)
+{
+ RSET rset, result_rset;
+
+ rset = rpn_search_structure (zi, rpn->RPNStructure);
+ if (!rset)
+ return 0;
+ result_rset = rpn_save_set (rset, hits);
+#if 0
+ rset_delete (result_rset);
+#endif
+
+ resultSetAdd (zi, setname, 1, rset);
+ return 0;
+}
+