[parseopt] Add parse_uuid() for parsing UUID command-line arguments

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/1165/head
Michael Brown 2024-02-29 14:05:39 +00:00
parent 0eb8fbd0bf
commit 7cd73884e5
2 changed files with 25 additions and 0 deletions

View File

@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
#include <ipxe/uuid.h>
#include <ipxe/netdevice.h>
#include <ipxe/menu.h>
#include <ipxe/settings.h>
@ -124,6 +125,28 @@ int parse_timeout ( char *text, unsigned long *value ) {
return 0;
}
/**
* Parse UUID
*
* @v text Text
* @ret value UUID value
* @ret rc Return status code
*/
int parse_uuid ( char *text, union uuid *value ) {
int rc;
/* Sanity check */
assert ( text != NULL );
/* Parse UUID */
if ( ( rc = uuid_aton ( text, value ) ) != 0 ) {
printf ( "\"%s\": invalid UUID\n", text );
return rc;
}
return 0;
}
/**
* Parse network device name
*

View File

@ -11,6 +11,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stddef.h>
#include <ipxe/uuid.h>
#include <ipxe/settings.h>
struct net_device;
@ -128,6 +129,7 @@ struct named_setting {
extern int parse_string ( char *text, char **value );
extern int parse_integer ( char *text, unsigned int *value );
extern int parse_timeout ( char *text, unsigned long *value );
extern int parse_uuid ( char *text, union uuid *value );
extern int parse_netdev ( char *text, struct net_device **netdev );
extern int
parse_netdev_configurator ( char *text,