#include "mdadm.h"
#include "dlink.h"
-#include <sys/dir.h>
+#include <dirent.h>
#include <glob.h>
#include <fnmatch.h>
#include <ctype.h>
[Mailaddr] = "mailaddr",
[Mailfrom] = "mailfrom",
[Program] = "program",
- [CreateDev] = "create",
+ [CreateDev]= "create",
[Homehost] = "homehost",
[LTEnd] = NULL
};
{
int len = strlen(word);
int n;
-
+
if (len < 3) return -1;
for (n=0; keywords[n]; n++) {
if (strncasecmp(word, keywords[n], len)==0)
}
return word;
}
-
+
/*
* conf_line reads one logical line from the conffile.
* It skips comments and continues until it finds a line that starts
if (buf[0] != ' ')
continue;
major = strtoul(buf, &mp, 10);
- if (mp == buf || *mp != ' ')
+ if (mp == buf || *mp != ' ')
continue;
minor = strtoul(mp, NULL, 10);
}
}
-void devline(char *line)
+void devline(char *line)
{
char *w;
struct conf_dev *cd;
} else if (strncasecmp(w, "metadata=", 9) == 0) {
/* style of metadata on the devices. */
int i;
-
+
for(i=0; superlist[i] && !mis.st; i++)
mis.st = superlist[i]->match_metadata_desc(w+9);
}
free_line(line);
}
-
+
fclose(f);
/* printf("got file\n"); */
free(t->devname);
free(t);
}
-
+
load_conffile();
if (cdevlist == NULL)
return dlist;
}
+int conf_test_dev(char *devname)
+{
+ struct conf_dev *cd;
+ if (cdevlist == NULL)
+ /* allow anything by default */
+ return 1;
+ for (cd = cdevlist ; cd ; cd = cd->next) {
+ if (strcasecmp(cd->name, "partitions") == 0)
+ return 1;
+ if (fnmatch(cd->name, devname, FNM_PATHNAME) == 0)
+ return 1;
+ }
+ return 0;
+}
+
+
int match_oneof(char *devices, char *devname)
{
/* check if one of the comma separated patterns in devices