git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Started BUGS list.
[libguestfs.git]
/
src
/
guestfs.c
diff --git
a/src/guestfs.c
b/src/guestfs.c
index
7f0f821
..
e104633
100644
(file)
--- a/
src/guestfs.c
+++ b/
src/guestfs.c
@@
-121,6
+121,8
@@
struct guestfs_h
const char *path;
const char *path;
+ char *last_error;
+
/* Callbacks. */
guestfs_abort_cb abort_cb;
guestfs_error_handler_cb error_cb;
/* Callbacks. */
guestfs_abort_cb abort_cb;
guestfs_error_handler_cb error_cb;
@@
-264,6
+266,7
@@
guestfs_close (guestfs_h *g)
}
/* release mutex (XXX) */
}
/* release mutex (XXX) */
+ free (g->last_error);
free (g);
}
free (g);
}
@@
-274,6
+277,19
@@
close_handles (void)
while (handles) guestfs_close (handles);
}
while (handles) guestfs_close (handles);
}
+const char *
+guestfs_last_error (guestfs_h *g)
+{
+ return g->last_error;
+}
+
+static void
+set_last_error (guestfs_h *g, const char *msg)
+{
+ free (g->last_error);
+ g->last_error = strdup (msg);
+}
+
static void
default_error_cb (guestfs_h *g, void *data, const char *msg)
{
static void
default_error_cb (guestfs_h *g, void *data, const char *msg)
{
@@
-286,13
+302,12
@@
error (guestfs_h *g, const char *fs, ...)
va_list args;
char *msg;
va_list args;
char *msg;
- if (!g->error_cb) return;
-
va_start (args, fs);
vasprintf (&msg, fs, args);
va_end (args);
va_start (args, fs);
vasprintf (&msg, fs, args);
va_end (args);
- g->error_cb (g, g->error_cb_data, msg);
+ if (g->error_cb) g->error_cb (g, g->error_cb_data, msg);
+ set_last_error (g, msg);
free (msg);
}
free (msg);
}
@@
-304,8
+319,6
@@
perrorf (guestfs_h *g, const char *fs, ...)
char *msg;
int err = errno;
char *msg;
int err = errno;
- if (!g->error_cb) return;
-
va_start (args, fs);
vasprintf (&msg, fs, args);
va_end (args);
va_start (args, fs);
vasprintf (&msg, fs, args);
va_end (args);
@@
-323,7
+336,8
@@
perrorf (guestfs_h *g, const char *fs, ...)
strcat (msg, ": ");
strcat (msg, buf);
strcat (msg, ": ");
strcat (msg, buf);
- g->error_cb (g, g->error_cb_data, msg);
+ if (g->error_cb) g->error_cb (g, g->error_cb_data, msg);
+ set_last_error (g, msg);
free (msg);
}
free (msg);
}
@@
-1271,6
+1285,12
@@
check_reply_header (guestfs_h *g,
* generator.ml.
*/
void
* generator.ml.
*/
void
+guestfs_free_int_bool (struct guestfs_int_bool *x)
+{
+ free (x);
+}
+
+void
guestfs_free_lvm_pv_list (struct guestfs_lvm_pv_list *x)
{
xdr_free ((xdrproc_t) xdr_guestfs_lvm_int_pv_list, (char *) x);
guestfs_free_lvm_pv_list (struct guestfs_lvm_pv_list *x)
{
xdr_free ((xdrproc_t) xdr_guestfs_lvm_int_pv_list, (char *) x);