void queueMsg(rdWin *w);
void freeMsgq(rdWin *w);
rdWin *getActiveWin(void);
int changeItems(rdWin *w, char **items, int savecontents);
void user_listSelection(rdWin *w, rdItemRange r);
void user_cmdList(rdWin *w, char *cmd, ulong p0, ulong p1, rdItemRange items, char *arg);
void user_cmdArt(rdWin *w, char *cmd, ulong p0, ulong p1, char *arg);
char *sstrdup(char *str);
int getArtWin(int user, void *userp, char *title, char *text, char *filename, int savecontents, int protect);
int getListWin(int user, void *userp, char *title, char **items, int savecontents);
int readerInit(int user, char *userp, char *title, char **items, int ml, int ma, int savecontents);
int readerMainLoop(void);
rdItemRange itemNumber(rdWin *w, ulong p0, ulong p1);
void highlightItem(rdWin *w, rdItemRange r);
void winReflectCmd(rdWin *w, char *cmd, char *arg);
void closeWin(rdWin *w);
void freeWin(rdWin *w);
void msg_handler(rdWin *w);
void rdGotoWin(rdWin *w);
rdWin *userpWin(void *ptr);
ulong atoul(char *str);
void rdSetMulti(int list, int art);
void rdInclude(rdWin *w, char *str, size_t len);
void rdSetRescanTimer(int secs);
void dorescan(void);
int rdDelItem(rdWin *w, int item);
int rdAddItem(rdWin *w, char *text);
int rdChangeItem(rdWin *w, int item, char *text);
