diff options
| author | Michael Brown | 2007-01-12 09:02:27 +0100 |
|---|---|---|
| committer | Michael Brown | 2007-01-12 09:02:27 +0100 |
| commit | 475d6d1f7c7f169a89ea363ad819b0dd2975ae10 (patch) | |
| tree | 000239996a57f863fb56326ed137bf85c3517934 /src/usr | |
| parent | Allow "imgexec" with no arguments to boot the file that was loaded with (diff) | |
| download | ipxe-475d6d1f7c7f169a89ea363ad819b0dd2975ae10.tar.gz ipxe-475d6d1f7c7f169a89ea363ad819b0dd2975ae10.tar.xz ipxe-475d6d1f7c7f169a89ea363ad819b0dd2975ae10.zip | |
fetch() now knows nothing about struct image; it simply loads a file and
returns the allocated buffer.
Diffstat (limited to 'src/usr')
| -rw-r--r-- | src/usr/fetch.c | 20 | ||||
| -rw-r--r-- | src/usr/imgmgmt.c | 2 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/usr/fetch.c b/src/usr/fetch.c index 001731845..fe5ae59fa 100644 --- a/src/usr/fetch.c +++ b/src/usr/fetch.c @@ -34,13 +34,18 @@ #include <gpxe/dhcp.h> /** - * Fetch file as executable/loadable image + * Fetch file * - * @v image Executable/loadable image - * @v filename Filename + * @v filename Filename to fetch + * @ret data Loaded file + * @ret len Length of loaded file * @ret rc Return status code + * + * Fetch file to an external buffer allocated with emalloc(). The + * caller is responsible for eventually freeing the buffer with + * efree(). */ -int fetch ( struct image *image, const char *filename ) { +int fetch ( const char *filename, userptr_t *data, size_t *len ) { struct buffer buffer; int rc; @@ -69,10 +74,9 @@ int fetch ( struct image *image, const char *filename ) { return rc; } - /* Transfer ownserhip of the data buffer to the image */ - image->data = buffer.addr; - image->len = buffer.fill; - image->free = efree; + /* Fill in buffer address and length */ + *data = buffer.addr; + *len = buffer.fill; return 0; } diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c index 2c949ae24..6a2599d53 100644 --- a/src/usr/imgmgmt.c +++ b/src/usr/imgmgmt.c @@ -54,7 +54,7 @@ int imgfetch ( const char *filename, const char *name, strncpy ( image->name, name, ( sizeof ( image->name ) - 1 ) ); /* Fetch the file */ - if ( ( rc = fetch ( image, filename ) ) != 0 ) + if ( ( rc = fetch ( filename, &image->data, &image->len ) ) != 0 ) goto err; /* Register the image */ |
