Lines Matching refs:bd
127 benv_des_t *bd; in new_bd() local
129 bd = (benv_des_t *)malloc(sizeof (benv_des_t)); in new_bd()
130 (void) memset(bd, 0, sizeof (benv_des_t)); in new_bd()
132 bd->elist = new_list(); in new_bd()
134 return (bd); in new_bd()
664 init_benv(benv_des_t *bd, char *file) in init_benv() argument
674 bd->name = file; in init_benv()
676 bd->name = strcats(boottree, "/solaris/bootenv.rc", NULL); in init_benv()
680 map_benv(benv_des_t *bd) in map_benv() argument
682 if ((bd->fd = open(bd->name, O_RDONLY)) == -1) in map_benv()
686 exit(_error(PERROR, "cannot open %s", bd->name)); in map_benv()
688 if ((bd->len = (size_t)lseek(bd->fd, 0, SEEK_END)) == 0) { in map_benv()
689 if (close(bd->fd) == -1) in map_benv()
690 exit(_error(PERROR, "close error on %s", bd->name)); in map_benv()
694 (void) lseek(bd->fd, 0, SEEK_SET); in map_benv()
696 if ((bd->adr = mmap((caddr_t)0, bd->len, (PROT_READ | PROT_WRITE), in map_benv()
697 MAP_PRIVATE, bd->fd, 0)) == MAP_FAILED) in map_benv()
698 exit(_error(PERROR, "cannot map %s", bd->name)); in map_benv()
702 unmap_benv(benv_des_t *bd) in unmap_benv() argument
704 if (munmap(bd->adr, bd->len) == -1) in unmap_benv()
705 exit(_error(PERROR, "unmap error on %s", bd->name)); in unmap_benv()
707 if (close(bd->fd) == -1) in unmap_benv()
708 exit(_error(PERROR, "close error on %s", bd->name)); in unmap_benv()
718 add_comm(benv_des_t *bd, char *base, char *last, char **next, int *line) in add_comm() argument
735 add_bent(bd->elist, base, NULL, NULL, NULL); in add_comm()
744 parse_cmd(benv_des_t *bd, char **next, int *line) in parse_cmd() argument
783 exit(_error(NO_PERROR, badeof, bd->name, *line)); in parse_cmd()
793 exit(_error(NO_PERROR, syntax, bd->name, *line)); in parse_cmd()
803 parse_name(benv_des_t *bd, char **next, int *line) in parse_name() argument
815 exit(_error(NO_PERROR, syntax, bd->name, *line)); in parse_name()
826 exit(_error(NO_PERROR, badeof, bd->name, *line)); in parse_name()
861 parse_value(benv_des_t *bd, char **next, int *line) in parse_value() argument
921 exit(_error(NO_PERROR, badeof, bd->name, *line)); in parse_value()
949 add_cmd(benv_des_t *bd, char *last, char **next, int *line) in add_cmd() argument
954 if ((cmd = parse_cmd(bd, next, line)) == NULL) in add_cmd()
956 name = parse_name(bd, next, line); in add_cmd()
957 val = parse_value(bd, next, line); in add_cmd()
958 add_bent(bd->elist, NULL, cmd, name, val); in add_cmd()
969 parse_benv(benv_des_t *bd) in parse_benv() argument
976 pbase = (char *)bd->adr; in parse_benv()
977 pend = pbase + bd->len; in parse_benv()
981 add_comm(bd, tok, pend, &tnext, &line); in parse_benv()
983 add_cmd(bd, pend, &tnext, &line); in parse_benv()
987 write_benv(benv_des_t *bd) in write_benv() argument
994 list = bd->elist; in write_benv()
999 if ((fp = fopen(bd->name, "w")) == NULL) in write_benv()
1000 exit(_error(PERROR, "cannot open %s", bd->name)); in write_benv()
1053 benv_des_t *bd; in main() local
1074 bd = new_bd(); in main()
1075 init_benv(bd, file); in main()
1077 map_benv(bd); in main()
1078 if (bd->len) { in main()
1079 parse_benv(bd); in main()
1080 unmap_benv(bd); in main()
1083 elist = bd->elist; in main()
1112 write_benv(bd); in main()