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