X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fserial.c;h=353b7ae14899f12d49cac0a3761469488faa971d;hb=fe953391bd7782813256c02350afa1996c773659;hp=c87c3a3347fc3a45ef4c2824a7e797ff692bf41e;hpb=1a7adeac29d6331b53a2c78fc9c70429b32da0bd;p=libsigrok.git diff --git a/src/serial.c b/src/serial.c index c87c3a33..353b7ae1 100644 --- a/src/serial.c +++ b/src/serial.c @@ -925,16 +925,25 @@ SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial, return SR_ERR; } +#endif + /** * Extract the serial device and options from the options linked list. * - * @param options List of options passed from the command line. - * @param serial_device Pointer where to store the extracted serial device. - * @param serial_options Pointer where to store the optional extracted serial + * The caller's passed in references get updated when the list of options + * contains one of the desired parameters. This lets callers pre-assign + * default values which take effect in the absence of user specifications. + * Either reference is optional, passing #NULL is acceptable. + * + * Callers must not free returned strings. These shall be considered + * read-only handles to data that is managed elsewhere. + * + * @param[in] options List of options passed from the command line. + * @param[out] serial_device Pointer where to store the extracted serial device. + * @param[out] serial_options Pointer where to store the optional extracted serial * options. * - * @return SR_OK if a serial_device is found, SR_ERR if no device is found. The - * returned string should not be freed by the caller. + * @return SR_OK if a serial_device is found, SR_ERR if no device is found. * * @private */ @@ -944,23 +953,25 @@ SR_PRIV int sr_serial_extract_options(GSList *options, GSList *l; struct sr_config *src; - *serial_device = NULL; - for (l = options; l; l = l->next) { src = l->data; switch (src->key) { case SR_CONF_CONN: + if (!serial_device) + break; *serial_device = g_variant_get_string(src->data, NULL); sr_dbg("Parsed serial device: %s.", *serial_device); break; case SR_CONF_SERIALCOMM: + if (!serial_options) + break; *serial_options = g_variant_get_string(src->data, NULL); sr_dbg("Parsed serial options: %s.", *serial_options); break; } } - if (!*serial_device) { + if (serial_device && !*serial_device) { sr_dbg("No serial device specified."); return SR_ERR; } @@ -968,6 +979,8 @@ SR_PRIV int sr_serial_extract_options(GSList *options, return SR_OK; } +#ifdef HAVE_SERIAL_COMM + /** @private */ SR_PRIV int serial_source_add(struct sr_session *session, struct sr_serial_dev_inst *serial, int events, int timeout,