[augeas-devel] augeas: master - New function transform_file_error
David Lutterkort
lutter at fedoraproject.org
Thu Jan 7 20:40:29 UTC 2010
Gitweb: http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=745490e6af85935e4cdd6d0f1c8246f7e780a0ed
Commit: 745490e6af85935e4cdd6d0f1c8246f7e780a0ed
Parent: 174e416282518386aac8d29b995a4225f06d5fd3
Author: David Lutterkort <lutter at redhat.com>
AuthorDate: Thu Jan 7 10:58:54 2010 -0800
Committer: David Lutterkort <lutter at redhat.com>
CommitterDate: Thu Jan 7 11:45:04 2010 -0800
New function transform_file_error
* src/transfrom.h (transform_file_error): add prototype
* src/transform.c (transform_file_error): new function
---
src/transform.c | 28 ++++++++++++++++++++++++++++
src/transform.h | 5 +++++
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/transform.c b/src/transform.c
index bd762c1..4f48826 100644
--- a/src/transform.c
+++ b/src/transform.c
@@ -525,6 +525,34 @@ int transform_validate(struct augeas *aug, struct tree *xfm) {
return 0;
}
+void transform_file_error(struct augeas *aug, const char *status,
+ const char *filename, const char *format, ...) {
+ char *ep = err_path(filename);
+ struct tree *err;
+ char *msg;
+ va_list ap;
+ int r;
+
+ err = tree_find_cr(aug, ep);
+ if (err == NULL)
+ return;
+
+ tree_unlink_children(aug, err);
+ tree_set_value(err, status);
+
+ err = tree_child_cr(err, s_message);
+ if (err == NULL)
+ return;
+
+ va_start(ap, format);
+ r = vasprintf(&msg, format, ap);
+ va_end(ap);
+ if (r < 0)
+ return;
+ tree_set_value(err, msg);
+ free(msg);
+}
+
int transform_load(struct augeas *aug, struct tree *xfm) {
int nmatches;
char **matches;
diff --git a/src/transform.h b/src/transform.h
index 567d5b3..3792233 100644
--- a/src/transform.h
+++ b/src/transform.h
@@ -90,6 +90,11 @@ int remove_file(struct augeas *aug, struct tree *tree);
/* Return a printable name for the transform XFM. Never returns NULL. */
const char *xfm_lens_name(struct tree *xfm);
+
+/* Store a file-specific transformation error in /augeas/files/PATH/error */
+ATTRIBUTE_FORMAT(printf, 4, 5)
+void transform_file_error(struct augeas *aug, const char *status,
+ const char *filename, const char *format, ...);
#endif
More information about the augeas-devel
mailing list