mirror of https://github.com/ipxe/ipxe.git
[image] Split image_strip_suffix() out from image_extract()
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1171/head
parent
748cab7745
commit
49404bfea9
|
@ -43,7 +43,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
*/
|
||||
int image_extract ( struct image *image, const char *name,
|
||||
struct image **extracted ) {
|
||||
char *dot;
|
||||
int rc;
|
||||
|
||||
/* Check that this image can be used to extract an archive image */
|
||||
|
@ -66,10 +65,8 @@ int image_extract ( struct image *image, const char *name,
|
|||
}
|
||||
|
||||
/* Strip any archive or compression suffix from implicit name */
|
||||
if ( ( ! name ) && ( (*extracted)->name ) &&
|
||||
( ( dot = strrchr ( (*extracted)->name, '.' ) ) != NULL ) ) {
|
||||
*dot = '\0';
|
||||
}
|
||||
if ( ! name )
|
||||
image_strip_suffix ( *extracted );
|
||||
|
||||
/* Try extracting archive image */
|
||||
if ( ( rc = image->type->extract ( image, *extracted ) ) != 0 ) {
|
||||
|
|
|
@ -172,6 +172,25 @@ int image_set_name ( struct image *image, const char *name ) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip dot suffix from image name, if present
|
||||
*
|
||||
* @v image Image
|
||||
* @ret sep Position of old dot separator, or NULL
|
||||
*/
|
||||
char * image_strip_suffix ( struct image *image ) {
|
||||
char *dot;
|
||||
|
||||
/* Locate and strip suffix, if present */
|
||||
if ( image->name &&
|
||||
( ( dot = strrchr ( image->name, '.' ) ) != NULL ) ) {
|
||||
*dot = '\0';
|
||||
return dot;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set image command line
|
||||
*
|
||||
|
|
|
@ -188,6 +188,7 @@ static inline struct image * first_image ( void ) {
|
|||
extern struct image * alloc_image ( struct uri *uri );
|
||||
extern int image_set_uri ( struct image *image, struct uri *uri );
|
||||
extern int image_set_name ( struct image *image, const char *name );
|
||||
extern char * image_strip_suffix ( struct image *image );
|
||||
extern int image_set_cmdline ( struct image *image, const char *cmdline );
|
||||
extern int image_set_len ( struct image *image, size_t len );
|
||||
extern int image_set_data ( struct image *image, userptr_t data, size_t len );
|
||||
|
|
Loading…
Reference in New Issue