]> sigrok.org Git - libsigrok.git/commitdiff
input: Added preferred file extension field
authorJoel Holdsworth <redacted>
Wed, 21 Jan 2015 05:56:51 +0000 (00:56 -0500)
committerUwe Hermann <redacted>
Tue, 27 Jan 2015 17:05:25 +0000 (18:05 +0100)
This fixes parts of bug #541.

bindings/cxx/classes.cpp
bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
include/libsigrok/proto.h
src/input/binary.c
src/input/chronovu_la8.c
src/input/csv.c
src/input/input.c
src/input/vcd.c
src/input/wav.c
src/libsigrok-internal.h

index bb709fe2613092a2a78c2ff7af7810ec4204b95c..c915c8a7479920a23069a8c45dfe02983a766456 100644 (file)
@@ -1385,6 +1385,15 @@ string InputFormat::description()
        return valid_string(sr_input_description_get(_structure));
 }
 
+vector<string> InputFormat::extensions()
+{
+       vector<string> exts;
+       for (const char *const *e = sr_input_extensions_get(_structure);
+               e && *e; e++)
+               exts.push_back(*e);
+       return exts;
+}
+
 map<string, shared_ptr<Option>> InputFormat::options()
 {
        const struct sr_option **options = sr_input_options_get(_structure);
index 0701688db5f46bacdfa373749c6a679c2b0d0444..0542a1be8e15132733e45a0bf77c040a93434efd 100644 (file)
@@ -865,6 +865,9 @@ public:
        string name();
        /** Description of this input format. */
        string description();
+       /** A list of preferred file name extensions for this file format.
+         * @note This list is a recommendation only. */
+       vector<string> extensions();
        /** Options supported by this input format. */
        map<string, shared_ptr<Option> > options();
        /** Create an input using this input format.
index 3d3e354a1baf93a74d5e5041b35a1c878f04a16e..9b540c1ff32158653879ce83351df64ab727e82f 100644 (file)
@@ -150,6 +150,8 @@ SR_API const struct sr_input_module **sr_input_list(void);
 SR_API const char *sr_input_id_get(const struct sr_input_module *in);
 SR_API const char *sr_input_name_get(const struct sr_input_module *in);
 SR_API const char *sr_input_description_get(const struct sr_input_module *in);
+SR_API const char *const *sr_input_extensions_get(
+               const struct sr_input_module *o);
 SR_API const struct sr_input_module *sr_input_find(char *id);
 SR_API const struct sr_option **sr_input_options_get(const struct sr_input_module *in);
 SR_API void sr_input_options_free(const struct sr_option **options);
index 5d5fc865b2fe1a51228e61d09a87c2d5f0976c30..f9e49de17cb84d766b5a59601c569cb490957050 100644 (file)
@@ -165,6 +165,7 @@ SR_PRIV struct sr_input_module input_binary = {
        .id = "binary",
        .name = "Binary",
        .desc = "Raw binary",
+       .exts = NULL,
        .options = get_options,
        .init = init,
        .receive = receive,
index 53fcd682cade27bd107449bad91c74a23a1bab6e..c28f0e0a811b8afa43006ef86095ab231bbdedf0 100644 (file)
@@ -177,6 +177,7 @@ SR_PRIV struct sr_input_module input_chronovu_la8 = {
        .id = "chronovu-la8",
        .name = "Chronovu-LA8",
        .desc = "ChronoVu LA8",
+       .exts = (const char*[]){"kdt", NULL},
        .metadata = { SR_INPUT_META_FILESIZE | SR_INPUT_META_REQUIRED },
        .options = get_options,
        .format_match = format_match,
index 68ab43b806de03c0dfc7d5be5e9e1bee6e5978a1..e89f99aa6852ed02be46c3bbea4f835292375ebc 100644 (file)
@@ -819,6 +819,7 @@ SR_PRIV struct sr_input_module input_csv = {
        .id = "csv",
        .name = "CSV",
        .desc = "Comma-separated values",
+       .exts = (const char*[]){"csv", NULL},
        .metadata = { SR_INPUT_META_MIMETYPE },
        .options = get_options,
        .format_match = format_match,
index 5292481381404bc3540b289d4dbd5c5f08d607e8..3c1d2beb7c6beb1903066ec2a9731c39b80d9ed6 100644 (file)
@@ -129,6 +129,25 @@ SR_API const char *sr_input_description_get(const struct sr_input_module *o)
        return o->desc;
 }
 
+/**
+ * Returns the specified input module's file extensions typical for the file
+ * format, as a NULL terminated array, or returns a NULL pointer if there is
+ * no preferred extension.
+ * @note these are a suggestions only.
+ *
+ * @since 0.4.0
+ */
+SR_API const char *const *sr_input_extensions_get(
+               const struct sr_input_module *o)
+{
+       if (!o) {
+               sr_err("Invalid input module NULL!");
+               return NULL;
+       }
+
+       return o->exts;
+}
+
 /**
  * Return the input module with the specified ID, or NULL if no module
  * with that id is found.
index 429dd616a47f13c899b49e17bb4c68a18730ac52..e14215712b75c56477342a4706de8cecee5e0cf1 100644 (file)
@@ -569,6 +569,7 @@ SR_PRIV struct sr_input_module input_vcd = {
        .id = "vcd",
        .name = "VCD",
        .desc = "Value Change Dump",
+       .exts = (const char*[]){"vcd", NULL},
        .metadata = { SR_INPUT_META_HEADER | SR_INPUT_META_REQUIRED },
        .options = get_options,
        .format_match = format_match,
index 647b537cd4883e4ec5e8c748dd708b87b55e15b2..da5a3d5fbe291aff3eee0d4fe4e01eb3841967bb 100644 (file)
@@ -365,6 +365,7 @@ SR_PRIV struct sr_input_module input_wav = {
        .id = "wav",
        .name = "WAV",
        .desc = "WAV file",
+       .exts = (const char*[]){"wav", NULL},
        .metadata = { SR_INPUT_META_HEADER | SR_INPUT_META_REQUIRED },
        .format_match = format_match,
        .init = init,
index bd2d4c74b268e1ccf400dc58feff6bb40ac57084..debd27719a69a45da99b198a43639d9c64b7c25e 100644 (file)
@@ -238,6 +238,13 @@ struct sr_input_module {
         */
        const char *desc;
 
+       /**
+        * A NULL terminated array of strings containing a list of file name
+        * extensions typical for the input file format, or NULL if there is
+        * no typical extension for this file format.
+        */
+       const char *const *exts;
+
        /**
         * Zero-terminated list of metadata items the module needs to be able
         * to identify an input stream. Can be all-zero, if the module cannot