+ struct grs_handlers *h = malloc (sizeof(*h));
+ h->handlers = 0;
+
+ grs_add_handler (h, recTypeGrs_sgml);
+ grs_add_handler (h, recTypeGrs_regx);
+#if HAVE_TCL_H
+ grs_add_handler (h, recTypeGrs_tcl);
+#endif
+ grs_add_handler (h, recTypeGrs_marc);
+ return h;
+}
+
+static void grs_destroy(void *clientData)
+{
+ struct grs_handlers *h = clientData;
+ struct grs_handler *gh = h->handlers, *gh_next;
+ while (gh)
+ {
+ gh_next = gh->next;
+ if (gh->initFlag)
+ (*gh->type->destroy)(gh->clientData);
+ free (gh);
+ gh = gh_next;
+ }
+ free (h);