Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/efivar/efivar.c
Show First 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | // { "print-decimal", no_argument, NULL, 'd' }, /* unimplemnted clash with linux version */ | ||||||||
{ "quiet", no_argument, NULL, 'q' }, | { "quiet", no_argument, NULL, 'q' }, | ||||||||
{ "raw-guid", no_argument, NULL, 'R' }, | { "raw-guid", no_argument, NULL, 'R' }, | ||||||||
{ "utf8", no_argument, NULL, 'u' }, | { "utf8", no_argument, NULL, 'u' }, | ||||||||
{ "write", no_argument, NULL, 'w' }, | { "write", no_argument, NULL, 'w' }, | ||||||||
{ NULL, 0, NULL, 0 } | { NULL, 0, NULL, 0 } | ||||||||
}; | }; | ||||||||
static int aflag, Aflag, bflag, dflag, Dflag, gflag, Hflag, Nflag, | static bool aflag, Aflag, bflag, dflag, Dflag, gflag, Hflag, Nflag, | ||||||||
lflag, Lflag, Rflag, wflag, pflag, uflag, load_opt_flag; | lflag, Lflag, Rflag, wflag, pflag, uflag, load_opt_flag, quiet; | ||||||||
static bool quiet; | |||||||||
static char *varname; | static char *varname; | ||||||||
static char *fromfile; | static char *fromfile; | ||||||||
static u_long attrib = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS; | static u_long attrib = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS; | ||||||||
static void | static void | ||||||||
usage(void) | usage(void) | ||||||||
{ | { | ||||||||
▲ Show 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | |||||||||
parse_args(int argc, char **argv) | parse_args(int argc, char **argv) | ||||||||
{ | { | ||||||||
int ch, i; | int ch, i; | ||||||||
while ((ch = getopt_long(argc, argv, "aAbdDf:gHlLNn:OpqRt:uw", | while ((ch = getopt_long(argc, argv, "aAbdDf:gHlLNn:OpqRt:uw", | ||||||||
longopts, NULL)) != -1) { | longopts, NULL)) != -1) { | ||||||||
switch (ch) { | switch (ch) { | ||||||||
case 'a': | case 'a': | ||||||||
aflag++; | aflag = true; | ||||||||
break; | break; | ||||||||
case 'A': | case 'A': | ||||||||
Aflag++; | Aflag = true; | ||||||||
break; | break; | ||||||||
case 'b': | case 'b': | ||||||||
bflag++; | bflag = true; | ||||||||
break; | break; | ||||||||
case 'd': | case 'd': | ||||||||
dflag++; | dflag = true; | ||||||||
break; | break; | ||||||||
case 'D': | case 'D': | ||||||||
Dflag++; | Dflag = true; | ||||||||
break; | break; | ||||||||
case 'g': | case 'g': | ||||||||
gflag++; | gflag = true; | ||||||||
break; | break; | ||||||||
case 'H': | case 'H': | ||||||||
Hflag++; | Hflag = true; | ||||||||
break; | break; | ||||||||
case 'l': | case 'l': | ||||||||
lflag++; | lflag = true; | ||||||||
break; | break; | ||||||||
case 'L': | case 'L': | ||||||||
Lflag++; | Lflag = true; | ||||||||
break; | break; | ||||||||
case 'n': | case 'n': | ||||||||
varname = optarg; | varname = optarg; | ||||||||
break; | break; | ||||||||
case 'N': | case 'N': | ||||||||
Nflag++; | Nflag = true; | ||||||||
break; | break; | ||||||||
case 'O': | case 'O': | ||||||||
load_opt_flag++; | load_opt_flag = true; | ||||||||
break; | break; | ||||||||
case 'p': | case 'p': | ||||||||
pflag++; | pflag = true; | ||||||||
break; | break; | ||||||||
case 'q': | case 'q': | ||||||||
quiet = true; | quiet = true; | ||||||||
break; | break; | ||||||||
case 'R': | case 'R': | ||||||||
Rflag++; | Rflag = true; | ||||||||
break; | break; | ||||||||
case 't': | case 't': | ||||||||
attrib = strtoul(optarg, NULL, 16); | attrib = strtoul(optarg, NULL, 16); | ||||||||
break; | break; | ||||||||
case 'u': | case 'u': | ||||||||
uflag++; | uflag = true; | ||||||||
break; | break; | ||||||||
case 'w': | case 'w': | ||||||||
wflag++; | wflag = true; | ||||||||
break; | break; | ||||||||
case 'f': | case 'f': | ||||||||
free(fromfile); | free(fromfile); | ||||||||
fromfile = strdup(optarg); | fromfile = strdup(optarg); | ||||||||
break; | break; | ||||||||
case 0: | case 0: | ||||||||
rep_errx(1, "unknown or unimplemented option\n"); | rep_errx(1, "unknown or unimplemented option\n"); | ||||||||
break; | break; | ||||||||
default: | default: | ||||||||
usage(); | usage(); | ||||||||
} | } | ||||||||
} | } | ||||||||
argc -= optind; | argc -= optind; | ||||||||
argv += optind; | argv += optind; | ||||||||
if (argc == 1) | if (argc == 1) | ||||||||
varname = argv[0]; | varname = argv[0]; | ||||||||
if (aflag + Dflag + wflag > 1) { | if ((int)aflag + (int)Dflag + (int)wflag > 1) { | ||||||||
markj: I guess expressions like this might be why int was used? I think this should still work with… | |||||||||
warnx("Can only use one of -a (--append), " | warnx("Can only use one of -a (--append), " | ||||||||
"-D (--delete) and -w (--write)"); | "-D (--delete) and -w (--write)"); | ||||||||
usage(); | usage(); | ||||||||
} | } | ||||||||
if (aflag + Dflag + wflag > 0 && varname == NULL) { | if ((int)aflag + (int)Dflag + (int)wflag > 0 && varname == NULL) { | ||||||||
warnx("Must specify a variable for -a (--append), " | warnx("Must specify a variable for -a (--append), " | ||||||||
"-D (--delete) or -w (--write)"); | "-D (--delete) or -w (--write)"); | ||||||||
usage(); | usage(); | ||||||||
} | } | ||||||||
if (aflag) | if (aflag) | ||||||||
append_variable(varname, NULL); | append_variable(varname, NULL); | ||||||||
else if (Dflag) | else if (Dflag) | ||||||||
delete_variable(varname); | delete_variable(varname); | ||||||||
else if (wflag) | else if (wflag) | ||||||||
write_variable(varname, NULL); | write_variable(varname, NULL); | ||||||||
else if (Lflag) | else if (Lflag) | ||||||||
print_known_guid(); | print_known_guid(); | ||||||||
else if (fromfile) { | else if (fromfile) { | ||||||||
Nflag = 1; | Nflag = true; | ||||||||
Not Done Inline Actions
markj: | |||||||||
print_var(NULL, NULL); | print_var(NULL, NULL); | ||||||||
} else if (varname) { | } else if (varname) { | ||||||||
pflag++; | pflag = true; | ||||||||
print_variable(varname); | print_variable(varname); | ||||||||
} else if (argc > 0) { | } else if (argc > 0) { | ||||||||
pflag++; | pflag = true; | ||||||||
Not Done Inline ActionsThese are still using arithmetic expressions. markj: These are still using arithmetic expressions. | |||||||||
for (i = 0; i < argc; i++) | for (i = 0; i < argc; i++) | ||||||||
print_variable(argv[i]); | print_variable(argv[i]); | ||||||||
} else | } else | ||||||||
print_variables(); | print_variables(); | ||||||||
} | } | ||||||||
int | int | ||||||||
main(int argc, char **argv) | main(int argc, char **argv) | ||||||||
{ | { | ||||||||
parse_args(argc, argv); | parse_args(argc, argv); | ||||||||
} | } |
I guess expressions like this might be why int was used? I think this should still work with bools though.