+ return fopen(subfile(file), mode);
+}
+#ifdef VMS
+/*
+ * EUNICE bug:
+ * quotes are not stripped from DCL. Do it here.
+ * Note if we are running under Unix shell we don't
+ * do the right thing.
+ */
+arg_fix(argc, argv)
+char **argv;
+{
+ register char *cp, *tp;
+
+ for (; argc > 0; --argc, argv++) {
+ cp = *argv;
+ if (cp == (char *)0 || *cp++ != '"')
+ continue;
+ tp = cp;
+ while (*tp++) ;
+ tp -= 2;
+ if (*tp == '"') {
+ *tp = '\0';
+ *argv = cp;
+ }
+ }
+}
+#endif VMS
+
+/*
+ * split into system and file part
+ *
+ * return codes:
+ * NOSYSPART
+ * HASSYSPART
+ */
+
+split(name, sys, rest)
+register char *name, *rest;
+char *sys;
+{
+ register char *c;
+
+ if (*name == LQUOTE) {
+ if ((c = index(name + 1, RQUOTE)) != NULL) {
+ /* strip off quotes */
+ name++;
+ while (c != name)
+ *rest++ = *name++;
+ *rest = '\0';
+ *sys = '\0';
+ return NOSYSPART;
+ }
+ }
+
+ if ((c = index(name, '!')) == NULL) {
+ strcpy(rest, name);
+ *sys = '\0';
+ return NOSYSPART;
+ }
+
+ *c++ = '\0';
+ strncpy(sys, name, MAXBASENAME);
+ sys[MAXBASENAME] = '\0';
+
+ strcpy(rest, c);
+ return HASSYSPART;