2022-03-05 09:12:21 -05:00
|
|
|
#include "osunique.hpp"
|
|
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
|
|
|
|
|
auto asciitime(char* buffer, size_t count, const struct tm& tmsource)->char* {
|
|
|
|
|
asctime_s(buffer, count, &tmsource);
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
|
|
|
|
// Beware, MSVC localtime_s is not the same as the standard localtime_s
|
|
|
|
|
auto lcltime (const time_t& source, struct tm& dest)->struct tm* {
|
|
|
|
|
localtime_s(&dest, &source);
|
|
|
|
|
return &dest;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto strcopy(char* dest, rsize_t size, const char* src)->void {
|
|
|
|
|
strcpy_s(dest, size, src);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto strncopy(char* dest, size_t size, const char* src,size_t count )->void {
|
2022-03-22 10:43:27 +08:00
|
|
|
strncpy(dest, src, count);
|
2022-03-05 09:12:21 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto mstrcat(char* dest, size_t size, const char* src) ->char* {
|
|
|
|
|
strcat_s(dest, size, src);
|
|
|
|
|
return dest;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto mgmtime(struct tm* dest, const time_t* timer)->struct tm* {
|
|
|
|
|
gmtime_s(dest, timer);
|
|
|
|
|
return dest;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
auto mctime(char* buffer, size_t size, const time_t* timer) ->char* {
|
|
|
|
|
ctime_s(buffer, size, timer);
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
|
|
|
|
auto mstrerror(char* buffer, size_t size, int errornum)->char* {
|
|
|
|
|
strerror_s(buffer, size, errornum);
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
|
|
|
|
auto mfopen(FILE** stream, const char* filename, const char* mode)->FILE* {
|
|
|
|
|
fopen_s(stream, filename, mode);
|
|
|
|
|
return *stream;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
auto asciitime(char* buffer, size_t count, const struct tm& tmsource)->char* {
|
|
|
|
|
return asctime_r(&tmsource, buffer);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto lcltime(const time_t& source, struct tm& dest)->struct tm* {
|
|
|
|
|
localtime_r(&source, &dest);
|
|
|
|
|
return &dest;
|
|
|
|
|
}
|
|
|
|
|
auto strcopy(char* dest, size_t size, const char* src)->void {
|
|
|
|
|
strcpy(dest, src);
|
|
|
|
|
}
|
|
|
|
|
auto strncopy(char* dest, size_t size, const char* src, size_t count)->void {
|
2022-03-05 09:16:51 -05:00
|
|
|
strncpy(dest, src, count );
|
2022-03-05 09:12:21 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto mstrcat(char* dest, size_t size, const char* src) ->char* {
|
2022-03-05 09:16:51 -05:00
|
|
|
return strcat(dest, src);
|
2022-03-05 09:12:21 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto mgmtime(struct tm* dest, const time_t* timer)->struct tm* {
|
2022-03-22 10:43:27 +08:00
|
|
|
return gmtime_r(timer, dest);
|
2022-03-05 09:12:21 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto mctime(char* buffer, size_t size, const time_t* timer) ->char* {
|
2022-03-22 10:43:27 +08:00
|
|
|
return ctime_r(timer, buffer);
|
2022-03-05 09:12:21 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto mstrerror(char* buffer, size_t size, int errornum)->char* {
|
2022-03-22 10:43:27 +08:00
|
|
|
return strerror(errornum);
|
2022-03-05 09:12:21 -05:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
auto mfopen(FILE** stream, const char* filename, const char* mode)->FILE* {
|
|
|
|
|
*stream = fopen(filename, mode);
|
|
|
|
|
return *stream;
|
|
|
|
|
}
|
2022-03-05 09:16:51 -05:00
|
|
|
#endif
|