version 1.14, 2018/03/19 09:06:20 |
version 1.14.2.1, 2019/06/10 22:05:33 |
Line 52 __RCSID("$NetBSD$"); |
|
Line 52 __RCSID("$NetBSD$"); |
|
static int cmd_set(gpt_t, int, char *[]); |
static int cmd_set(gpt_t, int, char *[]); |
|
|
static const char *sethelp[] = { |
static const char *sethelp[] = { |
"-a attribute -i index", |
"-a attribute [-i index] [-b startsec]", |
|
"-N [-i index] [-b startsec]", |
"-l", |
"-l", |
}; |
}; |
|
|
Line 70 cmd_set(gpt_t gpt, int argc, char *argv[ |
|
Line 71 cmd_set(gpt_t gpt, int argc, char *argv[ |
|
{ |
{ |
int ch; |
int ch; |
unsigned int entry = 0; |
unsigned int entry = 0; |
uint64_t attributes = 0; |
uint64_t attributes = 0, clear = 0; |
|
off_t start = 0; |
|
map_t m; |
|
|
while ((ch = getopt(argc, argv, "a:i:l")) != -1) { |
while ((ch = getopt(argc, argv, "a:b:i:lN")) != -1) { |
switch(ch) { |
switch(ch) { |
case 'a': |
case 'a': |
if (gpt == NULL || gpt_attr_get(gpt, &attributes) == -1) |
if (gpt == NULL || gpt_attr_get(gpt, &attributes) == -1) |
return usage(); |
return usage(); |
break; |
break; |
|
case 'b': |
|
if (gpt == NULL || gpt_human_get(gpt, &start) == -1) |
|
return usage(); |
|
break; |
case 'i': |
case 'i': |
if (gpt == NULL || gpt_uint_get(gpt, &entry) == -1) |
if (gpt == NULL || gpt_uint_get(gpt, &entry) == -1) |
return usage(); |
return usage(); |
Line 85 cmd_set(gpt_t gpt, int argc, char *argv[ |
|
Line 92 cmd_set(gpt_t gpt, int argc, char *argv[ |
|
case 'l': |
case 'l': |
gpt_attr_help("\t"); |
gpt_attr_help("\t"); |
return 0; |
return 0; |
|
case 'N': |
|
clear = ~clear; |
|
break; |
default: |
default: |
return usage(); |
return usage(); |
} |
} |
} |
} |
|
|
if (gpt == NULL || argc != optind) |
if (start > 0) { |
|
for (m = map_first(gpt); m != NULL; m = m->map_next) { |
|
if (m->map_type != MAP_TYPE_GPT_PART || |
|
m->map_index < 1) |
|
continue; |
|
if (start != m->map_start) |
|
continue; |
|
entry = m->map_index; |
|
break; |
|
} |
|
} |
|
|
|
if (gpt == NULL || argc != optind || (attributes != 0 && clear != 0)) |
return usage(); |
return usage(); |
|
|
return gpt_attr_update(gpt, entry, attributes, 0); |
return gpt_attr_update(gpt, entry, attributes, clear); |
} |
} |