17c478bdstevel@tonic-gate/*
27c478bdstevel@tonic-gate * CDDL HEADER START
37c478bdstevel@tonic-gate *
47c478bdstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bdstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bdstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bdstevel@tonic-gate * with the License.
87c478bdstevel@tonic-gate *
97c478bdstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bdstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bdstevel@tonic-gate * See the License for the specific language governing permissions
127c478bdstevel@tonic-gate * and limitations under the License.
137c478bdstevel@tonic-gate *
147c478bdstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bdstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bdstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bdstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bdstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bdstevel@tonic-gate *
207c478bdstevel@tonic-gate * CDDL HEADER END
217c478bdstevel@tonic-gate */
227c478bdstevel@tonic-gate/*
237c478bdstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
247c478bdstevel@tonic-gate * Use is subject to license terms.
252becb8cRobert Mustacchi * Copyright (c) 2015, Joyent, Inc.
267c478bdstevel@tonic-gate */
277c478bdstevel@tonic-gate
287c478bdstevel@tonic-gate/*
297c478bdstevel@tonic-gate * libctf open/close interposition layer
307c478bdstevel@tonic-gate *
317c478bdstevel@tonic-gate * The mdb flavor of the interposition layer serves only to make ctf_bufopen
327c478bdstevel@tonic-gate * calls easier.  The kmdb flavor (the real reason for the layer) has more
337c478bdstevel@tonic-gate * intelligence behind mdb_ctf_open() than does this one.
347c478bdstevel@tonic-gate */
357c478bdstevel@tonic-gate
367c478bdstevel@tonic-gate#include <mdb/mdb_ctf.h>
377c478bdstevel@tonic-gate#include <libctf.h>
382becb8cRobert Mustacchi#include <sys/types.h>
392becb8cRobert Mustacchi#include <sys/stat.h>
402becb8cRobert Mustacchi#include <fcntl.h>
412becb8cRobert Mustacchi#include <errno.h>
422becb8cRobert Mustacchi#include <unistd.h>
437c478bdstevel@tonic-gate
447c478bdstevel@tonic-gatectf_file_t *
457c478bdstevel@tonic-gatemdb_ctf_open(const char *filename, int *errp)
467c478bdstevel@tonic-gate{
477c478bdstevel@tonic-gate	return (ctf_open(filename, errp));
487c478bdstevel@tonic-gate}
497c478bdstevel@tonic-gate
507c478bdstevel@tonic-gatevoid
517c478bdstevel@tonic-gatemdb_ctf_close(ctf_file_t *fp)
527c478bdstevel@tonic-gate{
537c478bdstevel@tonic-gate	ctf_close(fp);
547c478bdstevel@tonic-gate}
552becb8cRobert Mustacchi
562becb8cRobert Mustacchiint
572becb8cRobert Mustacchimdb_ctf_write(const char *filename, ctf_file_t *fp)
582becb8cRobert Mustacchi{
592becb8cRobert Mustacchi	int fd, ret;
602becb8cRobert Mustacchi
612becb8cRobert Mustacchi	if ((fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, 0644)) < 0)
622becb8cRobert Mustacchi		return (errno);
632becb8cRobert Mustacchi
642becb8cRobert Mustacchi	if (ctf_write(fp, fd) == CTF_ERR) {
652becb8cRobert Mustacchi		(void) close(fd);
662becb8cRobert Mustacchi		return (CTF_ERR);
672becb8cRobert Mustacchi	}
682becb8cRobert Mustacchi
692becb8cRobert Mustacchi	ret = close(fd);
702becb8cRobert Mustacchi	if (ret != 0)
712becb8cRobert Mustacchi		ret = errno;
722becb8cRobert Mustacchi	return (ret);
732becb8cRobert Mustacchi}
74