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,
|
int image_extract ( struct image *image, const char *name,
|
||||||
struct image **extracted ) {
|
struct image **extracted ) {
|
||||||
char *dot;
|
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Check that this image can be used to extract an archive image */
|
/* 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 */
|
/* Strip any archive or compression suffix from implicit name */
|
||||||
if ( ( ! name ) && ( (*extracted)->name ) &&
|
if ( ! name )
|
||||||
( ( dot = strrchr ( (*extracted)->name, '.' ) ) != NULL ) ) {
|
image_strip_suffix ( *extracted );
|
||||||
*dot = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Try extracting archive image */
|
/* Try extracting archive image */
|
||||||
if ( ( rc = image->type->extract ( image, *extracted ) ) != 0 ) {
|
if ( ( rc = image->type->extract ( image, *extracted ) ) != 0 ) {
|
||||||
|
|
|
@ -172,6 +172,25 @@ int image_set_name ( struct image *image, const char *name ) {
|
||||||
return 0;
|
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
|
* Set image command line
|
||||||
*
|
*
|
||||||
|
|
|
@ -188,6 +188,7 @@ static inline struct image * first_image ( void ) {
|
||||||
extern struct image * alloc_image ( struct uri *uri );
|
extern struct image * alloc_image ( struct uri *uri );
|
||||||
extern int image_set_uri ( struct image *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 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_cmdline ( struct image *image, const char *cmdline );
|
||||||
extern int image_set_len ( struct image *image, size_t len );
|
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 );
|
extern int image_set_data ( struct image *image, userptr_t data, size_t len );
|
||||||
|
|
Loading…
Reference in New Issue