]> sigrok.org Git - libsigrok.git/blobdiff - output/vcd.c
sr/cli/gtk/qt: s/device/dev/ in many places.
[libsigrok.git] / output / vcd.c
index a0f70e372b99a2f21e7df1b31e8035d927df5b32..64e2438e6813dbe7b10f5d83545921725bd1b7fd 100644 (file)
@@ -2,7 +2,7 @@
  * This file is part of the sigrok project.
  *
  * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
- * Copyright (C) 2011 Bert Vermeulen <bert@biot.com>
+ * Copyright (C) 2010-2012 Bert Vermeulen <bert@biot.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -49,50 +49,52 @@ static int init(struct sr_output *o)
        char *samplerate_s, *frequency_s, *timestamp;
        time_t t;
 
-       if (!(ctx = calloc(1, sizeof(struct context))))
+       if (!(ctx = g_try_malloc0(sizeof(struct context)))) {
+               sr_err("vcd out: %s: ctx malloc failed", __func__);
                return SR_ERR_MALLOC;
+       }
 
        o->internal = ctx;
        ctx->num_enabled_probes = 0;
 
-       for (l = o->device->probes; l; l = l->next) {
+       for (l = o->dev->probes; l; l = l->next) {
                probe = l->data;
                if (!probe->enabled)
                        continue;
                ctx->probelist[ctx->num_enabled_probes++] = probe->name;
        }
        if (ctx->num_enabled_probes > 94) {
-               sr_warn("VCD only supports 94 probes.");
+               sr_err("vcd out: VCD only supports 94 probes.");
                return SR_ERR;
        }
 
        ctx->probelist[ctx->num_enabled_probes] = 0;
        ctx->unitsize = (ctx->num_enabled_probes + 7) / 8;
        ctx->header = g_string_sized_new(512);
-       num_probes = g_slist_length(o->device->probes);
+       num_probes = g_slist_length(o->dev->probes);
 
        /* timestamp */
        t = time(NULL);
-       timestamp = strdup(ctime(&t));
+       timestamp = g_strdup(ctime(&t));
        timestamp[strlen(timestamp)-1] = 0;
        g_string_printf(ctx->header, "$date %s $end\n", timestamp);
-       free(timestamp);
+       g_free(timestamp);
 
        /* generator */
        g_string_append_printf(ctx->header, "$version %s %s $end\n",
                        PACKAGE, PACKAGE_VERSION);
 
-       if (o->device->plugin && sr_device_has_hwcap(o->device, SR_HWCAP_SAMPLERATE)) {
-               ctx->samplerate = *((uint64_t *) o->device->plugin->get_device_info(
-                               o->device->plugin_index, SR_DI_CUR_SAMPLERATE));
+       if (o->dev->plugin && sr_dev_has_hwcap(o->dev, SR_HWCAP_SAMPLERATE)) {
+               ctx->samplerate = *((uint64_t *) o->dev->plugin->get_dev_info(
+                               o->dev->plugin_index, SR_DI_CUR_SAMPLERATE));
                if (!((samplerate_s = sr_samplerate_string(ctx->samplerate)))) {
                        g_string_free(ctx->header, TRUE);
-                       free(ctx);
+                       g_free(ctx);
                        return SR_ERR;
                }
                g_string_append_printf(ctx->header, vcd_header_comment,
                                 ctx->num_enabled_probes, num_probes, samplerate_s);
-               free(samplerate_s);
+               g_free(samplerate_s);
        }
 
        /* timescale */
@@ -105,11 +107,11 @@ static int init(struct sr_output *o)
                ctx->period = SR_KHZ(1);
        if (!(frequency_s = sr_period_string(ctx->period))) {
                g_string_free(ctx->header, TRUE);
-               free(ctx);
+               g_free(ctx);
                return SR_ERR;
        }
        g_string_append_printf(ctx->header, "$timescale %s $end\n", frequency_s);
-       free(frequency_s);
+       g_free(frequency_s);
 
        /* scope */
        g_string_append_printf(ctx->header, "$scope module %s $end\n", PACKAGE);
@@ -123,9 +125,10 @@ static int init(struct sr_output *o)
        g_string_append(ctx->header, "$upscope $end\n"
                        "$enddefinitions $end\n$dumpvars\n");
 
-       if (!(ctx->prevbits = calloc(sizeof(int), num_probes))) {
+       if (!(ctx->prevbits = g_try_malloc0(sizeof(int) * num_probes))) {
                g_string_free(ctx->header, TRUE);
-               free(ctx);
+               g_free(ctx);
+               sr_err("vcd out: %s: ctx->prevbits malloc failed", __func__);
                return SR_ERR_MALLOC;
        }
 
@@ -141,10 +144,10 @@ static int event(struct sr_output *o, int event_type, char **data_out,
        ctx = o->internal;
        switch (event_type) {
        case SR_DF_END:
-               outbuf = strdup("$dumpoff\n$end\n");
+               outbuf = g_strdup("$dumpoff\n$end\n");
                *data_out = outbuf;
                *length_out = strlen(outbuf);
-               free(o->internal);
+               g_free(o->internal);
                o->internal = NULL;
                break;
        default: