X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=freebsd.c;h=b51b731b6071fc3523e0e2369d861c8822130a48;hb=HEAD;hp=d1fabee93e1d7701e0c565366725c2273529c1e8;hpb=54975208913f8f3f316173280a753a7322033575;p=libserialport.git diff --git a/freebsd.c b/freebsd.c index d1fabee..b51b731 100644 --- a/freebsd.c +++ b/freebsd.c @@ -76,6 +76,7 @@ * device description. */ +#include #include #include #include @@ -133,7 +134,7 @@ static int libusb_query_port(struct libusb20_device *dev, int idx, if (sbuf[0] == 0) return rc; - DBG("device interface descriptor: idx=%003d '%s'\n", idx, sbuf); + DBG("Device interface descriptor: idx=%003d '%s'\n", idx, sbuf); j = strchr(sbuf, ':'); if (j > sbuf) { sbuf[j - sbuf] = 0; @@ -162,7 +163,7 @@ static int sysctl_query_dev_drv(const char *drv_name_str, if (!ttyname || !ttyport_cnt) return -1; - snprintf(sbuf, sizeof(sbuf) - 1, "dev.%s.%s.ttyname", drv_name_str, + snprintf(sbuf, sizeof(sbuf), "dev.%s.%s.ttyname", drv_name_str, drv_inst_str); tbuf_len = sizeof(tbuf) - 1; if ((rc = sysctlbyname(sbuf, tbuf, &tbuf_len, NULL, 0)) != 0) @@ -173,7 +174,7 @@ static int sysctl_query_dev_drv(const char *drv_name_str, DBG("sysctl: '%s' (%d) (%d): '%.*s'\n", sbuf, rc, (int)tbuf_len, (int)tbuf_len, tbuf); - snprintf(sbuf, sizeof(sbuf) - 1, "dev.%s.%s.ttyports", + snprintf(sbuf, sizeof(sbuf), "dev.%s.%s.ttyports", drv_name_str, drv_inst_str); tbuf_len = sizeof(tbuf) - 1; rc = sysctlbyname(sbuf, tbuf, &tbuf_len, NULL, 0); @@ -244,19 +245,19 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port) uint8_t idx; int sub_inst; - DBG("portname: '%s'\n", port->name); + DBG("Portname: '%s'\n", port->name); if (!strncmp(port->name, DEV_CUA_PATH, strlen(DEV_CUA_PATH))) { cua_sfx = port->name + strlen(DEV_CUA_PATH); DBG("'%s': '%s'\n", DEV_CUA_PATH, cua_sfx); } else { - RETURN_ERROR(SP_ERR_ARG, "Device name not recognized."); + RETURN_ERROR(SP_ERR_ARG, "Device name not recognized"); } /* Native UART enumeration. */ if ((cua_sfx[0] == 'u') || (cua_sfx[0] == 'd')) { port->transport = SP_TRANSPORT_NATIVE; - snprintf(tbuf, sizeof(tbuf) - 1, "cua%s", cua_sfx); + snprintf(tbuf, sizeof(tbuf), "cua%s", cua_sfx); port->description = strdup(tbuf); RETURN_OK(); } @@ -271,7 +272,7 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port) break; libusb20_dev_open(dev, 0); - DBG("device descriptor: '%s'\n", libusb20_dev_get_desc(dev)); + DBG("Device descriptor: '%s'\n", libusb20_dev_get_desc(dev)); for (idx = 0; idx <= UINT8_MAX - 1; idx++) { char *drv_name_str = NULL; @@ -287,9 +288,9 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port) /* Handle multiple subinstances of serial ports in the same driver instance. */ for (sub_inst = 0; sub_inst < ttyport_cnt; sub_inst++) { if (ttyport_cnt == 1) - snprintf(tbuf, sizeof(tbuf) - 1, "%s", ttyname); + snprintf(tbuf, sizeof(tbuf), "%s", ttyname); else - snprintf(tbuf, sizeof(tbuf) - 1, "%s.%d", ttyname, sub_inst); + snprintf(tbuf, sizeof(tbuf), "%s.%d", ttyname, sub_inst); if (!strcmp(cua_sfx, tbuf)) { DBG("MATCH: '%s' == '%s'\n", cua_sfx, tbuf); cua_dev_found = 1; @@ -316,7 +317,7 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port) libusb20_be_free(be); if (cua_dev_found == 0) - DBG("WARN: found no match '%s' %s'\n", port->name, cua_sfx); + DBG("WARN: Found no match '%s' %s'\n", port->name, cua_sfx); RETURN_OK(); } @@ -324,36 +325,35 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port) SP_PRIV enum sp_return list_ports(struct sp_port ***list) { DIR *dir; - struct dirent entry; - struct dirent *result; + struct dirent *entry; struct termios tios; char name[PATH_MAX]; int fd, ret; DEBUG("Enumerating tty devices"); if (!(dir = opendir("/dev"))) - RETURN_FAIL("could not open dir /dev"); + RETURN_FAIL("Could not open dir /dev"); DEBUG("Iterating over results"); - while (!readdir_r(dir, &entry, &result) && result) { + while ((entry = readdir(dir))) { ret = SP_OK; - if (entry.d_type != DT_CHR) + if (entry->d_type != DT_CHR) continue; - if (strncmp(entry.d_name, "cuaU", 4) != 0) - if (strncmp(entry.d_name, "cuau", 4) != 0) - if (strncmp(entry.d_name, "cuad", 4) != 0) + if (strncmp(entry->d_name, "cuaU", 4) != 0) + if (strncmp(entry->d_name, "cuau", 4) != 0) + if (strncmp(entry->d_name, "cuad", 4) != 0) continue; - if (strend(entry.d_name, ".init")) + if (strend(entry->d_name, ".init")) continue; - if (strend(entry.d_name, ".lock")) + if (strend(entry->d_name, ".lock")) continue; - snprintf(name, sizeof(name), "/dev/%s", entry.d_name); + snprintf(name, sizeof(name), "/dev/%s", entry->d_name); DEBUG_FMT("Found device %s", name); /* Check that we can open tty/cua device in rw mode - we need that. */ if ((fd = open(name, O_RDWR | O_NONBLOCK | O_NOCTTY | O_TTY_INIT | O_CLOEXEC)) < 0) { - DEBUG("open failed, skipping"); + DEBUG("Open failed, skipping"); continue; } @@ -369,11 +369,11 @@ SP_PRIV enum sp_return list_ports(struct sp_port ***list) continue; DEBUG_FMT("Found port %s", name); - DBG("%s: %s\n", __func__, entry.d_name); + DBG("%s: %s\n", __func__, entry->d_name); *list = list_append(*list, name); - if (!list) { - SET_ERROR(ret, SP_ERR_MEM, "list append failed"); + if (!*list) { + SET_ERROR(ret, SP_ERR_MEM, "List append failed"); break; } }