mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 * SRT - Secure, Reliable, Transport
 | 
						|
 * Copyright (c) 2018 Haivision Systems Inc.
 | 
						|
 * 
 | 
						|
 * This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | 
						|
 * 
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
/*****************************************************************************
 | 
						|
written by
 | 
						|
   Haivision Systems Inc.
 | 
						|
 *****************************************************************************/
 | 
						|
 | 
						|
#ifndef INC_SRT_COMPAT_H
 | 
						|
#define INC_SRT_COMPAT_H
 | 
						|
 | 
						|
#include <stddef.h>
 | 
						|
#include <time.h>
 | 
						|
 | 
						|
#ifndef SRT_API
 | 
						|
#ifdef _WIN32
 | 
						|
   #ifndef __MINGW32__
 | 
						|
      #ifdef SRT_DYNAMIC
 | 
						|
         #ifdef SRT_EXPORTS
 | 
						|
            #define SRT_API __declspec(dllexport)
 | 
						|
         #else
 | 
						|
            #define SRT_API __declspec(dllimport)
 | 
						|
         #endif
 | 
						|
      #else
 | 
						|
         #define SRT_API
 | 
						|
      #endif
 | 
						|
   #else
 | 
						|
      #define SRT_API
 | 
						|
   #endif
 | 
						|
#else
 | 
						|
   #define SRT_API __attribute__ ((visibility("default")))
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef _WIN32
 | 
						|
   // https://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx
 | 
						|
   // printf() Format for ssize_t
 | 
						|
   #if !defined(PRIzd)
 | 
						|
      #define PRIzd "Id"
 | 
						|
   #endif
 | 
						|
   // printf() Format for size_t
 | 
						|
   #if !defined(PRIzu)
 | 
						|
      #define PRIzu "Iu"
 | 
						|
   #endif
 | 
						|
#else
 | 
						|
   // http://www.gnu.org/software/libc/manual/html_node/Integer-Conversions.html
 | 
						|
   // printf() Format for ssize_t
 | 
						|
   #if !defined(PRIzd)
 | 
						|
      #define PRIzd "zd"
 | 
						|
   #endif
 | 
						|
   // printf() Format for size_t
 | 
						|
   #if !defined(PRIzu)
 | 
						|
      #define PRIzu "zu"
 | 
						|
   #endif
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/* Ensures that we store the error in the buffer and return the bufer. */
 | 
						|
SRT_API const char * SysStrError(int errnum, char * buf, size_t buflen);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
} // extern C
 | 
						|
 | 
						|
 | 
						|
// Extra C++ stuff. Included only in C++ mode.
 | 
						|
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include <cstring>
 | 
						|
inline std::string SysStrError(int errnum)
 | 
						|
{
 | 
						|
    char buf[1024];
 | 
						|
    return SysStrError(errnum, buf, 1024);
 | 
						|
}
 | 
						|
 | 
						|
inline struct tm SysLocalTime(time_t tt)
 | 
						|
{
 | 
						|
    struct tm tms;
 | 
						|
    memset(&tms, 0, sizeof tms);
 | 
						|
#ifdef _WIN32
 | 
						|
	errno_t rr = localtime_s(&tms, &tt);
 | 
						|
	if (rr == 0)
 | 
						|
		return tms;
 | 
						|
#else
 | 
						|
 | 
						|
    // Ignore the error, state that if something
 | 
						|
    // happened, you simply have a pre-cleared tms.
 | 
						|
    localtime_r(&tt, &tms);
 | 
						|
#endif
 | 
						|
 | 
						|
    return tms;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif // defined C++
 | 
						|
 | 
						|
#endif // INC_SRT_COMPAT_H
 |