636 |
return error; |
return error; |
637 |
} |
} |
638 |
|
|
639 |
static bool ccs_print_name_union(struct ccs_io_buffer *head, bool is_group, |
static bool ccs_print_name_union(struct ccs_io_buffer *head, |
640 |
union ccs_name_union *group) |
struct ccs_name_union *ptr) |
641 |
{ |
{ |
642 |
const int pos = head->read_avail; |
const int pos = head->read_avail; |
643 |
if (pos && head->read_buf[pos - 1] == ' ') |
if (pos && head->read_buf[pos - 1] == ' ') |
644 |
head->read_avail--; |
head->read_avail--; |
645 |
if (is_group) |
if (ptr->is_group) |
646 |
return ccs_io_printf(head, " @%s", |
return ccs_io_printf(head, " @%s", |
647 |
group->group->group_name->name); |
ptr->group->group_name->name); |
648 |
return ccs_io_printf(head, " %s", group->filename->name); |
return ccs_io_printf(head, " %s", ptr->filename->name); |
649 |
} |
} |
650 |
|
|
651 |
static bool ccs_print_number_union(struct ccs_io_buffer *head, bool is_group, |
static bool ccs_print_number_union(struct ccs_io_buffer *head, |
652 |
union ccs_number_union *group) |
struct ccs_number_union *ptr) |
653 |
{ |
{ |
654 |
unsigned int min; |
unsigned long min; |
655 |
unsigned int max; |
unsigned long max; |
656 |
if (is_group) |
if (ptr->is_group) |
657 |
return ccs_io_printf(head, " @%s", |
return ccs_io_printf(head, " @%s", |
658 |
group->group->group_name->name); |
ptr->group->group_name->name); |
659 |
min = group->value.min; |
min = ptr->values[0]; |
660 |
max = group->value.max; |
max = ptr->values[1]; |
661 |
if (min == max) |
if (min == max) |
662 |
return ccs_io_printf(head, " %u", min); |
return ccs_io_printf(head, " %lu", min); |
663 |
return ccs_io_printf(head, " %u-%u", min, max); |
return ccs_io_printf(head, " %lu-%lu", min, max); |
664 |
} |
} |
665 |
|
|
666 |
/** |
/** |
692 |
msg = ccs_sp2keyword(bit); |
msg = ccs_sp2keyword(bit); |
693 |
pos = head->read_avail; |
pos = head->read_avail; |
694 |
if (!ccs_io_printf(head, "allow_%s", msg) || |
if (!ccs_io_printf(head, "allow_%s", msg) || |
695 |
!ccs_print_name_union(head, ptr->name_is_group, |
!ccs_print_name_union(head, &ptr->name) || |
|
&ptr->name) || |
|
696 |
!ccs_print_condition(head, cond)) |
!ccs_print_condition(head, cond)) |
697 |
goto out; |
goto out; |
698 |
} |
} |
727 |
msg = ccs_mkdev2keyword(bit); |
msg = ccs_mkdev2keyword(bit); |
728 |
pos = head->read_avail; |
pos = head->read_avail; |
729 |
if (!ccs_io_printf(head, "allow_%s", msg) || |
if (!ccs_io_printf(head, "allow_%s", msg) || |
730 |
!ccs_print_name_union(head, ptr->name_is_group, |
!ccs_print_name_union(head, &ptr->name) || |
731 |
&ptr->name) || |
!ccs_print_number_union(head, &ptr->major) || |
732 |
!ccs_print_number_union(head, ptr->major_is_group, |
!ccs_print_number_union(head, &ptr->minor) || |
|
&ptr->major) || |
|
|
!ccs_print_number_union(head, ptr->minor_is_group, |
|
|
&ptr->minor) || |
|
733 |
!ccs_print_condition(head, cond)) |
!ccs_print_condition(head, cond)) |
734 |
goto out; |
goto out; |
735 |
} |
} |
764 |
msg = ccs_dp2keyword(bit); |
msg = ccs_dp2keyword(bit); |
765 |
pos = head->read_avail; |
pos = head->read_avail; |
766 |
if (!ccs_io_printf(head, "allow_%s", msg) || |
if (!ccs_io_printf(head, "allow_%s", msg) || |
767 |
!ccs_print_name_union(head, ptr->name1_is_group, |
!ccs_print_name_union(head, &ptr->name1) || |
768 |
&ptr->name1) || |
!ccs_print_name_union(head, &ptr->name2) || |
|
!ccs_print_name_union(head, ptr->name2_is_group, |
|
|
&ptr->name2) || |
|
769 |
!ccs_print_condition(head, cond)) |
!ccs_print_condition(head, cond)) |
770 |
goto out; |
goto out; |
771 |
} |
} |
800 |
msg = ccs_path_number2keyword(bit); |
msg = ccs_path_number2keyword(bit); |
801 |
pos = head->read_avail; |
pos = head->read_avail; |
802 |
if (!ccs_io_printf(head, "allow_%s", msg) || |
if (!ccs_io_printf(head, "allow_%s", msg) || |
803 |
!ccs_print_name_union(head, ptr->name_is_group, |
!ccs_print_name_union(head, &ptr->name) || |
804 |
&ptr->name) || |
!ccs_print_number_union(head, &ptr->number) || |
|
!ccs_print_number_union(head, ptr->number_is_group, |
|
|
&ptr->number) || |
|
805 |
!ccs_print_condition(head, cond)) |
!ccs_print_condition(head, cond)) |
806 |
goto out; |
goto out; |
807 |
} |
} |
965 |
goto out; |
goto out; |
966 |
break; |
break; |
967 |
} |
} |
968 |
if (!ccs_print_number_union(head, ptr->port_is_group, &ptr->port) || |
if (!ccs_print_number_union(head, &ptr->port) || |
969 |
!ccs_print_condition(head, cond)) |
!ccs_print_condition(head, cond)) |
970 |
goto out; |
goto out; |
971 |
return true; |
return true; |