+/*
+** Append a message arg to an array of them, resizing it if necessary.
+** The function is written to suit the arg parsing code it was extracted
+** from, and will probably be changed when the other code is cleaned up.
+*/
+void
+app_msgarg(struct msgs_array *msgs, char *cp)
+{
+ if(msgs->size >= msgs->max)
+ msgs->msgs = mh_xrealloc(msgs->msgs,
+ (msgs->max+=MAXMSGS)*sizeof(*msgs->msgs));
+ msgs->msgs[msgs->size++] = cp;
+}
+
+/* Open a form or components file */
+int
+open_form(char **form, char *def)
+{
+ int in;
+ if (*form) {
+ if ((in = open(etcpath(*form), O_RDONLY)) == NOTOK)
+ adios(*form, "unable to open form file");
+ } else {
+ if ((in = open(etcpath(def), O_RDONLY)) == NOTOK)
+ adios(def, "unable to open default components file");
+ *form = def;
+ }
+ return in;