X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Faugeas.c;h=b56012cd8af71f4001d7596f1dd15985f7cde0ea;hp=3595f8dd38c0a4d7777ab054160d4512b060c09c;hb=e94f89f40d989d111882178c87b5bfc22314fca8;hpb=848fd706616ca65be7f74b48b39c95363640a187 diff --git a/daemon/augeas.c b/daemon/augeas.c index 3595f8d..b56012c 100644 --- a/daemon/augeas.c +++ b/daemon/augeas.c @@ -1,5 +1,5 @@ /* libguestfs - the guestfsd daemon - * Copyright (C) 2009 Red Hat Inc. + * Copyright (C) 2009 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,11 +22,15 @@ #include #include #include + +#ifdef HAVE_AUGEAS #include +#endif #include "daemon.h" #include "actions.h" +#ifdef HAVE_AUGEAS /* The Augeas handle. We maintain a single handle per daemon, which * is all that is necessary and reduces the complexity of the API * considerably. @@ -41,29 +45,25 @@ static augeas *aug = NULL; } \ } \ while (0) +#endif /* We need to rewrite the root path so it is based at /sysroot. */ int do_aug_init (const char *root, int flags) { +#ifdef HAVE_AUGEAS char *buf; - int len; - - NEED_ROOT (-1); - ABS_PATH (root, -1); if (aug) { aug_close (aug); aug = NULL; } - len = strlen (root) + 9; - buf = malloc (len); + buf = sysroot_path (root); if (!buf) { reply_with_perror ("malloc"); return -1; } - snprintf (buf, len, "/sysroot%s", root); aug = aug_init (buf, NULL, flags); free (buf); @@ -74,17 +74,26 @@ do_aug_init (const char *root, int flags) } return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int do_aug_close (void) { +#ifdef HAVE_AUGEAS NEED_AUG(-1); aug_close (aug); aug = NULL; return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int @@ -102,29 +111,29 @@ do_aug_defvar (const char *name, const char *expr) } return r; #else - reply_with_error ("aug_defvar is not available"); + reply_with_error ("%s is not available", __func__); return -1; #endif } -guestfs_aug_defnode_ret * +guestfs_int_int_bool * do_aug_defnode (const char *name, const char *expr, const char *val) { #ifdef HAVE_AUG_DEFNODE - static guestfs_aug_defnode_ret r; + static guestfs_int_int_bool r; int created; NEED_AUG (NULL); - r.nrnodes = aug_defnode (aug, name, expr, val, &created); - if (r.nrnodes == -1) { + r.i = aug_defnode (aug, name, expr, val, &created); + if (r.i == -1) { reply_with_error ("Augeas defnode failed"); return NULL; } - r.created = created; + r.b = created; return &r; #else - reply_with_error ("aug_defvar is not available"); + reply_with_error ("%s is not available", __func__); return NULL; #endif } @@ -132,6 +141,7 @@ do_aug_defnode (const char *name, const char *expr, const char *val) char * do_aug_get (const char *path) { +#ifdef HAVE_AUGEAS const char *value = NULL; char *v; int r; @@ -165,11 +175,16 @@ do_aug_get (const char *path) } return v; /* Caller frees. */ +#else + reply_with_error ("%s is not available", __func__); + return NULL; +#endif } int do_aug_set (const char *path, const char *val) { +#ifdef HAVE_AUGEAS int r; NEED_AUG (-1); @@ -181,11 +196,16 @@ do_aug_set (const char *path, const char *val) } return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int do_aug_insert (const char *path, const char *label, int before) { +#ifdef HAVE_AUGEAS int r; NEED_AUG (-1); @@ -197,11 +217,16 @@ do_aug_insert (const char *path, const char *label, int before) } return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int do_aug_rm (const char *path) { +#ifdef HAVE_AUGEAS int r; NEED_AUG (-1); @@ -213,11 +238,16 @@ do_aug_rm (const char *path) } return r; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int do_aug_mv (const char *src, const char *dest) { +#ifdef HAVE_AUGEAS int r; NEED_AUG (-1); @@ -229,11 +259,16 @@ do_aug_mv (const char *src, const char *dest) } return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } char ** do_aug_match (const char *path) { +#ifdef HAVE_AUGEAS char **matches = NULL; void *vp; int r; @@ -259,11 +294,16 @@ do_aug_match (const char *path) matches[r] = NULL; return matches; /* Caller frees. */ +#else + reply_with_error ("%s is not available", __func__); + return NULL; +#endif } int do_aug_save (void) { +#ifdef HAVE_AUGEAS NEED_AUG (-1); if (aug_save (aug) == -1) { @@ -272,6 +312,10 @@ do_aug_save (void) } return 0; +#else + reply_with_error ("%s is not available", __func__); + return -1; +#endif } int @@ -287,7 +331,7 @@ do_aug_load (void) return 0; #else - reply_with_error ("aug_load is not available"); + reply_with_error ("%s is not available", __func__); return -1; #endif } @@ -296,13 +340,14 @@ do_aug_load (void) char ** do_aug_ls (const char *path) { +#ifdef HAVE_AUGEAS char **matches; char *buf; int len; NEED_AUG (NULL); - ABS_PATH (path, NULL); + ABS_PATH (path, return NULL); len = strlen (path); @@ -331,6 +376,10 @@ do_aug_ls (const char *path) if (matches == NULL) return NULL; /* do_aug_match has already sent the error */ - sort_strings (matches, count_strings (matches)); + sort_strings (matches, count_strings ((void *) matches)); return matches; /* Caller frees. */ +#else + reply_with_error ("%s is not available", __func__); + return NULL; +#endif }