X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Fguestfs-internal.h;h=a1dd36f16aea939352a42bf629a00f58f83cd3e3;hp=f2abeba1d592687f43aaa4f3375587d82d2b9693;hb=79b202ca26226e0a95e3f04ac7ff91e9eb918b48;hpb=5c31f6126ba4ea3e9056c34c300f6f5e332ab997 diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h index f2abeba..a1dd36f 100644 --- a/src/guestfs-internal.h +++ b/src/guestfs-internal.h @@ -19,6 +19,13 @@ #ifndef GUESTFS_INTERNAL_H_ #define GUESTFS_INTERNAL_H_ +#include +#include + +#ifdef HAVE_PCRE +#include +#endif + #define STREQ(a,b) (strcmp((a),(b)) == 0) #define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0) #define STRNEQ(a,b) (strcmp((a),(b)) != 0) @@ -38,11 +45,10 @@ #define N_(str) str #endif -#ifdef __linux__ -#define CAN_CHECK_PEER_EUID 1 -#else -#define CAN_CHECK_PEER_EUID 0 -#endif +#define TMP_TEMPLATE_ON_STACK(var) \ + const char *ttos_tmpdir = guestfs_tmpdir (); \ + char var[strlen (ttos_tmpdir) + 32]; \ + sprintf (var, "%s/libguestfsXXXXXX", ttos_tmpdir) \ #define UNIX_PATH_MAX 108 @@ -74,8 +80,6 @@ */ #define NETWORK "169.254.0.0/16" #define ROUTER "169.254.2.2" -#define GUESTFWD_ADDR "169.254.2.4" -#define GUESTFWD_PORT "6666" /* GuestFS handle and connection. */ enum state { CONFIG, LAUNCHING, READY, BUSY, NO_HANDLE }; @@ -106,6 +110,7 @@ struct guestfs_h int autosync; int direct; int recovery_proc; + int enable_network; char *path; /* Path to kernel, initrd. */ char *qemu; /* Qemu binary. */ @@ -116,6 +121,7 @@ struct guestfs_h int selinux; /* selinux enabled? */ char *last_error; + int last_errnum; /* errno, or 0 if there was no errno */ /* Callbacks. */ guestfs_abort_cb abort_cb; @@ -129,6 +135,8 @@ struct guestfs_h void * launch_done_cb_data; guestfs_close_cb close_cb; void * close_cb_data; + guestfs_progress_cb progress_cb; + void * progress_cb_data; int msg_next_serial; @@ -137,6 +145,9 @@ struct guestfs_h */ struct inspect_fs *fses; size_t nr_fses; + + /* Private data area. */ + struct hash_table *pda; }; /* Per-filesystem data stored for inspect_os. */ @@ -148,12 +159,14 @@ enum inspect_fs_content { FS_CONTENT_LINUX_USR, FS_CONTENT_LINUX_USR_LOCAL, FS_CONTENT_LINUX_VAR, + FS_CONTENT_FREEBSD_ROOT, }; enum inspect_os_type { OS_TYPE_UNKNOWN = 0, OS_TYPE_LINUX, OS_TYPE_WINDOWS, + OS_TYPE_FREEBSD, }; enum inspect_os_distro { @@ -163,6 +176,30 @@ enum inspect_os_distro { OS_DISTRO_REDHAT_BASED, OS_DISTRO_RHEL, OS_DISTRO_WINDOWS, + OS_DISTRO_PARDUS, + OS_DISTRO_ARCHLINUX, + OS_DISTRO_GENTOO, + OS_DISTRO_UBUNTU, + OS_DISTRO_MEEGO, +}; + +enum inspect_os_package_format { + OS_PACKAGE_FORMAT_UNKNOWN = 0, + OS_PACKAGE_FORMAT_RPM, + OS_PACKAGE_FORMAT_DEB, + OS_PACKAGE_FORMAT_PACMAN, + OS_PACKAGE_FORMAT_EBUILD, + OS_PACKAGE_FORMAT_PISI +}; + +enum inspect_os_package_management { + OS_PACKAGE_MANAGEMENT_UNKNOWN = 0, + OS_PACKAGE_MANAGEMENT_YUM, + OS_PACKAGE_MANAGEMENT_UP2DATE, + OS_PACKAGE_MANAGEMENT_APT, + OS_PACKAGE_MANAGEMENT_PACMAN, + OS_PACKAGE_MANAGEMENT_PORTAGE, + OS_PACKAGE_MANAGEMENT_PISI, }; struct inspect_fs { @@ -173,10 +210,13 @@ struct inspect_fs { enum inspect_fs_content content; enum inspect_os_type type; enum inspect_os_distro distro; + enum inspect_os_package_format package_format; + enum inspect_os_package_management package_management; char *product_name; int major_version; int minor_version; char *arch; + char *windows_systemroot; struct inspect_fstab_entry *fstab; size_t nr_fstab; }; @@ -191,14 +231,18 @@ struct guestfs_message_error; extern void guestfs_error (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); +extern void guestfs_error_errno (guestfs_h *g, int errnum, const char *fs, ...) + __attribute__((format (printf,3,4))); extern void guestfs_perrorf (guestfs_h *g, const char *fs, ...) __attribute__((format (printf,2,3))); extern void *guestfs_safe_realloc (guestfs_h *g, void *ptr, int nbytes); extern char *guestfs_safe_strdup (guestfs_h *g, const char *str); extern char *guestfs_safe_strndup (guestfs_h *g, const char *str, size_t n); extern void *guestfs_safe_memdup (guestfs_h *g, void *ptr, size_t size); +extern char *guestfs_safe_asprintf (guestfs_h *g, const char *fs, ...) + __attribute__((format (printf,2,3))); +extern void guestfs___print_timestamped_argv (guestfs_h *g, const char *argv[]); extern void guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...); -extern const char *guestfs___tmpdir (void); extern void guestfs___free_inspect_info (guestfs_h *g); extern int guestfs___set_busy (guestfs_h *g); extern int guestfs___end_busy (guestfs_h *g); @@ -210,13 +254,32 @@ extern int guestfs___send_to_daemon (guestfs_h *g, const void *v_buf, size_t n); extern int guestfs___recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn); extern int guestfs___accept_from_daemon (guestfs_h *g); extern int guestfs___build_appliance (guestfs_h *g, char **kernel, char **initrd, char **appliance); +extern void guestfs___print_BufferIn (FILE *out, const char *buf, size_t buf_size); +#ifdef HAVE_PCRE +extern int guestfs___match (guestfs_h *g, const char *str, const pcre *re); +extern char *guestfs___match1 (guestfs_h *g, const char *str, const pcre *re); +extern int guestfs___match2 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2); +extern int guestfs___match3 (guestfs_h *g, const char *str, const pcre *re, char **ret1, char **ret2, char **ret3); +#endif +extern int guestfs___feature_available (guestfs_h *g, const char *feature); +extern void guestfs___free_string_list (char **); +extern int guestfs___checkpoint_cmdline (guestfs_h *g); +extern void guestfs___rollback_cmdline (guestfs_h *g, int pos); -#define error guestfs_error +#define error(g,...) guestfs_error_errno((g),0,__VA_ARGS__) #define perrorf guestfs_perrorf +#define safe_calloc guestfs_safe_calloc #define safe_malloc guestfs_safe_malloc #define safe_realloc guestfs_safe_realloc #define safe_strdup guestfs_safe_strdup #define safe_strndup guestfs_safe_strndup #define safe_memdup guestfs_safe_memdup +#define safe_asprintf guestfs_safe_asprintf +#ifdef HAVE_PCRE +#define match guestfs___match +#define match1 guestfs___match1 +#define match2 guestfs___match2 +#define match3 guestfs___match3 +#endif #endif /* GUESTFS_INTERNAL_H_ */