int db_set_check(int x);
int db_set_rebuild_from(int x);
int db_nspool(void);
int cmd_du_all(int chan);
int g_list_search(int from);
void db_set_stopdbi(int x);
int db_expire_pile(void);
int db_expire_index(void);
int db_isregid(void);
int db_check_buckets_noerror(void);
int bsort_que_add_all(void);
int bsort_que_add_pile(int p);
void g_list_save(void);
void g_list_restore(void);
void show_mrec(int grp, int num);
int db_bucket_ranges_clear(void);
int db_check_bucket_ages(void);
int db_test_nulls(char *s, int len, char *gname, int n, char *info);
char *db_rerun_status(void);
int db_get_from(void);

void db_clear_group(int g);
void show_mrec_s(char *bf, int grp, int num);
void db_flush2(void);
int db_cancel_backgnd(void);
void db_do_later(void);
int db_purge_items(void) ;
void db_cancel_fast(int grp, int num, char *from, int islink);
void db_purge_test(int fi);
void db_purge_lost(String *xitem, int gid, int num,int fid, int pnt);
int cmd_du(int chan, int *ngrps, char *wild, int *nitems);
int db_iscancel(int grp, int num);
void db_set_regid(int t);
void db_slave_bucket(int n,int dsk, int pile);
void db_free_cache(int g, char *reason);
void db_clear_cache(char *reason);
int db_rebuild_ahist(int fid);
void db_scan_gids(char gid_isused[],int maxgid);
void db_set_rebuild_fast(int t);
void db_set_addlost(int t);
char *db_cheat_get(void);
void db_sort_bk(void);
int db_ispile(void);
void db_pile_move(int chan,char *xp1,char *xp2);

int idx_write_flush(char *reason);
void db_cheat_set(char *s);
int db_cancel(int grp, int num);
String *db_showdisks(void);
int db_choose_next(void);
#define IDXSIZE 20	      /* this figure is also in dbf.c */
void db_fix_control(void);
void db_set_renumber(int t);
int db_fidn(void);
void db_reload(void);
int g_find_last(int grp, int num);
String *db_showdbn(void);
String *db_get_head(int grp, int num);
int db_fix_hist(String *xitem, int gid, int num,int fid, int pnt);
String *db_get_body(int grp, int num, int from, int len, int *rfrom);
String *db_get(int grp, int num, int from, int len, int *totlen);
void db_convert(int grp, int upto);
int db_check_index(void);
int db_doexpire(void);
void db_set_rebuild(int t);
char *db_spool_dir(int d);
void check_bucket(int disk, char *fname, int h);
int db_check_buckets(void);
int db_total_space(void);
void db_convert_file(char *fname);
void db_correct_used(void);
void db_rebuild_start(void);
void db_set_rebuild(int t);
int db_addlost(int fi);
int db_nextused(int fi);
int db_write_last(void);
int db_write_first(void);
int db_wasused_clear(void);

int db_find_ref(String *xitem,int gid, int num,int grps[],int nums[], int isreb);
void db_flush_quick(void);

int db_add(int grp, int num, String *xitem);
int db_add_link(int grp, int num);
int db_kill(int g, int n, int islink);
int db_flush(void);
void db_exit(void);
int db_last_len(void);
char *db_status(void);
void db_init(void);
int db_purge(void);
void db_open_purge(void);
int item_open_append(char *fname);
int item_open_read(char *fname);
int idx_open(char *fname);
int g_find_next(int grp, int num);
int g_findnum(int grp);
int g_list_start(int grp);
int g_list_next(void);

void db_reuse_buckets(void);
void db_set_in_resort(void);
void db_clear_in_resort(void);
void db_slave_flush_pause(void);
void db_slave_flush_unpause(void);
void db_master_dbi_close(void);
char *bsort_status(void);

int bsort_que_add(int bkt);
int bsort_idle(void);
int bsort_process(char *fname);
int bsort_spawn(int bkt);
int bsort_spawn_release(void);

typedef struct MREC {int ipnt; short fid; unsigned int gid; int num; int len; int pnt; int jump; struct MREC *next;} Mrec;

Mrec *db_item_read(int grp, int num) ;
Mrec *m_cache_find(int gid, int num);
int g_cache_find(int grp);
Mrec *g_get_mrec_cache(int grp, int num);


