mirror of
https://github.com/ipxe/ipxe
synced 2025-12-20 03:55:46 +03:00
Set current working URI to be that of the executable image when
executing any image, not just a script. (This will enable pxelinux to use relative URIs, should it wish to.)
This commit is contained in:
@@ -237,6 +237,7 @@ int image_autoload ( struct image *image ) {
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
int image_exec ( struct image *image ) {
|
||||
struct uri *old_cwuri;
|
||||
int rc;
|
||||
|
||||
/* Image must be loaded first */
|
||||
@@ -252,15 +253,23 @@ int image_exec ( struct image *image ) {
|
||||
if ( ! image->type->exec )
|
||||
return -ENOEXEC;
|
||||
|
||||
/* Switch current working directory to be that of the image itself */
|
||||
old_cwuri = uri_get ( cwuri );
|
||||
churi ( image->uri );
|
||||
|
||||
/* Try executing the image */
|
||||
if ( ( rc = image->type->exec ( image ) ) != 0 ) {
|
||||
DBGC ( image, "IMAGE %p could not execute: %s\n",
|
||||
image, strerror ( rc ) );
|
||||
return rc;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Well, some formats might return... */
|
||||
return 0;
|
||||
done:
|
||||
/* Reset current working directory */
|
||||
churi ( old_cwuri );
|
||||
uri_put ( old_cwuri );
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user