X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fdaemon.h;h=c2bbf3ed380c0d41c873ef3339f3128d8f4bc9b5;hb=9e8e99c921bccb9ac3b3965a7d689ff443799426;hp=115db093390fc6a27ff03ee6c36b36cc77956646;hpb=3ab8336db394683dad5f485388461e9146ac04ad;p=libguestfs.git diff --git a/daemon/daemon.h b/daemon/daemon.h index 115db09..c2bbf3e 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -29,6 +29,13 @@ #include "../src/guestfs_protocol.h" /*-- in guestfsd.c --*/ +extern int verbose; + +extern const char *sysroot; +extern int sysroot_len; + +extern char *sysroot_path (const char *path); + extern int xwrite (int sock, const void *buf, size_t len); extern int xread (int sock, void *buf, size_t len); @@ -51,7 +58,10 @@ extern int shell_quote (char *out, int len, const char *in); extern int device_name_translation (char *device, const char *func); -extern int verbose; +extern void udev_settle (void); + +/*-- in names.c (auto-generated) --*/ +extern const char *function_names[]; /*-- in proto.c --*/ extern int proc_nr; @@ -62,9 +72,9 @@ extern int root_mounted; /*-- in stubs.c (auto-generated) --*/ extern void dispatch_incoming_message (XDR *); -extern guestfs_lvm_int_pv_list *parse_command_line_pvs (void); -extern guestfs_lvm_int_vg_list *parse_command_line_vgs (void); -extern guestfs_lvm_int_lv_list *parse_command_line_lvs (void); +extern guestfs_int_lvm_pv_list *parse_command_line_pvs (void); +extern guestfs_int_lvm_vg_list *parse_command_line_vgs (void); +extern guestfs_int_lvm_lv_list *parse_command_line_lvs (void); /*-- in proto.c --*/ extern void main_loop (int sock); @@ -162,11 +172,22 @@ extern void reply (xdrproc_t xdrp, char *ret); * (2) You must not change directory! cwd must always be "/", otherwise * we can't escape our own chroot. * (3) All paths specified must be absolute. - * (4) CHROOT_OUT does not affect errno. + * (4) Neither macro affects errno. */ -#define CHROOT_IN chroot ("/sysroot"); -#define CHROOT_OUT \ - do { int old_errno = errno; chroot ("."); errno = old_errno; } while (0) +#define CHROOT_IN \ + do { \ + int __old_errno = errno; \ + if (chroot (sysroot) == -1) \ + perror ("CHROOT_IN: sysroot"); \ + errno = __old_errno; \ + } while (0) +#define CHROOT_OUT \ + do { \ + int __old_errno = errno; \ + if (chroot (".") == -1) \ + perror ("CHROOT_OUT: ."); \ + errno = __old_errno; \ + } while (0) /* Marks functions which are not implemented. * NB. Cannot be used for FileIn functions.