+ if (strcmp(k, "baud") == 0 || strcmp(k, "bps") == 0) {
+ if (!v || (x = getbaud(v, &q)) < 0 || *q)
+ return (-1);
+ sc->baud = x;
+ } else if (strcmp(k, "data") == 0 || strcmp(k, "data-bits") == 0 ||
+ strcmp(k, "databits") == 0 || strcmp(k, "data-len") == 0 ||
+ strcmp(k, "datalen") == 0 || strcmp(k, "word") == 0 ||
+ strcmp(k, "word-len") == 0 || strcmp(k, "wordlen") == 0) {
+ if (!v || (x = strtol(v, &qq, 10)) == 0 || *qq)
+ return (-1);
+ sc->wordlen = x;
+ } else if (strcmp(k, "parity") == 0) {
+ if (!v || (x = getparity(v, &q)) < 0 || *q)
+ return (-1);
+ sc->parity = x;
+ } else if (strcmp(k, "stop") == 0 || strcmp(k, "stop-bits") == 0 ||
+ strcmp(k, "stopbits") == 0) {
+ if (!v || (x = strtol(v, &qq, 10)) == 0 || *qq)
+ return (-1);
+ sc->stopbits = x;
+ } else if (strcmp(k, "flow") == 0 || strcmp(k, "flow-control") == 0 ||
+ strcmp(k, "flowcontrol") == 0) {
+ if (!v || (x = getflow(v, &q)) < 0 || *q)
+ return (-1);
+ sc->flow = x;
+ } else if (strcmp(k, "format") == 0) {
+ if (!v)
+ return (-1);
+ if ((x = strtol(v, &qq, 10)) == 0)
+ return (-1);
+ v = qq;
+ sc->wordlen = x;
+ if (*v == '-')
+ v++;
+ if ((x = getparity(v, &q)) < 0)
+ return (-1);
+ sc->parity = x;
+ v = q;
+ if (*v == '-')
+ v++;
+ if ((x = strtol(v, &qq, 10)) == 0)
+ return (-1);
+ v = qq;
+ sc->stopbits = x;
+ if (*v)
+ return (-1);
+ } else
+ return (-1);