*
x_getenv(
const char* name)
90 char*
env= getenv(name);
96 # define x_getenv getenv 109 CORE_TRACEF((
"CORE_SetLOCK(%p->%p)", old_lk, lk));
110 if(old_lk && old_lk != lk)
137 if(old_lg && old_lg !=
lg)
169(
const char* logfile,
173FILE*
fp= fopen(logfile,
"a");
176(
"Cannot open \"%s\"", logfile));
185(
const char* logfile)
210 unsigned charc = (
unsignedchar)(*
data++);
211 if(c ==
'\a'|| c ==
'\b'|| c ==
'\f'||
212c ==
'\r'|| c ==
'\t'|| c ==
'\v'||
213c ==
'\\'|| c ==
'\''|| c ==
'"'|| c ==
'?') {
215}
else if(c ==
'\n'|| !isascii(c) || !
isprint(c))
224 int flags,
intwidth)
235 for(w = dst, s = src;
size; --
size, ++s) {
236 unsigned charc = (
unsignedchar)(*s);
237 if(width && width <= (
size_t)(dst - w)) {
279|| (
size> 1 && s[ 1] ==
'?')
280|| (s > src && s[-1] ==
'?')) {
285 if(!isascii(c) || !
isprint(c)) {
288&& (
size== 1
|| s[1] <
'0'||
'7'< s[1])
293*dst++ = (char)(
'0'+ v);
298*dst++ = (char)(
'0'+ v);
300*dst++ = (char)(
'0'+ v);
307 if(width && w != dst)
322rv = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
323FORMAT_MESSAGE_FROM_SYSTEM |
324FORMAT_MESSAGE_MAX_WIDTH_MASK |
325FORMAT_MESSAGE_IGNORE_INSERTS,
327MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
330LocalFree((HLOCAL)
str);
340 const char* message,
350 if(!
error&& (!descr || !*descr)) {
359 if(
error> 0 && !descr) {
360 #if defined(NCBI_OS_MSWIN) && defined(_UNICODE) 367 if(!descr || !*descr ||
strncasecmp(descr,
"Unknown ", 8) == 0) {
375 if(descr && *descr) {
376dlen = strlen(descr);
377 while(dlen &&
isspace((
unsigned char) descr[dlen - 1]))
379 if(dlen > 1 && descr[dlen - 1] ==
'.')
386mlen = message ? strlen(message) : 0;
388 if(!(
buf= (
char*)(*dynamic && message
389? realloc((
void*) message, mlen + dlen + 40)
390:
malloc( mlen + dlen + 40)))) {
391 if(*dynamic && message)
392 free((
void*) message);
396 else if(release < 0)
403memcpy(
buf, message, mlen);
406memcpy(
buf+ mlen,
"{error=", 7);
410mlen += (size_t) sprintf(
buf+ mlen,
412 error< 0x10000 ?
"%d%s":
"0x%08X%s",
416 error, &
","[!*descr]);
419memcpy((
char*) memcpy(
buf+ mlen, descr, dlen) + dlen,
"}", 2);
422 else if(release < 0)
434 static const charkRawData_Beg[] =
435 "\n#################### [BEGIN] Raw Data (%lu byte%s):%s";
436 static const charkRawData_End[] =
437 "\n#################### [_END_] Raw Data";
440 size_tdatetime_len = 0;
441 size_tlevel_len = 0;
442 size_tmodule_len = 0;
443 size_tfunction_len = 0;
444 size_tfile_line_len = 0;
450 char*
str, *s, datetime[40];
456 #if !defined(_DEBUG) || defined(NDEBUG) 465 static const chartimefmt[] =
"%m/%d/%y %H:%M:%S ";
467 #ifdef NCBI_CXX_TOOLKIT 468time_t now = time(0);
469 # ifdef HAVE_LOCALTIME_R 470localtime_r(&now, &tm);
472 # ifndef UTIL_LOCALTIME_MT_SAFE 475tm = *localtime(&now);
476 # ifndef UTIL_LOCALTIME_MT_SAFE 483datetime_len = strftime(datetime,
sizeof(datetime), timefmt, &tm);
488level_len = strlen(level) + 2;
492module_len = strlen(mess->
module) + 3;
494 const char*
function= mess->
func;
495 if(
strncmp(
function,
"::", 2) != 0 || *(
function+= 2))
496function_len = strlen(
function) + (module_len ? 2 : 5);
499file_line_len = 12 + strlen(mess->
file) + 11;
514data_len +=
sizeof(kRawData_Beg) + 20 +
sizeof(kRawData_End);
518total_len = (datetime_len + file_line_len + module_len + function_len
520 if(!(
str= (
char*)
malloc(total_len + 1))) {
528memcpy(s, datetime, datetime_len);
532s += sprintf(s,
"\"%s\", line %d: ", mess->
file, mess->
line);
533 if(module_len | function_len)
536memcpy(s, mess->
module, module_len -= 3);
542memcpy(s, mess->
func, function_len -= (module_len ? 2 : 5));
545 if(module_len | function_len) {
550memcpy(s, level, level_len -= 2);
561s += sprintf(s, kRawData_Beg,
564mess->
raw_data?
"\n":
" <NULL>");
573memcpy(s, kRawData_End,
sizeof(kRawData_End));
602FILE*
log= logdata->
fp;
604 size_t len= strlen(
str);
638fclose(logdata->
fp);
640fflush(logdata->
fp);
671 if(
fp&& auto_close)
700 if(old_rg && old_rg != rg)
730 #ifndef NCBI_CXX_TOOLKIT 731 returnNlm_PlatformName();
759 id=
x_getenv(
"NCBI_LOG_SESSION_ID");
765 id=
x_getenv(
"NCBI_LOG_HIT_ID");
768 id=
x_getenv(
"HTTP_TRACESTATE");
771 id=
x_getenv(
"HTTP_TRACEPARENT");
777 id=
id&& *
id?
strdup(
id) : 0;
794 size_t len= strlen(
str);
796 return(
char*) memcpy(
buf,
str,
len);
810 #if defined(NCBI_OS_UNIX) 814 # ifndef NCBI_OS_SOLARIS 815 # define NCBI_GETUSERNAME_MAXBUFSIZE 1024 816 # ifdef HAVE_GETLOGIN_R 817 # ifndef LOGIN_NAME_MAX 818 # ifdef _POSIX_LOGIN_NAME_MAX 819 # define LOGIN_NAME_MAX _POSIX_LOGIN_NAME_MAX 821 # define LOGIN_NAME_MAX 256 824 # define NCBI_GETUSERNAME_BUFSIZE LOGIN_NAME_MAX 826 # ifdef NCBI_HAVE_GETPWUID_R 827 # ifndef NCBI_GETUSERNAME_BUFSIZE 828 # define NCBI_GETUSERNAME_BUFSIZE NCBI_GETUSERNAME_MAXBUFSIZE 830 # if NCBI_GETUSERNAME_BUFSIZE < NCBI_GETUSERNAME_MAXBUFSIZE 831 # undef NCBI_GETUSERNAME_BUFSIZE 832 # define NCBI_GETUSERNAME_BUFSIZE NCBI_GETUSERNAME_MAXBUFSIZE 836 # ifdef NCBI_GETUSERNAME_BUFSIZE 837 chartemp [NCBI_GETUSERNAME_BUFSIZE +
sizeof(*pwd)];
840 #elif defined(NCBI_OS_MSWIN) 842 # define NCBI_GETUSERNAME_BUFSIZE UNLEN 844 # define NCBI_GETUSERNAME_BUFSIZE 256 846 TCHARtemp [NCBI_GETUSERNAME_BUFSIZE + 2];
847 DWORD size=
sizeof(temp)/
sizeof(temp[0]) - 1;
855 # ifdef NCBI_OS_MSWIN 856 if(GetUserName(temp, &
size)) {
857 assert(
size<
sizeof(temp)/
sizeof(temp[0]) - 1);
891 # if defined(NCBI_OS_SOLARIS) || !defined(HAVE_GETLOGIN_R) 895 # ifndef NCBI_OS_SOLARIS 898 if((
login= getlogin()) != 0)
900 # ifndef NCBI_OS_SOLARIS 906 if(getlogin_r(temp,
sizeof(temp) - 1) == 0) {
907temp[
sizeof(temp) - 1] =
'\0';
921 # if defined(NCBI_OS_SOLARIS) \ 922 || (defined(HAVE_GETPWUID) && !defined(NCBI_HAVE_GETPWUID_R)) 924 # ifndef NCBI_OS_SOLARIS 927 if((pwd = getpwuid(uid)) != 0) {
933 # ifndef NCBI_OS_SOLARIS 938 # elif defined(NCBI_HAVE_GETPWUID_R) 939 # if NCBI_HAVE_GETPWUID_R == 4 941pwd = getpwuid_r(uid, (
structpasswd*) temp, temp +
sizeof(*pwd),
942 sizeof(temp) -
sizeof(*pwd));
943 # elif NCBI_HAVE_GETPWUID_R == 5 945 if(getpwuid_r(uid, (
structpasswd*) temp, temp +
sizeof(*pwd),
946 sizeof(temp) -
sizeof(*pwd), &pwd) != 0) {
950 # error "Unknown value of NCBI_HAVE_GETPWUID_R: 4 or 5 expected." 952 if(pwd && pwd->pw_name)
971 returnrv && *rv ? rv : 0;
983 static size_ts_PS = 0;
986 #if defined(NCBI_OS_MSWIN) || defined(NCBI_OS_CYGWIN) 989GetSystemInfo(&
si);
990s_PS = (size_t)
si.dwPageSize;
992 # if defined(_SC_PAGESIZE) 993 # define NCBI_SC_PAGESIZE _SC_PAGESIZE 994 # elif defined(_SC_PAGE_SIZE) 995 # define NCBI_SC_PAGESIZE _SC_PAGE_SIZE 996 # elif defined(NCBI_SC_PAGESIZE) 997 # undef NCBI_SC_PAGESIZE 999 # ifndef NCBI_SC_PAGESIZE 1002 longx = sysconf(NCBI_SC_PAGESIZE);
1003 # undef NCBI_SC_PAGESIZE 1006 # ifdef HAVE_GETPAGESIZE 1007 if((x = getpagesize()) <= 0)
1027 #if defined(NCBI_OS_MSWIN) 1029 #elif defined(NCBI_OS_UNIX) 1030 # if defined(HAVE_NANOSLEEP) 1032ts.tv_sec = (time_t)(
ms/ 1000);
1033ts.tv_nsec = (long) ((
ms% 1000) * 1000000);
1034(void) nanosleep(&ts, 0);
1035 # elif defined(HAVE_POLL_H) && !defined(NCBI_OS_DARWIN) 1036(void)
poll(0, 0, (
int)
ms);
1039tv.tv_sec = (long) (
ms/ 1000);
1040tv.tv_usec = (long)((
ms% 1000) * 1000);
1041(void) select(0, 0, 0, 0, &tv);
1044 # error "Unsupported platform." 1055 #define CRC32_POLY 0x04C11DB7U 1058 #ifdef NCBI_USE_PRECOMPILED_CRC32_TABLES 10610x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9,
10620x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005,
10630x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61,
10640x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD,
10650x4C11DB70, 0x48D0C6C7, 0x4593E01E, 0x4152FDA9,
10660x5F15ADAC, 0x5BD4B01B, 0x569796C2, 0x52568B75,
10670x6A1936C8, 0x6ED82B7F, 0x639B0DA6, 0x675A1011,
10680x791D4014, 0x7DDC5DA3, 0x709F7B7A, 0x745E66CD,
10690x9823B6E0, 0x9CE2AB57, 0x91A18D8E, 0x95609039,
10700x8B27C03C, 0x8FE6DD8B, 0x82A5FB52, 0x8664E6E5,
10710xBE2B5B58, 0xBAEA46EF, 0xB7A96036, 0xB3687D81,
10720xAD2F2D84, 0xA9EE3033, 0xA4AD16EA, 0xA06C0B5D,
10730xD4326D90, 0xD0F37027, 0xDDB056FE, 0xD9714B49,
10740xC7361B4C, 0xC3F706FB, 0xCEB42022, 0xCA753D95,
10750xF23A8028, 0xF6FB9D9F, 0xFBB8BB46, 0xFF79A6F1,
10760xE13EF6F4, 0xE5FFEB43, 0xE8BCCD9A, 0xEC7DD02D,
10770x34867077, 0x30476DC0, 0x3D044B19, 0x39C556AE,
10780x278206AB, 0x23431B1C, 0x2E003DC5, 0x2AC12072,
10790x128E9DCF, 0x164F8078, 0x1B0CA6A1, 0x1FCDBB16,
10800x018AEB13, 0x054BF6A4, 0x0808D07D, 0x0CC9CDCA,
10810x7897AB07, 0x7C56B6B0, 0x71159069, 0x75D48DDE,
10820x6B93DDDB, 0x6F52C06C, 0x6211E6B5, 0x66D0FB02,
10830x5E9F46BF, 0x5A5E5B08, 0x571D7DD1, 0x53DC6066,
10840x4D9B3063, 0x495A2DD4, 0x44190B0D, 0x40D816BA,
10850xACA5C697, 0xA864DB20, 0xA527FDF9, 0xA1E6E04E,
10860xBFA1B04B, 0xBB60ADFC, 0xB6238B25, 0xB2E29692,
10870x8AAD2B2F, 0x8E6C3698, 0x832F1041, 0x87EE0DF6,
10880x99A95DF3, 0x9D684044, 0x902B669D, 0x94EA7B2A,
10890xE0B41DE7, 0xE4750050, 0xE9362689, 0xEDF73B3E,
10900xF3B06B3B, 0xF771768C, 0xFA325055, 0xFEF34DE2,
10910xC6BCF05F, 0xC27DEDE8, 0xCF3ECB31, 0xCBFFD686,
10920xD5B88683, 0xD1799B34, 0xDC3ABDED, 0xD8FBA05A,
10930x690CE0EE, 0x6DCDFD59, 0x608EDB80, 0x644FC637,
10940x7A089632, 0x7EC98B85, 0x738AAD5C, 0x774BB0EB,
10950x4F040D56, 0x4BC510E1, 0x46863638, 0x42472B8F,
10960x5C007B8A, 0x58C1663D, 0x558240E4, 0x51435D53,
10970x251D3B9E, 0x21DC2629, 0x2C9F00F0, 0x285E1D47,
10980x36194D42, 0x32D850F5, 0x3F9B762C, 0x3B5A6B9B,
10990x0315D626, 0x07D4CB91, 0x0A97ED48, 0x0E56F0FF,
11000x1011A0FA, 0x14D0BD4D, 0x19939B94, 0x1D528623,
11010xF12F560E, 0xF5EE4BB9, 0xF8AD6D60, 0xFC6C70D7,
11020xE22B20D2, 0xE6EA3D65, 0xEBA91BBC, 0xEF68060B,
11030xD727BBB6, 0xD3E6A601, 0xDEA580D8, 0xDA649D6F,
11040xC423CD6A, 0xC0E2D0DD, 0xCDA1F604, 0xC960EBB3,
11050xBD3E8D7E, 0xB9FF90C9, 0xB4BCB610, 0xB07DABA7,
11060xAE3AFBA2, 0xAAFBE615, 0xA7B8C0CC, 0xA379DD7B,
11070x9B3660C6, 0x9FF77D71, 0x92B45BA8, 0x9675461F,
11080x8832161A, 0x8CF30BAD, 0x81B02D74, 0x857130C3,
11090x5D8A9099, 0x594B8D2E, 0x5408ABF7, 0x50C9B640,
11100x4E8EE645, 0x4A4FFBF2, 0x470CDD2B, 0x43CDC09C,
11110x7B827D21, 0x7F436096, 0x7200464F, 0x76C15BF8,
11120x68860BFD, 0x6C47164A, 0x61043093, 0x65C52D24,
11130x119B4BE9, 0x155A565E, 0x18197087, 0x1CD86D30,
11140x029F3D35, 0x065E2082, 0x0B1D065B, 0x0FDC1BEC,
11150x3793A651, 0x3352BBE6, 0x3E119D3F, 0x3AD08088,
11160x2497D08D, 0x2056CD3A, 0x2D15EBE3, 0x29D4F654,
11170xC5A92679, 0xC1683BCE, 0xCC2B1D17, 0xC8EA00A0,
11180xD6AD50A5, 0xD26C4D12, 0xDF2F6BCB, 0xDBEE767C,
11190xE3A1CBC1, 0xE760D676, 0xEA23F0AF, 0xEEE2ED18,
11200xF0A5BD1D, 0xF464A0AA, 0xF9278673, 0xFDE69BC4,
11210x89B8FD09, 0x8D79E0BE, 0x803AC667, 0x84FBDBD0,
11220x9ABC8BD5, 0x9E7D9662, 0x933EB0BB, 0x97FFAD0C,
11230xAFB010B1, 0xAB710D06, 0xA6322BDF, 0xA2F33668,
11240xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4
1131 static voids_CRC32_Init(
void)
1138 for(
i= 0;
i< 256; ++
i) {
1139 unsigned intbyteCRC = (
unsigned int)
i<< 24;
1141 for(j = 0; j < 8; ++j) {
1142 if(byteCRC & 0x80000000U) {
1156 const void*ptr,
size_t len)
1158 const unsigned char*
data= (
const unsigned char*) ptr;
1161 #ifndef NCBI_USE_PRECOMPILED_CRC32_TABLES 1165 for(
i= 0;
i<
len; ++
i) {
1166 size_tk = ((checksum >> 24) ^ *
data++) & 0xFF;
1175 #define MOD_ADLER 65521 1176 #define MAXLEN_ADLER 5548 1177 #define ADJUST_ADLER(a) a = (a & 0xFFFF) + (a >> 16) * (0x10000 - MOD_ADLER) 1178 #define FINALIZE_ADLER(a) if (a >= MOD_ADLER) a -= MOD_ADLER 1181 const void* ptr,
size_t len)
1183 const unsigned char*
data= (
const unsigned char*) ptr;
1184 unsigned int a= checksum & 0xFFFF,
b= checksum >> 16;
1198 for(
i=
len>> 2;
i; --
i) {
1217 return(
b<< 16) |
a;
1223 #undef FINALIZE_ADLER 1233 unsigned char*
pad;
1240 if(!(
pad= (
unsigned char*)
malloc(
hash->block_len +
hash->digest_len)))
1243 if(key_len >
hash->block_len) {
1253key_len =
hash->digest_len;
1261 for(
i= 0;
i< key_len; ++
i)
1262 pad[
i] = 0x36 ^ ((
unsigned char*)
key)[
i];
1263 for(;
i<
hash->block_len; ++
i)
1276 for(
i= 0;
i< key_len; ++
i)
1277 pad[
i] = 0x5C ^ ((
unsigned char*)
key)[
i];
1278 for(;
i<
hash->block_len; ++
i)
1305 for(; (p = *
mask++); ++
text) {
1307 if(!c && p !=
'*')
1334c = (char)
tolower((
unsigned char) c);
1337 if(!(
a= *
mask++))
1339 if(*
mask==
'-'&&
mask[1] !=
']') {
1341 if(!(
b= *
mask++))
1347 a= (char)
tolower((
unsigned char)
a);
1348 b= (char)
tolower((
unsigned char)
b);
1350 if(
a<= c && c <=
b)
1353}
while(*
mask!=
']');
1359 if(!(p = *
mask++))
1365c = (char)
tolower((
unsigned char) c);
1366p = (char)
tolower((
unsigned char) p);
1392 static const struct{
1396{
".ncbi.nlm.nih.gov", 17},
1397{
".ncbi.nih.gov", 13}
1399 size_t len= hostname ? strlen(hostname) : 0;
1400 if(
len&& hostname[
len- 1] ==
'.')
1404 for(
i= 0;
i<
sizeof(kEndings) /
sizeof(kEndings[0]); ++
i) {
1405 assert(strlen(kEndings[
i].end) == kEndings[
i].
len);
1406 if(
len> kEndings[
i].
len) {
1407 size_tbeg =
len- kEndings[
i].len;
1408 if(hostname[beg - 1] !=
'.' 1411kEndings[
i].
len) == 0) {
1412hostname[beg] =
'\0';
1424 returnargc == 2 && ((*argv[1] ==
'-'|| *argv[1] ==
'/') &&
1425(
strcmp(argv[1] + 1,
"?") == 0 ||
1433 #if defined(NCBI_OS_MSWIN) || defined(NCBI_OS_CYGWIN) 1434 # define timezone _timezone 1439 #if defined(NCBI_OS_DARWIN) || defined(NCBI_OS_BSD) 1440 statictime_t
timezone= (time_t)(-1);
1444time_t now = time(0);
1446 # ifdef HAVE_LOCALTIME_R 1447gmtime_r(&now, &tm);
1453 assert(tm.tm_isdst == 0);
1462 #ifdef NCBI_OS_MSWIN 1485 int n= MultiByteToWideChar(CP_UTF8, 0,
str, -1,
NULL, 0);
1487s = (
wchar_t*) LocalAlloc(LMEM_FIXED,
n*
sizeof(*s));
1489MultiByteToWideChar(CP_UTF8, 0,
str, -1, s,
n);
ncbi::TMaskedQueryRegions mask
static const char si[8][64]
std::ofstream out("events_result.xml")
main entry point for tests
static const char * str(char *buf, int n)
#define poll(fds, nfds, timeout)
MT_LOCK CORE_GetLOCK(void)
Get the lock handle that is to be used by the core internals.
#define UTIL_PRINTABLE_WIDTH
ELOG_Level
Log severity level.
char * UTIL_PrintableStringEx(const char *src, size_t size, char *dst, int flags, int width)
Create a printable representation of a block of data of the specified size (or, if size is 0,...
void CORE_SetREG(REG rg)
Set the registry (no registry if "rg" is passed zero) â to be used by the core internals.
ECORE_Username
Select which username is the most preferable to obtain from the system.
void * UTIL_GenerateHMAC(const SHASH_Descriptor *hash, const void *text, size_t text_len, const void *key, size_t key_len, void *digest)
Generate an RFC2401 digest (HMAC).
unsigned int UTIL_Adler32_Update(unsigned int checksum, const void *ptr, size_t len)
Calculate/Update Adler-32 checksum NB: Initial checksum is "1".
unsigned int TLOG_FormatFlags
bitwise OR of "ELOG_FormatFlag"
time_t UTIL_Timezone(void)
Return timezone offset (in seconds West of UTC) for the current time zone.
void UTIL_ReleaseBufferOnHeap(const void *ptr)
#define UTIL_TcharToUtf8OnHeap(x)
Conversion from Unicode to UTF8, and back.
TLOG_FormatFlags CORE_SetLOGFormatFlags(TLOG_FormatFlags flags)
int UTIL_MatchesMask(const char *text, const char *mask)
Shortcut for UTIL_MatchesMaskEx(text, mask, 1), that is matching is done case-insensitively for the l...
REG REG_Delete(REG rg)
Decrement internal reference count by 1, and if it reaches 0, then call "rg->cleanup(rg->data)",...
#define UTIL_TcharToUtf8(x)
int CORE_SetLOGFILE_NAME(const char *logfile)
Same as CORE_SetLOGFILE_NAME_Ex(logfile, CORE_LOGFILE_CUTOFF_LEVEL, eLOG_Fatal).
int UTIL_HelpRequested(int argc, char **argv)
Given the main()'s argc and argv return non-zero (true) if the arguments specify that only a help opt...
#define CORE_LOGFILE_CUTOFF_LEVEL
Default CORE LOG cut off log level.
void CORE_SetLOCK(MT_LOCK lk)
Set the MT critical section lock/unlock handler â to be used by the core internals for protection of ...
LOG CORE_GetLOG(void)
Get the log handle that is to be used by the core internals (CORE LOG).
int CORE_SetLOGFILE_NAME_Ex(const char *logfile, ELOG_Level cut_off, ELOG_Level fatal_err)
Same as CORE_SetLOGFILE_Ex(fopen(logfile, "a"), cut_off, fatal_err, TRUE).
void LOG_ToFILE(LOG lg, FILE *fp, int auto_close)
Same as LOG_ToFILEx(lg, fp, eLOG_Trace, eLOG_Fatal, auto_close).
size_t CORE_GetVMPageSize(void)
Obtain virtual memory page size.
void CORE_SetLOGFILE_Ex(FILE *fp, ELOG_Level cut_off, ELOG_Level fatal_err, int auto_close)
Standard logging (CORE LOG) to the specified file stream.
REG CORE_GetREG(void)
Get the registry that is to be used by the core internals.
const char * CORE_GetUsername(char *buf, size_t bufsize)
Equivalent to CORE_GetUsernameEx(buf, bufsize, eNCBI_UsernameLogin) except that it always returns non...
LOG LOG_Create(void *data, FLOG_Handler handler, FLOG_Cleanup cleanup, MT_LOCK lock)
Create a new LOG (with an internal reference count set to 1).
const char * CORE_GetAppName(void)
Obtain current application name (toolkit dependent).
MT_LOCK MT_LOCK_Delete(MT_LOCK lk)
Decrement internal reference count by 1, and if it reaches 0, then destroy the handle,...
const char * CORE_GetUsernameEx(char *buf, size_t bufsize, ECORE_Username username)
Obtain and store in the buffer provided, the best (as possible) user name that matches the requested ...
int UTIL_MatchesMaskEx(const char *text, const char *mask, int ignore_case)
Match a given text with a given pattern mask.
void CORE_Msdelay(unsigned long ms)
Delay execution of the current thread by the specified number of milliseconds.
size_t UTIL_PrintableStringSize(const char *data, size_t size)
Calculate size of buffer needed to store printable representation of the block of data of the specifi...
char * CORE_GetNcbiRequestID(ENcbiRequestID reqid)
Obtain current NCBI request ID (if known, per thread).
char * LOG_ComposeMessage(const SLOG_Message *mess, TLOG_FormatFlags flags)
Compose a message using the "call_data" info.
void CORE_SetLOG(LOG lg)
Set the log handle (no logging if "lg" is passed zero) â to be used by the core internals (CORE LOG).
void CORE_SetLOGFILE(FILE *fp, int auto_close)
Same as CORE_SetLOGFILE_Ex(fp, CORE_LOGFILE_CUTOFF_LEVEL, eLOG_Fatal, auto_close).
char * UTIL_NcbiLocalHostName(char *hostname)
Cut off well-known NCBI domain suffix out of the passed "hostname".
#define UTIL_Utf8ToTchar(x)
LOG LOG_Reset(LOG lg, void *data, FLOG_Handler handler, FLOG_Cleanup cleanup)
Reset the "lg" to use the new "data", "handler" and "cleanup".
#define UTIL_ReleaseBuffer(x)
const char * LOG_LevelStr(ELOG_Level level)
Obtain verbal representation of an enum level value.
const char * NcbiMessagePlusError(int *dynamic, const char *message, int error, const char *descr)
Add current "error" (and maybe its description) to the message: <message>[ {error=[[<error>][,...
unsigned int UTIL_CRC32_Update(unsigned int checksum, const void *ptr, size_t len)
Calculate/Update CRC-32 checksum NB: Initial checksum is "0".
#define UTIL_PRINTABLE_WIDTH_MIN
LOG LOG_Delete(LOG lg)
Decrement internal reference count by 1, and if it reaches 0, then call "lg->cleanup(lg->data)",...
const char * CORE_GetPlatform(void)
Return NCBI platrofm ID (if known).
void LOG_ToFILE_Ex(LOG lg, FILE *fp, ELOG_Level cut_off, ELOG_Level fatal_err, int auto_close)
LOG_Reset specialized to log to a "FILE*" stream using LOG_ComposeMessage.
ENcbiRequestID
NCBI request ID enumerator.
@ eCORE_UsernameLogin
login UID
@ eCORE_UsernameCurrent
process UID
@ eCORE_UsernameReal
real UID
@ fUTIL_PrintableNoNewLine
Do not include graphical newlines.
@ fUTIL_PrintableFullOctal
No contactions in octals \ooo.
@ fLOG_FullOctal
do not do reduction in octal data bytes
@ fLOG_Default
fLOG_Short if NDEBUG, else fLOG_Full
@ fLOG_None
nothing but spec'd parts, msg and data
@ fLOG_OmitNoteLevel
do not add "NOTE" if level is eLOG_Note
@ eNcbiRequestID_SID
NCBI Session ID.
@ eNcbiTraceState
OpenTelemetry tracestate header.
@ eNcbiRequestID_HitID
NCBI Hit ID.
@ eNcbiTraceParent
OpenTelemetry traceparent header.
unsigned int
A callback function used to compare two keys in a database.
static void text(MDB_val *v)
const struct ncbi::grid::netcache::search::fields::SIZE size
const struct ncbi::grid::netcache::search::fields::KEY key
int strncmp(const char *str1, const char *str2, size_t count)
int strcmp(const char *str1, const char *str2)
FNcbiGetRequestID g_CORE_GetRequestID
FNcbiGetAppName g_CORE_GetAppName
#define CORE_DEBUG_ARG(arg)
#define CORE_LOGF_ERRNO_X(subcode, level, error, fmt_args)
#define CORE_TRACEF(fmt_args)
static int x_MatchesMask(const char *text, const char *mask, int ignore_case)
static const unsigned int s_CRC32Table[256]
static const char * s_WinStrerror(DWORD error)
#define NCBI_DEFAULT_PAGE_SIZE
#define FINALIZE_ADLER(a)
static TLOG_FormatFlags s_LogFormatFlags
static void s_LOG_FileHandler(void *data, const SLOG_Message *mess)
static void s_LOG_FileCleanup(void *data)
static const char kOutOfMemory[]
static char * x_SaveStr(const char *str, char *buf, size_t bufsize)
static PCRE2_SIZE bufsize
static int message_len(const char *message, int offset)
static SLJIT_INLINE sljit_ins ms(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins st(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins lg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
Message and miscellaneous data to pass to log post callback FLOG_Handler.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4