Lines Matching refs:opt

142 vfs_freeopt(struct vfsoptlist *opts, struct vfsopt *opt)
145 TAILQ_REMOVE(opts, opt, link);
146 free(opt->name, M_MOUNT);
147 if (opt->value != NULL)
148 free(opt->value, M_MOUNT);
149 free(opt, M_MOUNT);
156 struct vfsopt *opt;
159 opt = TAILQ_FIRST(opts);
160 vfs_freeopt(opts, opt);
168 struct vfsopt *opt, *temp;
172 TAILQ_FOREACH_SAFE(opt, opts, link, temp) {
173 if (strcmp(opt->name, name) == 0)
174 vfs_freeopt(opts, opt);
179 vfs_isopt_ro(const char *opt)
182 if (strcmp(opt, "ro") == 0 || strcmp(opt, "rdonly") == 0 ||
183 strcmp(opt, "norw") == 0)
189 vfs_isopt_rw(const char *opt)
192 if (strcmp(opt, "rw") == 0 || strcmp(opt, "noro") == 0)
205 /* "opt" vs. "opt" or "noopt" vs. "noopt" */
208 /* "noopt" vs. "opt" */
211 /* "opt" vs. "noopt" */
218 /* "foo.noopt" vs. "foo.opt" */
221 /* "foo.opt" vs. "foo.noopt" */
240 struct vfsopt *opt, *opt2, *tmp;
242 TAILQ_FOREACH_REVERSE(opt, opts, vfsoptlist, link) {
243 opt2 = TAILQ_PREV(opt, vfsoptlist, link);
245 if (vfs_equalopts(opt->name, opt2->name)) {
263 struct vfsopt *opt;
287 opt = malloc(sizeof(struct vfsopt), M_MOUNT, M_WAITOK);
288 opt->name = malloc(namelen, M_MOUNT, M_WAITOK);
289 opt->value = NULL;
290 opt->len = 0;
291 opt->pos = i / 2;
292 opt->seen = 0;
298 TAILQ_INSERT_TAIL(opts, opt, link);
301 bcopy(auio->uio_iov[i].iov_base, opt->name, namelen);
303 error = copyin(auio->uio_iov[i].iov_base, opt->name,
309 if (namelen == 0 || opt->name[namelen - 1] != '\0') {
314 opt->len = optlen;
315 opt->value = malloc(optlen, M_MOUNT, M_WAITOK);
317 bcopy(auio->uio_iov[i + 1].iov_base, opt->value,
321 opt->value, optlen);
346 struct vfsopt *opt, *new;
348 TAILQ_FOREACH(opt, oldopts, link) {
350 new->name = strdup(opt->name, M_MOUNT);
351 if (opt->len != 0) {
352 new->value = malloc(opt->len, M_MOUNT, M_WAITOK);
353 bcopy(opt->value, new->value, opt->len);
356 new->len = opt->len;
357 new->seen = opt->seen;
537 struct vfsopt *opt, *tmp_opt;
580 TAILQ_FOREACH_SAFE(opt, optlist, link, tmp_opt) {
581 if (strcmp(opt->name, "update") == 0) {
583 vfs_freeopt(optlist, opt);
585 else if (strcmp(opt->name, "async") == 0)
587 else if (strcmp(opt->name, "force") == 0) {
589 vfs_freeopt(optlist, opt);
591 else if (strcmp(opt->name, "reload") == 0) {
593 vfs_freeopt(optlist, opt);
595 else if (strcmp(opt->name, "multilabel") == 0)
597 else if (strcmp(opt->name, "noasync") == 0)
599 else if (strcmp(opt->name, "noatime") == 0)
601 else if (strcmp(opt->name, "atime") == 0) {
602 free(opt->name, M_MOUNT);
603 opt->name = strdup("nonoatime", M_MOUNT);
605 else if (strcmp(opt->name, "noclusterr") == 0)
607 else if (strcmp(opt->name, "clusterr") == 0) {
608 free(opt->name, M_MOUNT);
609 opt->name = strdup("nonoclusterr", M_MOUNT);
611 else if (strcmp(opt->name, "noclusterw") == 0)
613 else if (strcmp(opt->name, "clusterw") == 0) {
614 free(opt->name, M_MOUNT);
615 opt->name = strdup("nonoclusterw", M_MOUNT);
617 else if (strcmp(opt->name, "noexec") == 0)
619 else if (strcmp(opt->name, "exec") == 0) {
620 free(opt->name, M_MOUNT);
621 opt->name = strdup("nonoexec", M_MOUNT);
623 else if (strcmp(opt->name, "nosuid") == 0)
625 else if (strcmp(opt->name, "suid") == 0) {
626 free(opt->name, M_MOUNT);
627 opt->name = strdup("nonosuid", M_MOUNT);
629 else if (strcmp(opt->name, "nosymfollow") == 0)
631 else if (strcmp(opt->name, "symfollow") == 0) {
632 free(opt->name, M_MOUNT);
633 opt->name = strdup("nonosymfollow", M_MOUNT);
635 else if (strcmp(opt->name, "noro") == 0)
637 else if (strcmp(opt->name, "rw") == 0)
639 else if (strcmp(opt->name, "ro") == 0)
641 else if (strcmp(opt->name, "rdonly") == 0) {
642 free(opt->name, M_MOUNT);
643 opt->name = strdup("ro", M_MOUNT);
646 else if (strcmp(opt->name, "suiddir") == 0)
648 else if (strcmp(opt->name, "sync") == 0)
650 else if (strcmp(opt->name, "union") == 0)
652 else if (strcmp(opt->name, "automounted") == 0) {
654 vfs_freeopt(optlist, opt);
1410 struct vfsopt *opt;
1415 TAILQ_FOREACH(opt, opts, link) {
1416 p = opt->name;
1445 TAILQ_FOREACH(opt, opts, link) {
1446 if (strcmp(opt->name, "errmsg") == 0) {
1447 strncpy((char *)opt->value, errmsg, opt->len);
1451 if (opt == NULL)
1472 struct vfsopt *opt;
1476 TAILQ_FOREACH(opt, opts, link) {
1477 if (strcmp(name, opt->name) == 0) {
1478 opt->seen = 1;
1480 *len = opt->len;
1482 *buf = opt->value;
1492 struct vfsopt *opt;
1497 TAILQ_FOREACH(opt, opts, link) {
1498 if (strcmp(name, opt->name) == 0) {
1499 opt->seen = 1;
1500 return (opt->pos);
1551 struct vfsopt *opt;
1554 TAILQ_FOREACH(opt, opts, link) {
1555 if (strcmp(name, opt->name) != 0)
1557 opt->seen = 1;
1558 if (opt->len == 0 ||
1559 ((char *)opt->value)[opt->len - 1] != '\0') {
1563 return (opt->value);
1573 struct vfsopt *opt;
1575 TAILQ_FOREACH(opt, opts, link) {
1576 if (strcmp(name, opt->name) == 0) {
1577 opt->seen = 1;
1592 struct vfsopt *opt;
1597 TAILQ_FOREACH(opt, opts, link) {
1598 if (strcmp(name, opt->name) != 0)
1600 opt->seen = 1;
1601 if (opt->len == 0 || opt->value == NULL)
1603 if (((char *)opt->value)[opt->len - 1] != '\0')
1606 ret = vsscanf(opt->value, fmt, ap);
1616 struct vfsopt *opt;
1618 TAILQ_FOREACH(opt, opts, link) {
1619 if (strcmp(name, opt->name) != 0)
1621 opt->seen = 1;
1622 if (opt->value == NULL)
1623 opt->len = len;
1625 if (opt->len != len)
1627 bcopy(value, opt->value, len);
1637 struct vfsopt *opt;
1639 TAILQ_FOREACH(opt, opts, link) {
1640 if (strcmp(name, opt->name) != 0)
1642 opt->seen = 1;
1643 if (opt->value == NULL)
1644 opt->len = len;
1646 if (opt->len < len)
1648 opt->len = len;
1649 bcopy(value, opt->value, len);
1659 struct vfsopt *opt;
1661 TAILQ_FOREACH(opt, opts, link) {
1662 if (strcmp(name, opt->name) != 0)
1664 opt->seen = 1;
1665 if (opt->value == NULL)
1666 opt->len = strlen(value) + 1;
1667 else if (strlcpy(opt->value, value, opt->len) >= opt->len)
1689 struct vfsopt *opt;
1693 TAILQ_FOREACH(opt, opts, link) {
1694 if (strcmp(name, opt->name) == 0) {
1695 opt->seen = 1;
1696 if (len != opt->len)
1698 bcopy(opt->value, dest, opt->len);