153ca1f3190680f3e86aebe0f72f7918d63f71e0dCharles Davis//===- llvm/Support/Errno.h - Portable+convenient errno handling -*- C++ -*-===//
2ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//
3ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//                     The LLVM Compiler Infrastructure
4ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//
5ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin// This file is distributed under the University of Illinois Open Source
6ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin// License. See LICENSE.TXT for details.
7ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//
8ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//===----------------------------------------------------------------------===//
9ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//
10ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin// This file declares some portable and convenient functions to deal with errno.
11ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//
12ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin//===----------------------------------------------------------------------===//
13ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
14674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#ifndef LLVM_SUPPORT_ERRNO_H
15674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#define LLVM_SUPPORT_ERRNO_H
16ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
17ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin#include <string>
18ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
19ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskinnamespace llvm {
20ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskinnamespace sys {
21ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
22ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin/// Returns a string representation of the errno value, using whatever
23ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin/// thread-safe variant of strerror() is available.  Be sure to call this
24ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin/// immediately after the function that set errno, or errno may have been
25ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin/// overwritten by an intervening call.
26ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskinstd::string StrError();
27ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
28ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin/// Like the no-argument version above, but uses \p errnum instead of errno.
29ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskinstd::string StrError(int errnum);
30ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
31ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin}  // namespace sys
32ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin}  // namespace llvm
33ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin
34ed1c0ffe0b2287deaee7cba7506c93aa34c6d4b7Jeffrey Yasskin#endif  // LLVM_SYSTEM_ERRNO_H
35