]> sigrok.org Git - libsigrok.git/blobdiff - src/resource.c
std_serial_dev_acquisition_stop(): Drop unneeded parameter.
[libsigrok.git] / src / resource.c
index bcb7a19146b59ef7ca6ea70372ae7a377d04d076..b921d93da8df5ecef1849460f2f3df8d8b3aae0e 100644 (file)
@@ -99,7 +99,10 @@ static int resource_open_default(struct sr_resource *res,
                const char *name, void *cb_data)
 {
        int64_t filesize;
-       const char *builtindir, *subdir;
+#ifdef FIRMWARE_DIR
+       const char *builtindir;
+#endif
+       const char *subdir;
        const char *const *datadirs;
        FILE *file;
 
@@ -107,7 +110,9 @@ static int resource_open_default(struct sr_resource *res,
 
        switch (res->type) {
        case SR_RESOURCE_FIRMWARE:
+#ifdef FIRMWARE_DIR
                builtindir = FIRMWARE_DIR;
+#endif
                subdir = "sigrok-firmware";
                break;
        default:
@@ -120,9 +125,10 @@ static int resource_open_default(struct sr_resource *res,
         * Scan the hard-coded directory before the system directories to
         * avoid picking up possibly outdated files from a system install.
         */
+#ifdef FIRMWARE_DIR
        if (!file)
                file = try_open_file(builtindir, "", name);
-
+#endif
        if (!file) {
                datadirs = g_get_system_data_dirs();
                while (*datadirs && !file)
@@ -167,7 +173,7 @@ static int resource_close_default(struct sr_resource *res, void *cb_data)
        return SR_OK;
 }
 
-static ssize_t resource_read_default(const struct sr_resource *res,
+static gssize resource_read_default(const struct sr_resource *res,
                void *buf, size_t count, void *cb_data)
 {
        FILE *file;
@@ -180,7 +186,7 @@ static ssize_t resource_read_default(const struct sr_resource *res,
                sr_err("%s: invalid handle.", __func__);
                return SR_ERR_ARG;
        }
-       if (count > SSIZE_MAX) {
+       if (count > G_MAXSSIZE) {
                sr_err("%s: count %zu too large.", __func__, count);
                return SR_ERR_ARG;
        }
@@ -303,10 +309,10 @@ SR_PRIV int sr_resource_close(struct sr_context *ctx, struct sr_resource *res)
  *
  * @private
  */
-SR_PRIV ssize_t sr_resource_read(struct sr_context *ctx,
+SR_PRIV gssize sr_resource_read(struct sr_context *ctx,
                const struct sr_resource *res, void *buf, size_t count)
 {
-       ssize_t n_read;
+       gssize n_read;
 
        n_read = (*ctx->resource_read_cb)(res, buf, count,
                        ctx->resource_cb_data);
@@ -335,7 +341,8 @@ SR_PRIV void *sr_resource_load(struct sr_context *ctx,
 {
        struct sr_resource res;
        void *buf;
-       ssize_t n_read;
+       size_t res_size;
+       gssize n_read;
 
        if (sr_resource_open(ctx, &res, type, name) != SR_OK)
                return NULL;
@@ -346,17 +353,19 @@ SR_PRIV void *sr_resource_load(struct sr_context *ctx,
                sr_resource_close(ctx, &res);
                return NULL;
        }
-       buf = g_try_malloc(res.size);
+       res_size = res.size;
+
+       buf = g_try_malloc(res_size);
        if (!buf) {
                sr_err("Failed to allocate buffer for '%s'.", name);
                sr_resource_close(ctx, &res);
                return NULL;
        }
 
-       n_read = sr_resource_read(ctx, &res, buf, res.size);
+       n_read = sr_resource_read(ctx, &res, buf, res_size);
        sr_resource_close(ctx, &res);
 
-       if (n_read < 0 || (size_t)n_read != res.size) {
+       if (n_read < 0 || (size_t)n_read != res_size) {
                if (n_read >= 0)
                        sr_err("Failed to read '%s': premature end of file.",
                                name);
@@ -364,7 +373,7 @@ SR_PRIV void *sr_resource_load(struct sr_context *ctx,
                return NULL;
        }
 
-       *size = res.size;
+       *size = res_size;
        return buf;
 }