+extern int bb_xopen(const char *pathname, int flags);
+extern ssize_t bb_xread(int fd, void *buf, size_t count);
+extern void bb_xread_all(int fd, void *buf, size_t count);
+extern unsigned char bb_xread_char(int fd);
+
+#ifndef COMM_LEN
+/*#include <sched.h> *//* Task command name length */
+#ifdef TASK_COMM_LEN
+#define COMM_LEN TASK_COMM_LEN
+#else
+#define COMM_LEN 16 /* synchronize with size of comm in struct task_struct
+ in /usr/include/linux/sched.h */
+#endif
+#endif
+typedef struct {
+ int pid;
+ char user[9];
+ char state[4];
+ unsigned long rss;
+ int ppid;
+#ifdef CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
+ unsigned pcpu;
+ unsigned pscpu;
+ unsigned long stime, utime;
+#endif
+ char *cmd;
+
+ /* basename of executable file in call to exec(2),
+ size from kernel headers */
+ char short_cmd[COMM_LEN];
+} procps_status_t;
+
+extern procps_status_t * procps_scan(int save_user_arg0);
+extern int compare_string_array(const char * const string_array[], const char *key);
+
+extern int my_query_module(const char *name, int which, void **buf, size_t *bufsize, size_t *ret);
+
+typedef struct llist_s {
+ char *data;
+ struct llist_s *link;
+} llist_t;
+extern llist_t *llist_add_to(llist_t *old_head, char *new_item);
+extern llist_t *llist_add_to_end(llist_t *list_head, char *data);
+extern llist_t *llist_free_one(llist_t *elm);
+extern void llist_free(llist_t *elm);
+
+extern void print_login_issue(const char *issue_file, const char *tty);
+extern void print_login_prompt(void);
+
+#if defined(__uClinux__)
+extern void vfork_daemon_rexec(int nochdir, int noclose,
+ int argc, char **argv, char *foreground_opt);
+#endif
+
+extern int get_terminal_width_height(int fd, int *width, int *height);
+extern unsigned long get_ug_id(const char *s, long (*__bb_getxxnam)(const char *));
+
+typedef struct _sha1_ctx_t_ {
+ uint32_t count[2];
+ uint32_t hash[5];
+ uint32_t wbuf[16];
+} sha1_ctx_t;
+
+void sha1_begin(sha1_ctx_t *ctx);
+void sha1_hash(const void *data, size_t length, sha1_ctx_t *ctx);
+void *sha1_end(void *resbuf, sha1_ctx_t *ctx);
+
+typedef struct _md5_ctx_t_ {
+ uint32_t A;
+ uint32_t B;
+ uint32_t C;
+ uint32_t D;
+ uint32_t total[2];
+ uint32_t buflen;
+ char buffer[128];
+} md5_ctx_t;
+
+void md5_begin(md5_ctx_t *ctx);
+void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
+void *md5_end(void *resbuf, md5_ctx_t *ctx);
+
+extern uint32_t *bb_crc32_filltable (int endian);
+
+/* busybox.h will include dmalloc later for us, else include it here. */
+#if !defined _BB_INTERNAL_H_ && defined DMALLOC
+#include <dmalloc.h>
+#endif