struct bt_ctf_clock *bt_ctf_clock_create(const char *name) { int ret; struct bt_ctf_clock *clock = NULL; clock = _bt_ctf_clock_create(); if (!clock) { goto error; } ret = bt_ctf_clock_set_name(clock, name); if (ret) { goto error_destroy; } ret = babeltrace_uuid_generate(clock->uuid); if (ret) { goto error_destroy; } clock->uuid_set = 1; return clock; error_destroy: bt_ctf_clock_destroy(&clock->ref_count); error: return NULL; }
int main(int argc, char **argv) { int fd, metadata_fd, ret; DIR *dir; int dir_fd; FILE *metadata_fp; ret = parse_args(argc, argv); if (ret) { fprintf(stderr, "Error: invalid argument.\n"); usage(stderr); goto error; } if (s_help) { usage(stdout); exit(EXIT_SUCCESS); } ret = mkdir(s_outputname, S_IRWXU|S_IRWXG); if (ret) { perror("mkdir"); goto error; } dir = opendir(s_outputname); if (!dir) { perror("opendir"); goto error_rmdir; } dir_fd = dirfd(dir); if (dir_fd < 0) { perror("dirfd"); goto error_closedir; } fd = openat(dir_fd, "datastream", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP); if (fd < 0) { perror("openat"); goto error_closedirfd; } metadata_fd = openat(dir_fd, "metadata", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP); if (metadata_fd < 0) { perror("openat"); goto error_closedatastream; } metadata_fp = fdopen(metadata_fd, "w"); if (!metadata_fp) { perror("fdopen"); goto error_closemetadatafd; } babeltrace_uuid_generate(s_uuid); print_metadata(metadata_fp); trace_text(stdin, fd); ret = close(fd); if (ret) perror("close"); 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) perror("close"); error_closedir: ret = closedir(dir); if (ret) perror("closedir"); error_rmdir: ret = rmdir(s_outputname); if (ret) perror("rmdir"); error: exit(EXIT_FAILURE); }