Lines 33-38
__FBSDID("$FreeBSD$");
Link Here
|
33 |
#include <errno.h> |
33 |
#include <errno.h> |
34 |
#include <fcntl.h> |
34 |
#include <fcntl.h> |
35 |
#include <getopt.h> |
35 |
#include <getopt.h> |
|
|
36 |
#include <regex.h> |
36 |
#include <stddef.h> |
37 |
#include <stddef.h> |
37 |
#include <stdio.h> |
38 |
#include <stdio.h> |
38 |
#include <stdlib.h> |
39 |
#include <stdlib.h> |
Lines 88-99
static void
Link Here
|
88 |
breakdown_name(char *name, efi_guid_t *guid, char **vname) |
89 |
breakdown_name(char *name, efi_guid_t *guid, char **vname) |
89 |
{ |
90 |
{ |
90 |
char *cp; |
91 |
char *cp; |
|
|
92 |
regex_t re; |
93 |
regmatch_t rm[1]; |
91 |
|
94 |
|
92 |
cp = strrchr(name, '-'); |
95 |
if (regcomp(&re, "^[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-" |
93 |
if (cp == NULL) |
96 |
"[[:xdigit:]]{4}-[[:xdigit:]]{12}-", REG_EXTENDED | REG_ICASE) != 0) |
|
|
97 |
errx(1, "failed to compile regex"); |
98 |
if (regexec(&re, name, 1, rm, 0) != 0) |
94 |
errx(1, "Invalid name: %s", name); |
99 |
errx(1, "Invalid name: %s", name); |
95 |
*vname = cp + 1; |
100 |
regfree(&re); |
|
|
101 |
|
102 |
cp = name + rm[0].rm_eo - 1; |
96 |
*cp = '\0'; |
103 |
*cp = '\0'; |
|
|
104 |
*vname = cp + 1; |
97 |
if (efi_name_to_guid(name, guid) < 0) |
105 |
if (efi_name_to_guid(name, guid) < 0) |
98 |
errx(1, "Invalid guid %s", name); |
106 |
errx(1, "Invalid guid %s", name); |
99 |
} |
107 |
} |