blob: 66e2be21b75e60bef70a88f438b0527a9742e3e3 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIB_FDIO_FDIO_UNISTD_H_
#define LIB_FDIO_FDIO_UNISTD_H_
#include <lib/fdio/unsafe.h>
#include <cerrno>
// needed for e.g. fdio_release; see fd_to_io below.
#include "internal.h"
// fd_to_io calls fdio_acquire on the fd, must call fdio_release() when done.
#define fd_to_io(n) fdio_unsafe_fd_to_io(n)
int fdio_status_to_errno(zx_status_t status);
// set errno to the closest match for error and return -1
static inline int ERROR(zx_status_t error) {
errno = fdio_status_to_errno(error);
return -1;
}
// if status is negative, set errno as appropriate and return -1
// otherwise return status
static inline int STATUS(zx_status_t status) {
if (status < 0) {
errno = fdio_status_to_errno(status);
return -1;
} else {
return status;
}
}
// set errno to e, return -1
static inline int ERRNO(int e) {
errno = e;
return -1;
}
#endif // LIB_FDIO_FDIO_UNISTD_H_