-const char *res_get (const char *name);
-const char *res_put (const char *name, const char *value);
-int res_write (void);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct res_entry {
+ char *name;
+ char *value;
+ struct res_entry *next;
+};
+
+typedef struct res_struct {
+ struct res_entry *first, *last;
+ char *name;
+ int init;
+} *Res;
+
+Res res_open (const char *name);
+void res_close (Res r);
+char *res_get (Res r, const char *name);
+char *res_get_def (Res r, const char *name, char *def);
+int res_get_match (Res r, const char *name, const char *value, const char *s);
+void res_put (Res r, const char *name, const char *value);
+void res_trav (Res r, const char *prefix, void *p,
+ void (*f)(void *p, const char *name, const char *value));
+int res_write (Res r);
+
+#ifdef __cplusplus
+}
+#endif
+