- New NXSL built-in functions added: time and substr
[public/netxms.git] / include / nms_util.h
CommitLineData
3d1058ed 1/* $Id: nms_util.h,v 1.102 2007-03-23 15:59:04 victor Exp $ */
70fed300 2
e9246d26 3/*
7ac71e60 4** NetXMS - Network Management System
e9246d26
VK
5** Copyright (C) 2003 Victor Kirhenshtein
6**
7** This program is free software; you can redistribute it and/or modify
8** it under the terms of the GNU General Public License as published by
9** the Free Software Foundation; either version 2 of the License, or
10** (at your option) any later version.
11**
12** This program is distributed in the hope that it will be useful,
13** but WITHOUT ANY WARRANTY; without even the implied warranty of
14** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15** GNU General Public License for more details.
16**
17** You should have received a copy of the GNU General Public License
18** along with this program; if not, write to the Free Software
19** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20**
21** $module: nms_util.h
22**
23**/
24
25#ifndef _nms_util_h_
26#define _nms_util_h_
27
64584976
VK
28#ifdef _WIN32
29#ifdef LIBNETXMS_EXPORTS
30#define LIBNETXMS_EXPORTABLE __declspec(dllexport)
31#else
32#define LIBNETXMS_EXPORTABLE __declspec(dllimport)
33#endif
34#else /* _WIN32 */
35#define LIBNETXMS_EXPORTABLE
36#endif
37
38
e9246d26
VK
39#include <nms_common.h>
40#include <nms_cscp.h>
953dfe76 41#include <nms_threads.h>
64584976 42#include <time.h>
e9246d26 43
6d8aee95
VK
44#if HAVE_BYTESWAP_H
45#include <byteswap.h>
46#endif
47
48
49//
50// Sirial communications
51//
52
53#ifdef _WIN32
54
55#define FLOW_NONE 0
56#define FLOW_SOFTWARE 1
57#define FLOW_HARDWARE 2
58
59#else /* _WIN32 */
60
70fed300
AK
61#ifdef HAVE_TERMIOS_H
62# include <termios.h>
63#else
64# error termios.h not found
65#endif
66
6d8aee95
VK
67#endif /* _WIN32 */
68
69
70//
71// Common constants
72//
f52be742 73
5d63b3c1 74#define INVALID_INDEX 0xFFFFFFFF
28dd92c9 75#define CSCP_TEMP_BUF_SIZE 65536
89bfdd9c 76#define MD5_DIGEST_SIZE 16
d0b249a8 77#define SHA1_DIGEST_SIZE 20
5d63b3c1
VK
78
79
66c04cc7
VK
80//
81// Return codes for IcmpPing()
82//
83
84#define ICMP_SUCCESS 0
85#define ICMP_UNREACHEABLE 1
86#define ICMP_TIMEOUT 2
87#define ICMP_RAW_SOCK_FAILED 3
88
89
dcb44c9a 90//
4826c8a5 91// Token types for configuration loader
dcb44c9a
VK
92//
93
4826c8a5
VK
94#define CT_LONG 0
95#define CT_STRING 1
96#define CT_STRING_LIST 2
97#define CT_END_OF_LIST 3
98#define CT_BOOLEAN 4
99#define CT_WORD 5
fc935a60 100#define CT_IGNORE 6
4826c8a5
VK
101
102
103//
104// Return codes for NxLoadConfig()
105//
106
107#define NXCFG_ERR_OK 0
108#define NXCFG_ERR_NOFILE 1
109#define NXCFG_ERR_SYNTAX 2
110
111
b160350d
VK
112//
113// Class for serial communications
114//
115
116#ifdef __cplusplus
117
118#ifndef _WIN32
119enum
120{
121 NOPARITY,
122 ODDPARITY,
123 EVENPARITY,
124 ONESTOPBIT,
125 TWOSTOPBITS
126};
127
70fed300
AK
128enum
129{
130 FLOW_NONE,
131 FLOW_HARDWARE,
132 FLOW_SOFTWARE
133};
134
b160350d
VK
135#ifndef INVALID_HANDLE_VALUE
136#define INVALID_HANDLE_VALUE (-1)
137#endif
138#endif /* _WIN32 */
139
140class LIBNETXMS_EXPORTABLE Serial
141{
142public:
143 Serial(void);
144 ~Serial(void);
145
146 bool Open(TCHAR *pszPort);
147 void Close(void);
148 void SetTimeout(int nTimeout);
f3a581d0
AK
149 int Read(char *pBuff, int nSize); /* waits up to timeout and do single read */
150 int ReadAll(char *pBuff, int nSize); /* read until timeout or out of space */
b160350d
VK
151 bool Write(char *pBuff, int nSize);
152 void Flush(void);
153 bool Set(int nSpeed, int nDataBits, int nParity, int nStopBits);
70fed300 154 bool Set(int nSpeed, int nDataBits, int nParity, int nStopBits, int nFlowControl);
b160350d
VK
155 bool Restart(void);
156
157private:
158 TCHAR *m_pszPort;
159 int m_nTimeout;
160 int m_nSpeed;
161 int m_nDataBits;
162 int m_nStopBits;
163 int m_nParity;
70fed300 164 int m_nFlowControl;
b160350d
VK
165
166#ifndef _WIN32
167 int m_hPort;
70fed300 168 struct termios m_originalSettings;
b160350d
VK
169#else
170 HANDLE m_hPort;
171#endif
172};
173
ff214673
VK
174
175//
176// Class for table data storage
177//
178
179class LIBNETXMS_EXPORTABLE Table
180{
181private:
182 int m_nNumRows;
183 int m_nNumCols;
184 TCHAR **m_ppData;
185 TCHAR **m_ppColNames;
186
187public:
188 Table();
189 ~Table();
190
191 int GetNumRows(void) { return m_nNumRows; }
192 int GetNumColumns(void) { return m_nNumCols; }
193
194 void AddColumn(TCHAR *pszName);
195 void AddRow(void);
196
197 void SetAt(int nRow, int nCol, TCHAR *pszData);
198 void SetAt(int nRow, int nCol, LONG nData);
199 void SetAt(int nRow, int nCol, DWORD dwData);
200 void SetAt(int nRow, int nCol, double dData);
201 void SetAt(int nRow, int nCol, INT64 nData);
202 void SetAt(int nRow, int nCol, QWORD qwData);
203
204 void Set(int nCol, TCHAR *pszData) { SetAt(m_nNumRows - 1, nCol, pszData); }
205 void Set(int nCol, LONG nData) { SetAt(m_nNumRows - 1, nCol, nData); }
206 void Set(int nCol, DWORD dwData) { SetAt(m_nNumRows - 1, nCol, dwData); }
207 void Set(int nCol, double dData) { SetAt(m_nNumRows - 1, nCol, dData); }
208 void Set(int nCol, INT64 nData) { SetAt(m_nNumRows - 1, nCol, nData); }
209 void Set(int nCol, QWORD qwData) { SetAt(m_nNumRows - 1, nCol, qwData); }
210
211 TCHAR *GetAsString(int nRow, int nCol);
212 LONG GetAsInt(int nRow, int nCol);
213 DWORD GetAsUInt(int nRow, int nCol);
214 INT64 GetAsInt64(int nRow, int nCol);
215 QWORD GetAsUInt64(int nRow, int nCol);
216 double GetAsDouble(int nRow, int nCol);
217};
218
8bad8476
VK
219
220//
221// Dynamic string class
222//
223
224class LIBNETXMS_EXPORTABLE String
225{
226protected:
227 TCHAR *m_pszBuffer;
228 DWORD m_dwBufSize;
229
230public:
231 String();
232 ~String();
233
234 void SetBuffer(TCHAR *pszBuffer);
235
236 const String& operator =(TCHAR *pszStr);
237 const String& operator +=(TCHAR *pszStr);
238 operator TCHAR*() { return CHECK_NULL_EX(m_pszBuffer); }
239
240 void AddFormattedString(TCHAR *pszFormat, ...);
241 void EscapeCharacter(int ch, int esc);
242 void Translate(TCHAR *pszSrc, TCHAR *pszDst);
243};
244
b160350d
VK
245#endif /* __cplusplus */
246
247
4826c8a5
VK
248//
249// Configuration item template for configuration loader
250//
251
252typedef struct
253{
018fda4d 254 TCHAR szToken[64];
4826c8a5
VK
255 BYTE iType;
256 BYTE cSeparator; // Separator character for lists
257 WORD wListElements; // Number of list elements, should be set to 0 before calling NxLoadConfig()
258 DWORD dwBufferSize; // Buffer size for strings or flag to be set for CT_BOOLEAN
259 DWORD dwBufferPos; // Should be set to 0
260 void *pBuffer;
261} NX_CFG_TEMPLATE;
dcb44c9a
VK
262
263
3046f9a4
VK
264//
265// getopt() prototype if needed
266//
267
268#ifdef _WIN32
269#include <getopt.h>
270#endif
271
272
f2fdf1b5
VK
273//
274// Win32 API functions missing under WinCE
275//
276
c32b805a 277#if defined(UNDER_CE) && defined(__cplusplus)
f2fdf1b5
VK
278
279inline void GetSystemTimeAsFileTime(LPFILETIME pFt)
280{
281 SYSTEMTIME sysTime;
282
283 GetSystemTime(&sysTime);
284 SystemTimeToFileTime(&sysTime, pFt);
285}
286
287#endif // UNDER_CE
288
289
3d1cb7d6
VK
290//
291// Structures for opendir() / readdir() / closedir()
292//
293
294#ifdef _WIN32
295
37d62364
AK
296#ifndef SWIGPERL
297
7f9e0c00 298typedef struct dirent
3d1cb7d6
VK
299{
300 long d_ino; /* inode number (not used by MS-DOS) */
301 int d_namlen; /* Name length */
302 char d_name[257]; /* file name */
303} _DIRECT;
304
305typedef struct _dir_struc
306{
307 char *start; /* Starting position */
308 char *curr; /* Current position */
309 long size; /* Size of string table */
310 long nfiles; /* number if filenames in table */
7f9e0c00 311 struct dirent dirstr; /* Directory structure to return */
3d1cb7d6
VK
312} DIR;
313
37d62364
AK
314#endif
315
3d1cb7d6
VK
316#endif /* _WIN32 */
317
318
e9246d26
VK
319//
320// Functions
321//
322
43d92b4c 323
babb8280 324#if WORDS_BIGENDIAN
43d92b4c
VK
325#define htonq(x) (x)
326#define ntohq(x) (x)
9f20696e
VK
327#define htond(x) (x)
328#define ntohd(x) (x)
babb8280
VK
329#define SwapWideString(x)
330#else
ca6ad6bb
VK
331#ifdef HAVE_HTONLL
332#define htonq(x) htonll(x)
333#else
babb8280 334#define htonq(x) __bswap_64(x)
ca6ad6bb
VK
335#endif
336#ifdef HAVE_NTOHLL
337#define ntohq(x) ntohll(x)
338#else
babb8280 339#define ntohq(x) __bswap_64(x)
ca6ad6bb 340#endif
babb8280
VK
341#define htond(x) __bswap_double(x)
342#define ntohd(x) __bswap_double(x)
343#define SwapWideString(x) __bswap_wstr(x)
43d92b4c 344#endif
15929b31 345
55b33d4c
VK
346#ifdef UNDER_CE
347#define close(x) CloseHandle((HANDLE)(x))
348#endif
349
c81979bc
VK
350#ifdef __cplusplus
351#ifndef LIBNETXMS_INLINE
352 inline TCHAR *nx_strncpy(TCHAR *pszDest, const TCHAR *pszSrc, int nLen)
353 {
354 _tcsncpy(pszDest, pszSrc, nLen - 1);
355 pszDest[nLen - 1] = 0;
356 return pszDest;
357 }
358#endif
359#else
360 TCHAR LIBNETXMS_EXPORTABLE *nx_strncpy(TCHAR *pszDest, TCHAR *pszSrc, int nLen);
361#endif
362
b50f1100 363#ifdef __cplusplus
e9246d26
VK
364extern "C"
365{
b50f1100 366#endif
08043edf
VK
367 int LIBNETXMS_EXPORTABLE SendEx(SOCKET, const void *, size_t, int);
368 int LIBNETXMS_EXPORTABLE RecvEx(SOCKET nSocket, const void *pBuff,
369 size_t nSize, int nFlags, DWORD dwTimeout);
b24955fb 370
c5b523e2
VK
371#if defined(_WIN32) || !(HAVE_DECL___BSWAP_32)
372 DWORD LIBNETXMS_EXPORTABLE __bswap_32(DWORD dwVal);
373#endif
f52be742 374#if defined(_WIN32) || !(HAVE_DECL___BSWAP_64)
64584976
VK
375 QWORD LIBNETXMS_EXPORTABLE __bswap_64(QWORD qwVal);
376#endif
9f20696e 377 double LIBNETXMS_EXPORTABLE __bswap_double(double dVal);
babb8280 378 void LIBNETXMS_EXPORTABLE __bswap_wstr(WCHAR *pStr);
64584976 379
076a55c4 380#if !defined(_WIN32) && !defined(_NETWARE)
018fda4d 381 void LIBNETXMS_EXPORTABLE strupr(TCHAR *in);
7e679c4b 382#endif
ab588c84 383
670c7f3d 384 INT64 LIBNETXMS_EXPORTABLE GetCurrentTimeMs(void);
ddce77b0 385 QWORD LIBNETXMS_EXPORTABLE FileSize(TCHAR *pszFileName);
670c7f3d 386
64584976 387 int LIBNETXMS_EXPORTABLE BitsInMask(DWORD dwMask);
018fda4d 388 TCHAR LIBNETXMS_EXPORTABLE *IpToStr(DWORD dwAddr, TCHAR *szBuffer);
d0fc56c6 389 DWORD LIBNETXMS_EXPORTABLE ResolveHostName(TCHAR *pszName);
a1dc75b0 390
64584976 391 void LIBNETXMS_EXPORTABLE *nx_memdup(const void *pData, DWORD dwSize);
f218dc6d 392 void LIBNETXMS_EXPORTABLE nx_memswap(void *pBlock1, void *pBlock2, DWORD dwSize);
31521248 393
e25cadc9 394 TCHAR LIBNETXMS_EXPORTABLE *BinToStr(BYTE *pData, DWORD dwSize, TCHAR *pStr);
4075c782 395 DWORD LIBNETXMS_EXPORTABLE StrToBin(TCHAR *pStr, BYTE *pData, DWORD dwSize);
c61f5190 396 void LIBNETXMS_EXPORTABLE MACToStr(BYTE *pData, TCHAR *pStr);
b50f1100 397
018fda4d
AK
398 void LIBNETXMS_EXPORTABLE StrStrip(TCHAR *pszStr);
399 BOOL LIBNETXMS_EXPORTABLE MatchString(const TCHAR *pattern, const TCHAR *string, BOOL matchCase);
ea1acec2 400 BOOL LIBNETXMS_EXPORTABLE RegexpMatch(TCHAR *pszStr, TCHAR *pszExpr, BOOL bMatchCase);
018fda4d 401 TCHAR LIBNETXMS_EXPORTABLE *ExtractWord(TCHAR *line, TCHAR *buffer);
8bad8476 402 int LIBNETXMS_EXPORTABLE NumChars(TCHAR *pszStr, int ch);
fa2b47a7
VK
403 BOOL LIBNETXMS_EXPORTABLE IsValidObjectName(const TCHAR *pszName);
404 BOOL LIBNETXMS_EXPORTABLE IsValidScriptName(const TCHAR *pszName);
ff5e8be5 405 void LIBNETXMS_EXPORTABLE TranslateStr(TCHAR *pszString, TCHAR *pszSubStr, TCHAR *pszReplace);
257defd7 406 TCHAR LIBNETXMS_EXPORTABLE *GetCleanFileName(TCHAR *pszFileName);
03ed7e4f 407 void LIBNETXMS_EXPORTABLE GetOSVersionString(TCHAR *pszBuffer);
ec4995e6
VK
408 BYTE LIBNETXMS_EXPORTABLE *LoadFile(TCHAR *pszFileName, DWORD *pdwFileSize);
409
6120112b 410 DWORD LIBNETXMS_EXPORTABLE CalculateCRC32(const unsigned char *pData, DWORD dwSize, DWORD dwCRC);
a3c76aba
VK
411 void LIBNETXMS_EXPORTABLE CalculateMD5Hash(const unsigned char *data, size_t nbytes, unsigned char *hash);
412 void LIBNETXMS_EXPORTABLE CalculateSHA1Hash(unsigned char *data, size_t nbytes, unsigned char *hash);
b40371d4
AK
413 BOOL LIBNETXMS_EXPORTABLE CalculateFileMD5Hash(TCHAR *pszFileName, BYTE *pHash);
414 BOOL LIBNETXMS_EXPORTABLE CalculateFileSHA1Hash(TCHAR *pszFileName, BYTE *pHash);
6120112b 415 BOOL LIBNETXMS_EXPORTABLE CalculateFileCRC32(TCHAR *pszFileName, DWORD *pResult);
66c04cc7 416
46ef501a
VK
417 DWORD LIBNETXMS_EXPORTABLE IcmpPing(DWORD dwAddr, int iNumRetries, DWORD dwTimeout,
418 DWORD *pdwRTT, DWORD dwPacketSize);
4826c8a5 419
018fda4d 420 DWORD LIBNETXMS_EXPORTABLE NxLoadConfig(TCHAR *pszFileName, TCHAR *pszSection,
6849d9be 421 NX_CFG_TEMPLATE *pTemplateList, BOOL bPrint);
125c0e81 422 int LIBNETXMS_EXPORTABLE NxDCIDataTypeFromText(TCHAR *pszText);
aa13cfd9 423
018fda4d 424 HMODULE LIBNETXMS_EXPORTABLE DLOpen(TCHAR *szLibName, TCHAR *pszErrorText);
aa13cfd9 425 void LIBNETXMS_EXPORTABLE DLClose(HMODULE hModule);
018fda4d 426 void LIBNETXMS_EXPORTABLE *DLGetSymbolAddr(HMODULE hModule, TCHAR *szSymbol, TCHAR *pszErrorText);
aa13cfd9 427
ae9cddaf 428 void LIBNETXMS_EXPORTABLE InitSubAgentsLogger(void (* pFunc)(int, TCHAR *));
15c8cf46
VK
429 void LIBNETXMS_EXPORTABLE InitSubAgentsTrapSender(void (* pFunc1)(DWORD, int, TCHAR **),
430 void (* pFunc2)(DWORD, char *, va_list));
ae9cddaf 431
aa13cfd9 432#ifdef _WIN32
018fda4d 433 TCHAR LIBNETXMS_EXPORTABLE *GetSystemErrorText(DWORD dwError, TCHAR *pszBuffer, int iBufSize);
aa13cfd9 434#endif
696fc54f
VK
435
436#if !(HAVE_DAEMON)
b1a57444 437 int LIBNETXMS_EXPORTABLE daemon(int nochdir, int noclose);
696fc54f 438#endif
4332e9d8 439
268774a0
VK
440 DWORD LIBNETXMS_EXPORTABLE inet_addr_w(WCHAR *pszAddr);
441
4332e9d8 442#ifndef _WIN32
5f461694 443 void LIBNETXMS_EXPORTABLE SetDefaultCodepage(char *cp);
4332e9d8
VK
444 int LIBNETXMS_EXPORTABLE WideCharToMultiByte(int iCodePage, DWORD dwFlags, WCHAR *pWideCharStr,
445 int cchWideChar, char *pByteStr, int cchByteChar,
446 char *pDefaultChar, BOOL *pbUsedDefChar);
447 int LIBNETXMS_EXPORTABLE MultiByteToWideChar(int iCodePage, DWORD dwFlags, char *pByteStr,
448 int cchByteChar, WCHAR *pWideCharStr,
449 int cchWideChar);
1738fb2b 450#if !HAVE_USEABLE_WCHAR
da27aabd
VK
451 int LIBNETXMS_EXPORTABLE nx_wcslen(const WCHAR *pStr);
452 WCHAR LIBNETXMS_EXPORTABLE *nx_wcsncpy(WCHAR *pDst, WCHAR *pSrc, int nDstLen);
453 WCHAR LIBNETXMS_EXPORTABLE *nx_wcsdup(const WCHAR *pStr);
4332e9d8 454#endif
3e39fcde 455#endif /* _WIN32 */
7d4b78b3
VK
456 WCHAR LIBNETXMS_EXPORTABLE *WideStringFromMBString(char *pszString);
457 char LIBNETXMS_EXPORTABLE *MBStringFromWideString(WCHAR *pwszString);
458 char LIBNETXMS_EXPORTABLE *UTF8StringFromWideString(WCHAR *pwszString);
b50f1100 459
3d1058ed
VK
460#ifdef _WITH_ENCRYPTION
461 WCHAR LIBNETXMS_EXPORTABLE *ERR_error_string_W(int nError, WCHAR *pwszBuffer);
462#endif
463
dde96745
VK
464#ifdef UNICODE
465INT64 LIBNETXMS_EXPORTABLE wcstoll(const WCHAR *nptr, WCHAR **endptr, int base);
466QWORD LIBNETXMS_EXPORTABLE wcstoull(const WCHAR *nptr, WCHAR **endptr, int base);
467#else
b50f1100
VK
468#if !(HAVE_STRTOLL)
469 INT64 LIBNETXMS_EXPORTABLE strtoll(const char *nptr, char **endptr, int base);
470#endif
471#if !(HAVE_STRTOULL)
472 QWORD LIBNETXMS_EXPORTABLE strtoull(const char *nptr, char **endptr, int base);
473#endif
dde96745 474#endif
b50f1100 475
3d1cb7d6 476#ifdef _WIN32
37d62364 477#ifndef SWIGPERL
3d1cb7d6 478 DIR LIBNETXMS_EXPORTABLE *opendir(const char *filename);
7f9e0c00 479 struct dirent LIBNETXMS_EXPORTABLE *readdir(DIR *dirp);
3d1cb7d6
VK
480 int LIBNETXMS_EXPORTABLE closedir(DIR *dirp);
481#endif
37d62364 482#endif
3d1cb7d6 483
7f9e0c00
VK
484#if defined(_WIN32) || !(HAVE_SCANDIR)
485 int LIBNETXMS_EXPORTABLE scandir(const char *dir, struct dirent ***namelist,
486 int (*select)(const struct dirent *),
487 int (*compar)(const struct dirent **, const struct dirent **));
488 int LIBNETXMS_EXPORTABLE alphasort(const struct dirent **a, const struct dirent **b);
489#endif
490
55b33d4c
VK
491#ifdef UNDER_CE
492 int LIBNETXMS_EXPORTABLE _topen(TCHAR *pszName, int nFlags, ...);
493 int LIBNETXMS_EXPORTABLE read(int hFile, void *pBuffer, size_t nBytes);
494 int LIBNETXMS_EXPORTABLE write(int hFile, void *pBuffer, size_t nBytes);
495#endif
496
b71bff93 497#if !defined(_WIN32) && !defined(_NETWARE) && defined(NMS_THREADS_H_INCLUDED)
953dfe76 498void LIBNETXMS_EXPORTABLE StartMainLoop(THREAD_RESULT (THREAD_CALL * pfSignalHandler)(void *),
45c13da4 499 THREAD_RESULT (THREAD_CALL * pfMain)(void *));
953dfe76
VK
500#endif
501
b50f1100 502#ifdef __cplusplus
e9246d26 503}
b50f1100 504#endif
e9246d26
VK
505
506#endif /* _nms_util_h_ */
70fed300
AK
507
508///////////////////////////////////////////////////////////////////////////////
509/*
510
511$Log: not supported by cvs2svn $
3d1058ed
VK
512Revision 1.101 2007/02/09 22:38:07 victor
513Crash dump generator added to console
514
ec4995e6
VK
515Revision 1.100 2007/01/24 00:52:28 alk
516Serial::ReadAll() added: read all data until timeout. returns data size, -1 it timeout w/o any data
517
f3a581d0
AK
518Revision 1.99 2007/01/11 18:56:14 victor
519- Added Process.COuntEx parameter
520- Added filtering by command line and window title to process.XXX parameters
521
ea1acec2
VK
522Revision 1.98 2006/12/17 10:31:37 victor
523ODBC driver made compatible with latest unixODBC
524
da27aabd
VK
525Revision 1.97 2006/12/11 21:19:27 victor
526Management pack creation almost working (only SNMP traps cannot be exported)
527
8bad8476
VK
528Revision 1.96 2006/11/03 08:58:56 victor
529- Added utillity class "Table"
530- Changed defines for iconv() usage on NetWare
531- Semi-complete "alarm details" view
532
ff214673
VK
533Revision 1.95 2006/10/17 21:20:25 victor
534Finished Implementation of agent traps and added trap sending API for subagents
535
15c8cf46
VK
536Revision 1.94 2006/10/05 05:24:05 victor
537Minor changes
538
5f461694
VK
539Revision 1.93 2006/10/01 20:43:37 victor
540UNICODE-related fixes
541
6cdccf82
VK
542Revision 1.92 2006/10/01 16:01:09 victor
543Yet another Linux UNICODE fix
544
556d9c45
VK
545Revision 1.91 2006/10/01 15:47:39 victor
546More UNICODE fixes
547
1738fb2b
VK
548Revision 1.90 2006/10/01 15:26:28 victor
549Some UNICODE-related fixes
550
3e39fcde
VK
551Revision 1.89 2006/09/30 22:41:08 victor
552Database driver API changed: now all SQL queries and results passed as UNICODE strings
553
7d4b78b3
VK
554Revision 1.88 2006/09/27 13:04:45 victor
555Preparation for process information parameters
556
ca6ad6bb
VK
557Revision 1.87 2006/09/27 04:15:25 victor
558AIX: implemented Net.InterfaceList
559
e25cadc9
VK
560Revision 1.86 2006/09/23 23:49:41 victor
561Console working with UNICODE!
562
dde96745
VK
563Revision 1.85 2006/09/10 06:59:36 victor
564Fixed problmes with Win32 build
565
6d8aee95
VK
566Revision 1.84 2006/09/07 22:02:06 alk
567UNIX version of Serial rewritten
568termio removed from configure (depricated in favour of termio_s_?)
569
70fed300
AK
570
571*/