Fix: add missing SIGTERM and SIGINT handler
[babeltrace.git] / formats / ctf / writer / writer.c
index 7490715eb7ffc4f707ec84c8249b6de0cc41c673..a3ca263adeca7a9eb934ea6dd74432262e7e02b9 100644 (file)
@@ -115,8 +115,7 @@ struct bt_ctf_writer *bt_ctf_writer_create(const char *path)
                goto error_destroy;
        }
 
-       writer->trace_dir_fd = open(path, O_RDONLY | O_DIRECTORY,
-               S_IRWXU | S_IRWXG);
+       writer->trace_dir_fd = open(path, O_RDONLY, S_IRWXU | S_IRWXG);
        if (writer->trace_dir_fd < 0) {
                perror("open");
                goto error_destroy;
@@ -168,11 +167,17 @@ void bt_ctf_writer_destroy(struct bt_ctf_ref *ref)
        }
 
        if (writer->trace_dir_fd > 0) {
-               close(writer->trace_dir_fd);
+               if (close(writer->trace_dir_fd)) {
+                       perror("close");
+                       abort();
+               }
        }
 
        if (writer->metadata_fd > 0) {
-               close(writer->metadata_fd);
+               if (close(writer->metadata_fd)) {
+                       perror("close");
+                       abort();
+               }
        }
 
        if (writer->environment) {
@@ -355,12 +360,14 @@ static
 void append_trace_metadata(struct bt_ctf_writer *writer,
                struct metadata_context *context)
 {
+       unsigned char *uuid = writer->uuid;
+       int ret;
+
        g_string_append(context->string, "trace {\n");
 
        g_string_append(context->string, "\tmajor = 1;\n");
        g_string_append(context->string, "\tminor = 8;\n");
 
-       unsigned char *uuid = writer->uuid;
        g_string_append_printf(context->string,
                "\tuuid = \"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\";\n",
                uuid[0], uuid[1], uuid[2], uuid[3],
@@ -373,7 +380,9 @@ void append_trace_metadata(struct bt_ctf_writer *writer,
        g_string_append(context->string, "\tpacket.header := ");
        context->current_indentation_level++;
        g_string_assign(context->field_name, "");
-       bt_ctf_field_type_serialize(writer->trace_packet_header_type, context);
+       ret = bt_ctf_field_type_serialize(writer->trace_packet_header_type,
+               context);
+       assert(!ret);
        context->current_indentation_level--;
 
        g_string_append(context->string, ";\n};\n\n");
@@ -551,8 +560,9 @@ int validate_identifier(const char *input_string)
 
        token = strtok_r(string, " ", &save_ptr);
        while (token) {
-               if (g_hash_table_contains(reserved_keywords_set,
-                       GINT_TO_POINTER(g_quark_from_string(token)))) {
+               if (g_hash_table_lookup_extended(reserved_keywords_set,
+                       GINT_TO_POINTER(g_quark_from_string(token)),
+                       NULL, NULL)) {
                        ret = -1;
                        goto end;
                }
@@ -728,8 +738,10 @@ void writer_init(void)
 
        reserved_keywords_set = g_hash_table_new(g_direct_hash, g_direct_equal);
        for (i = 0; i < reserved_keywords_count; i++) {
-               g_hash_table_add(reserved_keywords_set,
-               GINT_TO_POINTER(g_quark_from_string(reserved_keywords_str[i])));
+               gpointer quark = GINT_TO_POINTER(g_quark_from_string(
+                       reserved_keywords_str[i]));
+
+               g_hash_table_insert(reserved_keywords_set, quark, quark);
        }
 
        init_done = 1;
This page took 0.025076 seconds and 4 git commands to generate.