+
+void
+set_archive_format (char *name)
+{
+ static struct fmttab {
+ char *name;
+ enum archive_format fmt;
+ } fmttab[] = {
+ { "v7", V7_FORMAT },
+ { "oldgnu", OLDGNU_FORMAT },
+ { "posix", POSIX_FORMAT },
+#if 0 /* not fully supported yet */
+ { "star", STAR_FORMAT },
+#endif
+ { "gnu", GNU_FORMAT },
+ NULL
+ };
+ struct fmttab *p;
+ enum archive_format fmt;
+
+ for (p = fmttab; p->name; p++)
+ {
+ if (strcmp (p->name, name) == 0)
+ {
+ fmt = p->fmt;
+ break;
+ }
+ }
+
+ if (archive_format != DEFAULT_FORMAT && archive_format != fmt)
+ USAGE_ERROR ((0, 0, _("Conflicting archive format options")));
+
+ archive_format = fmt;
+}