X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=haskell%2FGuestfs.hs;h=94152d2531010c4da760274c84fd34d146e7b70d;hp=aedf3b5369280e4738cd12feb09bc3f182c98327;hb=ef2b0cf761b6281a6a728aacb6ac0ec91fad33c8;hpb=d43dac69483e8ec62e8356d93f761684ce2f5cc8;ds=sidebyside diff --git a/haskell/Guestfs.hs b/haskell/Guestfs.hs index aedf3b5..94152d2 100644 --- a/haskell/Guestfs.hs +++ b/haskell/Guestfs.hs @@ -24,22 +24,36 @@ module Guestfs ( create, + test0, + test0rint, + test0rinterr, + test0rint64, + test0rint64err, launch, wait_ready, kill_subprocess, add_drive, add_cdrom, + add_drive_ro, config, set_qemu, set_path, + set_append, + set_autosync, + set_verbose, + get_state, set_busy, set_ready, end_busy, mount, sync, touch, + aug_init, aug_close, + aug_defvar, aug_set, + aug_insert, + aug_rm, aug_mv, aug_save, aug_load, @@ -48,14 +62,24 @@ module Guestfs ( rm_rf, mkdir, mkdir_p, + chmod, + chown, pvcreate, vgcreate, + lvcreate, mkfs, + sfdisk, + write_file, umount, umount_all, lvm_remove_all, blockdev_setro, blockdev_setrw, + blockdev_getss, + blockdev_getbsz, + blockdev_setbsz, + blockdev_getsz, + blockdev_getsize64, blockdev_flushbufs, blockdev_rereadpt, upload, @@ -72,15 +96,31 @@ module Guestfs ( pvremove, set_e2label, set_e2uuid, + fsck, zero, grub_install, cp, cp_a, mv, - ping_daemon + drop_caches, + ping_daemon, + zerofree, + pvresize, + sfdisk_N, + vg_activate_all, + vg_activate, + lvresize, + resize2fs, + e2fsck_f, + sleep, + ntfs_3g_probe, + scrub_device, + scrub_file, + scrub_freespace ) where import Foreign import Foreign.C +import Foreign.C.Types import IO import Control.Exception import Data.Typeable @@ -127,6 +167,66 @@ last_error h = do then return "no error" else peekCString str +foreign import ccall unsafe "guestfs_test0" c_test0 + :: GuestfsP -> CString -> CString -> Ptr CString -> CInt -> CInt -> CString -> CString -> IO (CInt) + +test0 :: GuestfsH -> String -> Maybe String -> [String] -> Bool -> Int -> String -> String -> IO () +test0 h str optstr strlist b integer filein fileout = do + r <- withCString str $ \str -> maybeWith withCString optstr $ \optstr -> withMany withCString strlist $ \strlist -> withArray0 nullPtr strlist $ \strlist -> withCString filein $ \filein -> withCString fileout $ \fileout -> withForeignPtr h (\p -> c_test0 p str optstr strlist (fromBool b) (fromIntegral integer) filein fileout) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_test0rint" c_test0rint + :: GuestfsP -> CString -> IO (CInt) + +test0rint :: GuestfsH -> String -> IO (Int) +test0rint h val = do + r <- withCString val $ \val -> withForeignPtr h (\p -> c_test0rint p val) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_test0rinterr" c_test0rinterr + :: GuestfsP -> IO (CInt) + +test0rinterr :: GuestfsH -> IO (Int) +test0rinterr h = do + r <- withForeignPtr h (\p -> c_test0rinterr p) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_test0rint64" c_test0rint64 + :: GuestfsP -> CString -> IO (Int64) + +test0rint64 :: GuestfsH -> String -> IO (Integer) +test0rint64 h val = do + r <- withCString val $ \val -> withForeignPtr h (\p -> c_test0rint64 p val) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_test0rint64err" c_test0rint64err + :: GuestfsP -> IO (Int64) + +test0rint64err :: GuestfsH -> IO (Integer) +test0rint64err h = do + r <- withForeignPtr h (\p -> c_test0rint64err p) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_launch" c_launch :: GuestfsP -> IO (CInt) @@ -187,6 +287,18 @@ add_cdrom h filename = do fail err else return () +foreign import ccall unsafe "guestfs_add_drive_ro" c_add_drive_ro + :: GuestfsP -> CString -> IO (CInt) + +add_drive_ro :: GuestfsH -> String -> IO () +add_drive_ro h filename = do + r <- withCString filename $ \filename -> withForeignPtr h (\p -> c_add_drive_ro p filename) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_config" c_config :: GuestfsP -> CString -> CString -> IO (CInt) @@ -223,6 +335,54 @@ set_path h path = do fail err else return () +foreign import ccall unsafe "guestfs_set_append" c_set_append + :: GuestfsP -> CString -> IO (CInt) + +set_append :: GuestfsH -> String -> IO () +set_append h append = do + r <- withCString append $ \append -> withForeignPtr h (\p -> c_set_append p append) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_set_autosync" c_set_autosync + :: GuestfsP -> CInt -> IO (CInt) + +set_autosync :: GuestfsH -> Bool -> IO () +set_autosync h autosync = do + r <- withForeignPtr h (\p -> c_set_autosync p (fromBool autosync)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_set_verbose" c_set_verbose + :: GuestfsP -> CInt -> IO (CInt) + +set_verbose :: GuestfsH -> Bool -> IO () +set_verbose h verbose = do + r <- withForeignPtr h (\p -> c_set_verbose p (fromBool verbose)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_get_state" c_get_state + :: GuestfsP -> IO (CInt) + +get_state :: GuestfsH -> IO (Int) +get_state h = do + r <- withForeignPtr h (\p -> c_get_state p) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_set_busy" c_set_busy :: GuestfsP -> IO (CInt) @@ -295,6 +455,18 @@ touch h path = do fail err else return () +foreign import ccall unsafe "guestfs_aug_init" c_aug_init + :: GuestfsP -> CString -> CInt -> IO (CInt) + +aug_init :: GuestfsH -> String -> Int -> IO () +aug_init h root flags = do + r <- withCString root $ \root -> withForeignPtr h (\p -> c_aug_init p root (fromIntegral flags)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_aug_close" c_aug_close :: GuestfsP -> IO (CInt) @@ -307,6 +479,18 @@ aug_close h = do fail err else return () +foreign import ccall unsafe "guestfs_aug_defvar" c_aug_defvar + :: GuestfsP -> CString -> CString -> IO (CInt) + +aug_defvar :: GuestfsH -> String -> Maybe String -> IO (Int) +aug_defvar h name expr = do + r <- withCString name $ \name -> maybeWith withCString expr $ \expr -> withForeignPtr h (\p -> c_aug_defvar p name expr) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_aug_set" c_aug_set :: GuestfsP -> CString -> CString -> IO (CInt) @@ -319,6 +503,30 @@ aug_set h path val = do fail err else return () +foreign import ccall unsafe "guestfs_aug_insert" c_aug_insert + :: GuestfsP -> CString -> CString -> CInt -> IO (CInt) + +aug_insert :: GuestfsH -> String -> String -> Bool -> IO () +aug_insert h path label before = do + r <- withCString path $ \path -> withCString label $ \label -> withForeignPtr h (\p -> c_aug_insert p path label (fromBool before)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_aug_rm" c_aug_rm + :: GuestfsP -> CString -> IO (CInt) + +aug_rm :: GuestfsH -> String -> IO (Int) +aug_rm h path = do + r <- withCString path $ \path -> withForeignPtr h (\p -> c_aug_rm p path) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_aug_mv" c_aug_mv :: GuestfsP -> CString -> CString -> IO (CInt) @@ -415,6 +623,30 @@ mkdir_p h path = do fail err else return () +foreign import ccall unsafe "guestfs_chmod" c_chmod + :: GuestfsP -> CInt -> CString -> IO (CInt) + +chmod :: GuestfsH -> Int -> String -> IO () +chmod h mode path = do + r <- withCString path $ \path -> withForeignPtr h (\p -> c_chmod p (fromIntegral mode) path) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_chown" c_chown + :: GuestfsP -> CInt -> CInt -> CString -> IO (CInt) + +chown :: GuestfsH -> Int -> Int -> String -> IO () +chown h owner group path = do + r <- withCString path $ \path -> withForeignPtr h (\p -> c_chown p (fromIntegral owner) (fromIntegral group) path) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_pvcreate" c_pvcreate :: GuestfsP -> CString -> IO (CInt) @@ -439,6 +671,18 @@ vgcreate h volgroup physvols = do fail err else return () +foreign import ccall unsafe "guestfs_lvcreate" c_lvcreate + :: GuestfsP -> CString -> CString -> CInt -> IO (CInt) + +lvcreate :: GuestfsH -> String -> String -> Int -> IO () +lvcreate h logvol volgroup mbytes = do + r <- withCString logvol $ \logvol -> withCString volgroup $ \volgroup -> withForeignPtr h (\p -> c_lvcreate p logvol volgroup (fromIntegral mbytes)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_mkfs" c_mkfs :: GuestfsP -> CString -> CString -> IO (CInt) @@ -451,6 +695,30 @@ mkfs h fstype device = do fail err else return () +foreign import ccall unsafe "guestfs_sfdisk" c_sfdisk + :: GuestfsP -> CString -> CInt -> CInt -> CInt -> Ptr CString -> IO (CInt) + +sfdisk :: GuestfsH -> String -> Int -> Int -> Int -> [String] -> IO () +sfdisk h device cyls heads sectors lines = do + r <- withCString device $ \device -> withMany withCString lines $ \lines -> withArray0 nullPtr lines $ \lines -> withForeignPtr h (\p -> c_sfdisk p device (fromIntegral cyls) (fromIntegral heads) (fromIntegral sectors) lines) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_write_file" c_write_file + :: GuestfsP -> CString -> CString -> CInt -> IO (CInt) + +write_file :: GuestfsH -> String -> String -> Int -> IO () +write_file h path content size = do + r <- withCString path $ \path -> withCString content $ \content -> withForeignPtr h (\p -> c_write_file p path content (fromIntegral size)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_umount" c_umount :: GuestfsP -> CString -> IO (CInt) @@ -511,6 +779,66 @@ blockdev_setrw h device = do fail err else return () +foreign import ccall unsafe "guestfs_blockdev_getss" c_blockdev_getss + :: GuestfsP -> CString -> IO (CInt) + +blockdev_getss :: GuestfsH -> String -> IO (Int) +blockdev_getss h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_blockdev_getss p device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_blockdev_getbsz" c_blockdev_getbsz + :: GuestfsP -> CString -> IO (CInt) + +blockdev_getbsz :: GuestfsH -> String -> IO (Int) +blockdev_getbsz h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_blockdev_getbsz p device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_blockdev_setbsz" c_blockdev_setbsz + :: GuestfsP -> CString -> CInt -> IO (CInt) + +blockdev_setbsz :: GuestfsH -> String -> Int -> IO () +blockdev_setbsz h device blocksize = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_blockdev_setbsz p device (fromIntegral blocksize)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_blockdev_getsz" c_blockdev_getsz + :: GuestfsP -> CString -> IO (Int64) + +blockdev_getsz :: GuestfsH -> String -> IO (Integer) +blockdev_getsz h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_blockdev_getsz p device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_blockdev_getsize64" c_blockdev_getsize64 + :: GuestfsP -> CString -> IO (Int64) + +blockdev_getsize64 :: GuestfsH -> String -> IO (Integer) +blockdev_getsize64 h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_blockdev_getsize64 p device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_blockdev_flushbufs" c_blockdev_flushbufs :: GuestfsP -> CString -> IO (CInt) @@ -703,6 +1031,18 @@ set_e2uuid h device uuid = do fail err else return () +foreign import ccall unsafe "guestfs_fsck" c_fsck + :: GuestfsP -> CString -> CString -> IO (CInt) + +fsck :: GuestfsH -> String -> String -> IO (Int) +fsck h fstype device = do + r <- withCString fstype $ \fstype -> withCString device $ \device -> withForeignPtr h (\p -> c_fsck p fstype device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + foreign import ccall unsafe "guestfs_zero" c_zero :: GuestfsP -> CString -> IO (CInt) @@ -763,6 +1103,18 @@ mv h src dest = do fail err else return () +foreign import ccall unsafe "guestfs_drop_caches" c_drop_caches + :: GuestfsP -> CInt -> IO (CInt) + +drop_caches :: GuestfsH -> Int -> IO () +drop_caches h whattodrop = do + r <- withForeignPtr h (\p -> c_drop_caches p (fromIntegral whattodrop)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + foreign import ccall unsafe "guestfs_ping_daemon" c_ping_daemon :: GuestfsP -> IO (CInt) @@ -775,3 +1127,159 @@ ping_daemon h = do fail err else return () +foreign import ccall unsafe "guestfs_zerofree" c_zerofree + :: GuestfsP -> CString -> IO (CInt) + +zerofree :: GuestfsH -> String -> IO () +zerofree h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_zerofree p device) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_pvresize" c_pvresize + :: GuestfsP -> CString -> IO (CInt) + +pvresize :: GuestfsH -> String -> IO () +pvresize h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_pvresize p device) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_sfdisk_N" c_sfdisk_N + :: GuestfsP -> CString -> CInt -> CInt -> CInt -> CInt -> CString -> IO (CInt) + +sfdisk_N :: GuestfsH -> String -> Int -> Int -> Int -> Int -> String -> IO () +sfdisk_N h device n cyls heads sectors line = do + r <- withCString device $ \device -> withCString line $ \line -> withForeignPtr h (\p -> c_sfdisk_N p device (fromIntegral n) (fromIntegral cyls) (fromIntegral heads) (fromIntegral sectors) line) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_vg_activate_all" c_vg_activate_all + :: GuestfsP -> CInt -> IO (CInt) + +vg_activate_all :: GuestfsH -> Bool -> IO () +vg_activate_all h activate = do + r <- withForeignPtr h (\p -> c_vg_activate_all p (fromBool activate)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_vg_activate" c_vg_activate + :: GuestfsP -> CInt -> Ptr CString -> IO (CInt) + +vg_activate :: GuestfsH -> Bool -> [String] -> IO () +vg_activate h activate volgroups = do + r <- withMany withCString volgroups $ \volgroups -> withArray0 nullPtr volgroups $ \volgroups -> withForeignPtr h (\p -> c_vg_activate p (fromBool activate) volgroups) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_lvresize" c_lvresize + :: GuestfsP -> CString -> CInt -> IO (CInt) + +lvresize :: GuestfsH -> String -> Int -> IO () +lvresize h device mbytes = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_lvresize p device (fromIntegral mbytes)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_resize2fs" c_resize2fs + :: GuestfsP -> CString -> IO (CInt) + +resize2fs :: GuestfsH -> String -> IO () +resize2fs h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_resize2fs p device) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_e2fsck_f" c_e2fsck_f + :: GuestfsP -> CString -> IO (CInt) + +e2fsck_f :: GuestfsH -> String -> IO () +e2fsck_f h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_e2fsck_f p device) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_sleep" c_sleep + :: GuestfsP -> CInt -> IO (CInt) + +sleep :: GuestfsH -> Int -> IO () +sleep h secs = do + r <- withForeignPtr h (\p -> c_sleep p (fromIntegral secs)) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_ntfs_3g_probe" c_ntfs_3g_probe + :: GuestfsP -> CInt -> CString -> IO (CInt) + +ntfs_3g_probe :: GuestfsH -> Bool -> String -> IO (Int) +ntfs_3g_probe h rw device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_ntfs_3g_probe p (fromBool rw) device) + if (r == -1) + then do + err <- last_error h + fail err + else return (fromIntegral r) + +foreign import ccall unsafe "guestfs_scrub_device" c_scrub_device + :: GuestfsP -> CString -> IO (CInt) + +scrub_device :: GuestfsH -> String -> IO () +scrub_device h device = do + r <- withCString device $ \device -> withForeignPtr h (\p -> c_scrub_device p device) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_scrub_file" c_scrub_file + :: GuestfsP -> CString -> IO (CInt) + +scrub_file :: GuestfsH -> String -> IO () +scrub_file h file = do + r <- withCString file $ \file -> withForeignPtr h (\p -> c_scrub_file p file) + if (r == -1) + then do + err <- last_error h + fail err + else return () + +foreign import ccall unsafe "guestfs_scrub_freespace" c_scrub_freespace + :: GuestfsP -> CString -> IO (CInt) + +scrub_freespace :: GuestfsH -> String -> IO () +scrub_freespace h dir = do + r <- withCString dir $ \dir -> withForeignPtr h (\p -> c_scrub_freespace p dir) + if (r == -1) + then do + err <- last_error h + fail err + else return () +