summaryrefslogtreecommitdiffstats
path: root/discover/parser.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2014-01-24 14:39:37 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-01-30 21:59:10 +0800
commit4896183708855fbfd0aa892537fbcc17ed7eb971 (patch)
tree5bbd851636871982cc26ca59ff1aa0970f6d8116 /discover/parser.c
parenteea9a9fa697654ef26d7e2c1cee3b4ac610db643 (diff)
downloadtalos-petitboot-4896183708855fbfd0aa892537fbcc17ed7eb971.tar.gz
talos-petitboot-4896183708855fbfd0aa892537fbcc17ed7eb971.zip
discover: Add support for checking directories in parser API
This change adds a function to the parser API: int parser_check_dir(struct discover_context *ctx, struct discover_device *dev, const char *dirname) - which allows parsers to check for the presence of a directory (path of 'dirname') on the device ('dev'). We use this in the GRUB2 parser to implement the `test -d` check. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/parser.c')
-rw-r--r--discover/parser.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/discover/parser.c b/discover/parser.c
index 21b48de..74b2559 100644
--- a/discover/parser.c
+++ b/discover/parser.c
@@ -49,6 +49,25 @@ int parser_request_file(struct discover_context *ctx,
return rc;
}
+int parser_check_dir(struct discover_context *ctx,
+ struct discover_device *dev, const char *dirname)
+{
+ struct stat statbuf;
+ char *path;
+ int rc;
+
+ if (!dev->mount_path)
+ return -1;
+
+ path = local_path(ctx, dev, dirname);
+
+ rc = stat(path, &statbuf);
+ if (!rc)
+ return -1;
+
+ return S_ISDIR(statbuf.st_mode) ? 0 : -1;
+}
+
int parser_replace_file(struct discover_context *ctx,
struct discover_device *dev, const char *filename,
char *buf, int len)
OpenPOWER on IntegriCloud