summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* perl: use newSVpvn for variable length strings.Richard Jones2010-03-251-3/+3
| | | | | | | Previously we used newSVpv (str, len), but if len == 0 then this means Perl tries to calculate the string length using strlen(3). This is not desirable when we know the length, in which case we should use newSVpvn instead.
* New API: guestfs_copy_size to copy a fixed number of bytes.Richard Jones2010-03-232-2/+15
| | | | | | | This is similar to 'guestfs_dd', but it copies just a fixed number of bytes from the source to the destination. It's an error if the source is too short or if the destination is too small.
* Change some _exit(0|1) to _exit(EXIT_SUCCESS|EXIT_FAILURE).Richard W.M. Jones2010-03-231-4/+4
|
* guestfs.h: Include <stdint.h>.Richard Jones2010-03-221-0/+1
| | | | | | | | This allows programs to work if they just #include <guestfs.h> and no other headers. It's not useful in the general case, but fixes some configure-time tests, particularly the one for Ruby on OS X.
* Mac OS X: Disable null vmchannel implementation.Richard Jones2010-03-221-1/+14
| | | | | | | | | As far as I can tell, Darwin has no way to check the peer euid of a _loopback_ TCP socket. This is required for the "null vmchannel" implementation to work securely. Therefore disable this - Darwin will use one of the other supported vmchannel implementations instead.
* Mac OS X: 'xdr_uint32_t' is 'xdr_u_int32_t'Richard Jones2010-03-221-0/+4
|
* Mac OS X: implement readline functions.Richard Jones2010-03-221-3/+12
| | | | | OS X has an older version of readline with some differences in the names of functions.
* Mac OS X: include <rpc/types.h> before <rpc/xdr.h>Richard Jones2010-03-221-0/+1
| | | | | | In PortableXDR this is not included automatically so we have to include it explicitly to get definitions for the XDR types.
* Mac OS X: include <string.h> in guestfs-actions.cRichard Jones2010-03-221-0/+1
| | | | This is required because guestfs-actions.c uses 'memset'.
* Mac OS X: Fix HAVE_GNU_CALLOC so it works when __GLIBC__ is not defined.Richard Jones2010-03-221-0/+4
|
* Mac OS X: strerror_r on Macs is not like GNU strerror_r.Richard Jones2010-03-221-1/+1
| | | | | Really this should be turned into a configure-time test. Perhaps one exists already?
* Mac OS X: define MAX macro if not already defined.Richard Jones2010-03-221-0/+4
|
* Mac OS X: kill(2) requires <signal.h>Richard Jones2010-03-221-0/+1
|
* generator: Small fix for GODI users.Richard Jones2010-03-221-0/+1
| | | | | GODI has an odd package layout, so the generator was unable to find xml-light. Add the GODI directory to the search path.
* Run qemu with -nographic option.Richard Jones2010-03-221-2/+3
| | | | | On Mac OS X this prevents a short "flash" as qemu opens a toplevel window.
* New APIs: Query the relationship between LVM objects.Richard Jones2010-03-182-1/+43
| | | | | | | | | These calls allow you to query the relationship between LVM objects, for example, which PVs contain a VG, or which LVs are contained in a VG. See the example / test program 'regressions/test-lvm-mapping.pl' for an example of how to do this from Perl.
* add_drive_ro adds readonly=on option if available.Richard Jones2010-03-162-5/+21
| | | | | | | | | | | | | | Change the add_drive_ro call so it adds the readonly=on option if qemu supports that. This just means that qemu will not try to open the drive with O_RDWR, and should not otherwise change the behaviour of qemu or libguestfs. (In particular, writes to the read-only drive are still permitted, and are just discarded when the handle is closed). However it should alleviate RHBZ#571714 where udev was deciding to incorrectly relabel a device because we had opened the device for writing (even though we didn't actually write to it).
* Allow qemu_supports to run earlier.Richard Jones2010-03-162-10/+27
| | | | | | | Reimplement qemu_supports() internal function. Allow it to run before launch so we can test qemu features. Document that you should run guestfs_set_qemu as early as possible to make sure these tests are reliable.
* guestfs.h: More adjustment to comments in the header file.Richard Jones2010-03-161-10/+14
|
* guestfs.h: Move some internal functions to the internal header.Richard Jones2010-03-162-15/+16
| | | | | | Functions like guestfs__send were never exported through the public API (libguestfs.syms prevented that). However they appeared in the public header. Move them to the internal header.
* Rearrangement and comment changes in <guestfs.h> header file.Richard Jones2010-03-161-10/+18
| | | | There should be no substantive change.
* Tab to space (whitespace fixes only).Richard Jones2010-03-121-82/+82
|
* Docs: Change exit(1) -> exit(EXIT_FAILURE)Richard Jones2010-03-121-1/+1
|
* Rewrite libguestfs-supermin-helper in C.Richard Jones2010-03-122-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libguestfs-supermin-helper was previously a shell script. Although we had steadily optimized it, there were a number of intractable hot spots: (1) cpio still reads input files in 512 byte chunks; this is *very* pessimal behaviour, particularly when SELinux is enabled. (2) the hostfiles globbing was done very inefficiently by the shell, with the shell rereading the same directory over and over again. This is a rewrite of this shell script in C. It is approximately 3 times faster without SELinux, and has an even greater speed difference with SELinux. The main features are: (a) It never frees memory, making it simpler. The program is designed to run and exit in sub-second times, so this is acceptable. (b) It caches directory reads, making the globbing of host files much faster (measured this as ~ 4 x speed up). (c) It doesn't use external cpio, but instead contains code to write newc format cpio files, which is all that the kernel can read. Unlike cpio, this code uses large buffers for reads and writes. (d) Ignores missing or unreadable hostfiles, whereas cpio gave a warning. (e) Checks all return values from system calls. (f) With --verbose flag, it will print messages timing itself. This passes all tests. Updated with feedback from Jim Meyering.
* guestfish: Use xstrtoll to parse Int params (RHBZ#569757 RHBZ#567567).Richard Jones2010-03-121-1/+1
| | | | | | Change guestfish so it uses xstrtoll to parse Int (31 bit) parameters. This fixes two bugs on 32 bit platforms which failed when long = 32 bits. long long = 64 bits on both.
* Spin off hivex as a separate upstream project.Richard Jones2010-02-221-4/+4
| | | | | | | | | | | | | | This commit makes the semi-independent hivex library into a separate upstream project. The git repo for hivex is now: http://git.annexia.org/?p=hivex.git;a=summary Downloads of hivex are available here: http://libguestfs.org/download/ All questions, patches, bugs etc should be sent to the libguestfs mailing list and bug tracker.
* Turn ProtocolLimitWarning into link to documentation section.Richard Jones2010-02-152-2/+24
|
* initrd-cat: Needs ProtocolLimitWarning.Richard Jones2010-02-151-1/+1
|
* Remove references to FTP, replace with FUSE.Richard Jones2010-02-152-7/+9
| | | | | | | We originally intended to implement an FTP server (and before than, an NFS server). But we didn't implement either. We did however implement a FUSE service (guestmount) which takes the place of both.
* Remove some unused variables.Richard Jones2010-02-151-2/+1
| | | | | | Since we have to compile with -Wno-unused-variables, we don't spot unused variables in code. I found these by compiling the code in Ubuntu.
* daemon: Don't need to prefix error messages with the command name.Richard Jones2010-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | The RPC stubs already prefix the command name to error messages. The daemon doesn't have to do this. As a (small) benefit this also makes the daemon slightly smaller. Code in the daemon such as: if (argv[0] == NULL) { reply_with_error ("passed an empty list"); return NULL; } now results in error messages like this: ><fs> command "" libguestfs: error: command: passed an empty list (whereas previously you would have seen ..command: command:..)
* generator: Don't prefix error messages with command name.Richard Jones2010-02-121-11/+10
| | | | | | | The command name is already being added by the RPC stubs, so adding it again in Perl and C# just results in doubled error messages like: foo: foo: the error
* New APIs: add-drive{,-ro}-with-if allows you to set QEMU block emulation.Richard Jones2010-02-122-5/+44
| | | | | | | | | | | The default if=... comes from configure time (currently it defaults to if=virtio). This change allows you to set the QEMU block emulation. We don't think this will be used very often, but virt-v2v requires it in order to work around a subtle problem with running 'mkinitrd' in an appliance attached to a guest.
* generator: 'interface' is a reserved word in Java.Richard Jones2010-02-121-0/+1
|
* add_cdrom: Update docs for adding ISO images.Richard Jones2010-02-121-2/+16
| | | | See also RHBZ#563450 (NB: This commit does not fix the bug).
* Use mount-options instead of mount to avoid implicit -o sync.Richard Jones2010-02-102-17/+26
| | | | | | | | | | | | | | | guestfs_mount adds -o sync implicitly. This causes a very large performance problem for write-intensive programs (eg. virt-v2v). Document this as a "gotcha". Change the tests, guestfish, Sys::Guestfs::Lib, guestmount to use mount-options instead. (Note that this gotcha does not affect mount-ro). The source of the performance problem was first identified by Matthew Booth.
* Add -enable-kvm option to qemu command line.Richard Jones2010-02-091-0/+31
| | | | | | | | If the version of qemu being used supports -enable-kvm option, then check if /dev/kvm is openable and add this option. I have found this option makes no difference, although it is *supposed* to enable KVM (hardware virtualization) support.
* New API call: initrd-cat to list a file from an initrd.Richard Jones2010-02-092-1/+18
|
* Documentation: Added a section on libguestfs gotchas.Richard Jones2010-02-081-0/+55
|
* Implement 'vgrename' and 'lvrename' APIs.Richard Jones2010-01-282-1/+21
|
* supermin: Prevent multilib corruption (RHBZ#558593).Richard Jones2010-01-271-2/+4
| | | | | | | | | | | | | | | | | | | On some combination of installing, upgrading and removing the base libguestfs package on x86_64, multilib can corrupt libguestfs by leaving a copy of /usr/bin/libguestfs-supermin-helper around which references the wrong architecture (usually, contains links to the i386-based appliance, when the x86_64 appliance should be constructed). This commit changes libguestfs-supermin-helper so that the script is the same on all architectures. Instead, the library passes the differences to the script (eg. $host_cpu). Because the i386 and x86_64 libraries should be at different locations (/usr/lib vs /usr/lib64) this should prevent multilib from screwing things up. Related links: https://bugzilla.redhat.com/show_bug.cgi?id=558593 http://rwmj.wordpress.com/2009/11/16/please-someone-shoot-multilib/#content https://bugzilla.redhat.com/show_bug.cgi?id=235752
* guestfish: Use xstrtol to parse integers (RHBZ#557655).Richard Jones2010-01-251-4/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code uses atoi to parse the generator Int type and atoll to parse the generator Int64 type. The problem with the ato* functions is that they don't cope with errors very well, and they cannot parse numbers that begin with 0.. or 0x.. for octal and hexadecimal respectively. This replaces the atoi call with a call to Gnulib xstrtol and the atoll call with a call to Gnulib xstrtoll. The generated code looks like this for all Int arguments: { strtol_error xerr; long r; xerr = xstrtol (argv[0], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "memsize", "xstrtol", xerr); return -1; } /* The Int type in the generator is a signed 31 bit int. */ if (r < (-(2LL<<30)) || r > ((2LL<<30)-1)) { fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize"); return -1; } /* The check above should ensure this assignment does not overflow. */ memsize = r; } and like this for all Int64 arguments (note we don't need the range check for these): { strtol_error xerr; long long r; xerr = xstrtoll (argv[1], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "size", "xstrtoll", xerr); return -1; } size = r; } Note this also fixes an unrelated bug in guestfish handling of RBufferOut. We were using 'fwrite' without checking the return value, and this could have caused silent failures, eg. in the case where there was not enough disk space to store the resulting file, or even if the program was interrupted (but continued) during the write. Replace this with Gnulib 'full-write', and check the return value and report errors.
* Add 'filesize' call.Richard Jones2010-01-252-1/+13
| | | | | Returns the size of a file. You can already do this with 'stat', but this call is good for scripting.
* Add guestfs.pod and guestfish.pod to EXTRA_DIST.1.0.81Richard Jones2010-01-131-1/+2
|
* qemu: Upstream regression of -stdio serial option.Richard Jones2010-01-071-4/+17
| | | | | | | | | | | | | Best explained by the comment in the code: /* Newer versions of qemu (from around 2009/12) changed the * behaviour of monitors so that an implicit '-monitor stdio' is * assumed if we are in -nographic mode and there is no other * -monitor option. Only a single stdio device is allowed, so * this broke the '-serial stdio' option. There is a new flag * called -nodefaults which gets rid of all this default crud, so * let's use that to avoid this and any future surprises. */
* Use linker script to control visibility of symbols.Richard Jones2010-01-042-3/+53
|
* generator: Move all library generation code together.Richard Jones2010-01-041-1/+1
|
* generator: Print total lines of generated code.Richard Jones2010-01-041-2/+18
|
* C#: Add documentation about experimental nature of these bindings.Richard Jones2010-01-042-5/+39
|
* Experimental C# bindings.Richard Jones2010-01-022-5/+218
| | | | Tested in only limited situations, with Mono on Linux.