X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=tests%2Ftest-dummytrace.c;fp=tests%2Ftest-dummytrace.c;h=aa855cc7cd95a2a9a62430e995a20399364d49fd;hp=49a650e46ac7ef897fd697e529c83294f0f67732;hb=b522ac189ce3ed368594d466461d2eb33025f75d;hpb=989c73bc7635ba348a372649fa1ccb2d8250be63 diff --git a/tests/test-dummytrace.c b/tests/test-dummytrace.c index 49a650e4..aa855cc7 100644 --- a/tests/test-dummytrace.c +++ b/tests/test-dummytrace.c @@ -1,7 +1,7 @@ /* - * text-to-ctf.c + * babeltrace-log.c * - * BabelTrace - Convert Text to CTF + * BabelTrace - Convert Text Log to CTF * * Copyright 2010, 2011 - Mathieu Desnoyers * @@ -35,14 +35,19 @@ #include #include -static const char metadata[] = +#ifndef UUID_STR_LEN +#define UUID_STR_LEN 37 /* With \0 */ +#endif + +/* Metadata format string */ +static const char metadata_fmt[] = "typealias integer { size = 8; align = 8; signed = false; } := uint8_t;\n" "typealias integer { size = 32; align = 32; signed = false; } := uint32_t;\n" "\n" "trace {\n" " major = %s;\n" /* major (e.g. 0) */ " minor = %s;\n" /* minor (e.g. 1) */ -" uuid = %s;\n" /* UUID */ +" uuid = \"%s\";\n" /* UUID */ " byte_order = %s;\n" /* be or le */ " packet.header := struct {\n" " uint32_t magic;\n" @@ -66,6 +71,20 @@ int babeltrace_debug, babeltrace_verbose; static uuid_t s_uuid; +static +void print_metadata(FILE *fp) +{ + char uuid_str[UUID_STR_LEN]; + + uuid_unparse(s_uuid, uuid_str); + fprintf(fp, metadata_fmt, + __stringify(BABELTRACE_VERSION_MAJOR), + __stringify(BABELTRACE_VERSION_MINOR), + uuid_str, + BYTE_ORDER == LITTLE_ENDIAN ? "le" : "be"); +} + + static void write_packet_header(struct ctf_stream_pos *pos, uuid_t uuid) { @@ -188,10 +207,11 @@ static void usage(FILE *fp) int main(int argc, char **argv) { - int fd, ret; + int fd, metadata_fd, ret; char *outputname; DIR *dir; int dir_fd; + FILE *metadata_fp; if (argc < 2) { usage(stdout); @@ -223,12 +243,34 @@ int main(int argc, char **argv) goto error_closedirfd; } + metadata_fd = openat(dir_fd, "metadata", O_RDWR|O_CREAT, + S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP); + if (fd < 0) { + perror("openat"); + goto error_closedatastream; + } + metadata_fp = fdopen(metadata_fd, "w"); + if (!metadata_fp) { + perror("fdopen"); + goto error_closemetadatafd; + } + + uuid_generate(s_uuid); + print_metadata(metadata_fp); trace_text(stdin, fd); close(fd); exit(EXIT_SUCCESS); /* error handling */ +error_closemetadatafd: + ret = close(metadata_fd); + if (ret) + perror("close"); +error_closedatastream: + ret = close(fd); + if (ret) + perror("close"); error_closedirfd: ret = close(dir_fd); if (ret)