40 lines
		
	
	
		
			628 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			628 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "base/error_string.h"
 | 
						|
 | 
						|
#include <errno.h>
 | 
						|
#include <stdexcept>
 | 
						|
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
using namespace std;
 | 
						|
 | 
						|
//----------------------------------------------------------------
 | 
						|
 | 
						|
#ifdef STRERROR_R_CHAR_P
 | 
						|
 | 
						|
string base::error_string(int err)
 | 
						|
{
 | 
						|
	char *ptr;
 | 
						|
	char buffer[128];
 | 
						|
 | 
						|
	ptr = strerror_r(errno, buffer, sizeof(buffer));
 | 
						|
	return string(ptr);
 | 
						|
}
 | 
						|
 | 
						|
#else
 | 
						|
 | 
						|
string base::error_string(int err)
 | 
						|
{
 | 
						|
	int r;
 | 
						|
	char buffer[128];
 | 
						|
 | 
						|
	r = strerror_r(errno, buffer, sizeof(buffer));
 | 
						|
	if (r)
 | 
						|
		throw runtime_error("strerror_r failed");
 | 
						|
 | 
						|
	return string(buffer);
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
//----------------------------------------------------------------
 |