Daniel Marjamäki
91eb0f1fad
Removed XML version 1
2017-07-29 18:56:22 +02:00
Ayaz Salikhov
4bbc830a85
Fix warnings
2017-07-17 10:13:11 +03:00
Alexander Mai
9da28d5f4c
Signal handling: Don't mix sigaction and signal. SIGUSR1 can be used to print current callstack, SIGUSR2 is being ignored. Minor refactoring
2017-06-06 20:56:59 +02:00
Daniel Marjamäki
dc79f9630f
Fixed unit tests
2017-05-30 15:53:54 +02:00
Daniel Marjamäki
1f48b082d1
CLI: Add --output-file flag so results can be written to file directly.
2017-05-30 15:04:28 +02:00
Ayaz Salikhov
28aa939d69
iwyu - include what you use
2017-05-27 04:33:47 +02:00
PKEuS
b1f4bd7504
Refactorization: Reimplemented Settings::_enabled as a bitfeld instead of std::set ( #7995 )
2017-04-11 11:49:26 +02:00
Daniel Marjamäki
e9d950d4f5
Cppcheck build dir: Better handling when --project is used
2016-12-08 22:46:44 +01:00
Neszt Tibor
4bd6a75c48
execinfo.h is part of glibc
...
On systems where glibc is not available, execinfo.h should not be
included.
2016-11-29 09:44:50 +01:00
Daniel Marjamäki
7d7212c465
--cppcheck-build-dir: generate unique analyzeinfo filenames when source files have same names
2016-11-14 20:50:08 +01:00
Daniel Marjamäki
350e5a7142
UnusedFunctions: Perform checking using analyzeinfo
2016-11-05 21:26:56 +01:00
Daniel Marjamäki
324f68ca36
rename function
2016-10-28 12:10:19 +02:00
Daniel Marjamäki
606e31602c
Fixed #7177 (Support compile_commands.json)
2016-08-13 10:50:03 +02:00
Daniel Marjamäki
c586ae8cbe
Revert 'project' - it is not ready yet
2016-08-07 17:10:37 +02:00
Daniel Marjamäki
4dbdb50317
split
2016-08-07 15:35:41 +02:00
Daniel Marjamäki
e0f4ce9358
vs
2016-08-07 13:55:27 +02:00
Daniel Marjamäki
09d6f4f0a4
1
2016-08-06 21:04:50 +02:00
PKEuS
9a6569fde1
Always set ErrorMessage::file0 to ensure that the source file that cppcheck is checking when an error occurs can be identified
...
Removed unused function and unused includes from preprocessor.h/cpp
2016-07-26 16:28:40 +02:00
Alexander Mai
80f445bf6f
#7425 Broken XML output due to information about missing include paths. Use stdout for warning message (in alignment with other warnings messages). Minor refactoring (move some function from anon. namespace to static,etc.)
2016-05-20 21:32:59 +02:00
Gleydson Soares
99a03b4d2a
fix build on OpenBSD
2016-05-08 19:48:20 -03:00
Daniel Marjamäki
e038dd9663
Fixed #7271 (Suppress warning about non-existing path given to -I with --quiet.)
2016-01-09 11:19:51 +01:00
Daniel Marjamäki
79e663dd6f
Settings: Remove '_' prefix for public member variables
2016-01-03 16:18:17 +01:00
Lauri Nurmi
996c9244d8
Update copyright year to 2007-2016.
2016-01-01 15:34:45 +02:00
Alexander Mai
f762affea0
Small refactoring: replace NULL by nullptr, remove redundant static keyword, Tokenizer::setVarId() uses const variable 'notstart'
2015-11-30 22:13:49 +01:00
PKEuS
e8522c7883
Small refactorizations:
...
- #include cleanup
- Use std::array instead of std::vector
- Do not create a stringstream to concatenate 4 strings
- Use std::cout instead of printf
2015-11-29 10:56:44 +01:00
Daniel Marjamäki
8bb8290a6f
Fixed GCC warnings. unused variable, shadow variable.
2015-11-28 18:15:47 +01:00
PKEuS
93c02ce826
Fixed compiler error introduced in previous commit and several MSVC warnings
2015-11-28 10:49:08 +01:00
Alexander Mai
fe7d5cd242
Fix small glitch in previous commit - causing a compile error on Windows
2015-11-25 22:45:06 +01:00
Alexander Mai
03ecb980a5
Small refactoring of stacktrace printing code
2015-11-25 22:37:38 +01:00
Alexander Mai
9757f5b5f4
Improve exception handling on un*x: try to print a callstack in out-of-memory situations as well
2015-11-21 16:50:57 +01:00
Daniel Marjamäki
0f9d90d2be
Changed Copyrights. Removed my name.
2015-11-18 20:04:50 +01:00
amai2012
b788d96bb9
Repair build with VS2010
2015-11-15 10:45:01 +01:00
Alexander Mai
bda9c8c2d5
--exception-handling now prints callstack on SIGINT, allows to debug program hangs. Also add handler for some more signals.
2015-11-14 19:59:22 +01:00
Alexander Mai
ba2671e19a
Fix possible segmentation fault in un*x signal handler. Use SIGUSR1 for debugging purposes
2015-09-29 12:56:13 +02:00
PKEuS
92b867dd2c
Fixed behaviour of --quiet/-q and its description
2015-07-25 17:55:12 +02:00
Dmitry-Me
05a318f9e7
Resolve CID 1312126 and maybe also CID 1288510
2015-07-23 16:35:47 +03:00
PKEuS
ce9272a4ed
Refactorized file listing code (CLI):
...
- Apply PathMatch in FileLister::recursiveAddFiles() already to avoid touching directories that are ignored (#5775 )
- Simplified code to warn about header exclusion; use Path::isHeader() instead of custom header filename detection
2015-07-23 14:28:17 +02:00
Alexander Mai
8b97f04de4
Try to address some Coverity issues. Add TODO testcase for #5783 . Introduce TODO_ASSERT macro.
2015-07-19 15:03:35 +02:00
Martin Ettl
7ff4d10c43
Astyle formatting, no functional changes.
2015-06-28 19:25:13 +02:00
amai2012
5814c3b84c
Fix some compiler warnings with VS
...
Minor refactoring on Windows SEH code.
2015-06-28 19:20:16 +02:00
Alexander Mai
bacc5ac1cc
Fix false positives ignoredReturnValue about some posix interfaces. Remove redundant strsignal() output from signal handler
2015-04-06 18:16:37 +02:00
Alexander Mai
4048c50a69
Minor improvements on signal handler
2015-04-01 21:17:13 +02:00
Dmitry-Me
618c038448
Resolve CID 1288510
2015-03-24 17:59:24 +03:00
Alexander Mai
39633ef26f
Add more interfaces to posix.cfg
2015-03-08 14:24:54 +01:00
Alexander Mai
521e6c48b5
Minor fixes for signal handling: make global variables static, enhance stack vs. heap detection for recognizing stack overflows
2015-03-07 20:47:27 +01:00
Alexander Mai
abde80f0d9
Use alternative stack for signal handler to allow catching stack overflow induced SIGSEGV/SIGILL
2015-03-07 18:15:25 +01:00
Dmitry-Me
bd3428e039
Reduce code duplication
2015-02-20 10:26:02 +03:00
Thomas Jarosch
ec21134817
Fix false negatives for local suppressions
...
Introduce a new bool setting jointSuppressionReport
that will be set by the analyseWholeProgram() code path.
When the flag is enabled, unmatched suppressions are
collected after running the final whole program analysis
to prevent false positives for the unusedFunction check.
The check functions in the unit test
for single / multi file suppressions were unified.
2015-01-20 18:47:30 +01:00
PKEuS
787cbcb02e
Accept unknown elements in Library files, but print a warning. This fixes backward compatibility of libraries with older cppcheck versions
2015-01-10 22:18:57 +01:00
Daniel Marjamäki
ff11ba9847
Updated copyright year to 2015
2015-01-03 12:14:58 +01:00
Thomas Jarosch
9438b49bfb
Fix build on PowerPC
...
PowerPC does not provide ucontext.gregs or the REG_ERR define.
Found while testing big endian platform.
2014-12-31 01:44:50 +01:00
Ni2c2k
666fa04ed8
don't use USE_UNIX_BACKTRACE_SUPPORT on Qnx
2014-12-16 20:11:25 +05:00
Daniel Marjamäki
0b9d80c95d
Refactoring CheckUnusedFunctions so it uses new infrastructure for multifile analysis
2014-12-02 06:41:18 +01:00
Daniel Marjamäki
a002654c47
Reverted refactoring 828417c
for now. It caused a major slowdown in the unused functions checking.
2014-11-24 06:37:08 +01:00
Simon Martin
3ca2a177b5
Restore build on Mac OSX >= 10.7 since the inclusion of ucontext.h
2014-11-15 20:17:25 +01:00
Daniel Marjamäki
828417c934
CheckUnusedFunction: Refactorings to use same infrastructure for whole program analysis as CheckUninitVar and CheckBufferOverrun
2014-11-15 18:44:23 +01:00
Daniel Marjamäki
de7e9223b8
Fixed #6272 (Improve check: multifile checking in checkbufferoverrun)
2014-11-15 10:43:49 +01:00
Alexander Mai
5786be99c5
Improve exception handler: detect read or write on SIGSEGV (linux only), create more suitable core dump, reduce usage of fprintf()
2014-11-14 23:40:53 +01:00
Alexander Mai
95cd0f396a
#6026 backtrace() not portable - linker error on NetBSD
2014-11-02 15:47:55 +01:00
Robert Reif
e2f72b4cb1
Fixed #6215 (Move Windows platform types into library)
2014-10-19 07:34:40 +02:00
Dmitry-Me
7342a81ea7
Minor refactorings. rename token. cleanup if/else.
2014-09-02 16:10:51 +02:00
PKEuS
e35329aba3
Fixed reporting of unmatched suppressions for unusedFunction ( #4946 )
2014-09-01 10:13:03 +02:00
XhmikosR
7294ae2a88
Fix a C6328 warning.
...
Potential argument type mismatch.
2014-08-31 10:05:34 +03:00
Daniel Marjamäki
6afe9a4fbe
astyle formatting
...
[ci skip]
2014-07-08 06:44:57 +02:00
amai2012
9b38ae73c1
Attempt to fix 2 Coverity messages.
...
Replace a few unsigned int by std::size_t
2014-07-07 21:25:30 +02:00
amai2012
6b5f34df4b
ix compiler warning on Windows 64bit
2014-06-30 12:48:42 +02:00
Daniel Marjamäki
cdf081dbd5
astyle formatting
...
[ci skip]
2014-06-29 22:53:52 +02:00
amai2012
df988dfff3
Fix cppcheck warning in previous changeset
...
Signed-off-by: amai2012 <amai@users.sf.net>
2014-06-29 19:12:59 +02:00
amai2012
e60ee4ad3b
Print callstack in SEH on Windows
2014-06-29 18:57:48 +02:00
Alexander Mai
4d6c17818d
Try to fix configuration of un*x signal handling and backtrace support
2014-06-28 14:05:18 +02:00
amai2012
e124983e11
Improve error message for Windows SEH adding more details if available
2014-06-28 12:14:00 +02:00
Jay Sigbrandt
51fdf3f14f
Simplify defines.
2014-06-27 08:03:05 +02:00
Jay Sigbrandt
e7210521ac
Many platforms don't support backtraces. Fix compile for Solaris platform.
...
This change was tested with Solaris 10 on X86 and SPARC.
More information on Unix Backtrace Support
- http://www.gnu.org/software/libc/manual/html_node/Backtraces.html
It is not supported on the following platforms:
- https://www.gnu.org/software/gnulib/manual/html_node/execinfo_002eh.html
Mac OS X 10.3,
FreeBSD 6.0,
NetBSD 5.0,
OpenBSD 3.8,
Minix 3.1.8,
AIX 5.1,
HP-UX 11,
IRIX 6.5,
OSF/1 5.1,
Solaris 10,
Cygwin,
mingw,
MSVC 9,
Interix 3.5,
BeOS.
2014-06-26 11:41:16 +02:00
Daniel Marjamäki
d4bc643ed4
CLI: don't use unix-signals if NO_UNIX_SIGNAL_HANDLING is defined. don't use unix-signals in os/2.
2014-06-15 11:17:44 +02:00
Daniel Marjamäki
d9a3761bfd
Merge pull request #331 from Dmitry-Me/DontExitInTheMiddle
...
Should not call std::exit() in the middle of program
2014-06-06 13:35:29 +02:00
PKEuS
f7f639465a
Fixed remaining VS warnings (hopefully all of them, this time)
2014-06-05 10:45:25 +02:00
Dmitry-Me
738d05b442
Calling std::exit() in the middle of a C++ program subverts stack unwinding and can introduce subtle bugs.
2014-06-05 11:28:04 +04:00
Alexander Mai
707ee97b9e
Fix missing break while handling SIGBUS - fixes clang compiler warning
2014-05-29 16:57:45 +02:00
Daniel Marjamäki
ed78d3e148
Library: Better error reporting when loading fails
2014-05-26 17:00:41 +02:00
Alexander Mai
7b36bbbba8
Exception handling: catch SIGBUS. Evaluate siginfo_t::si_code
2014-05-25 15:53:26 +02:00
Alexander Mai
5198c05f35
--exception-handling now takes optional argument to choose between stdout and stderr for its output. stdout is new default value
2014-05-25 08:47:37 +02:00
Alexander Mai
ed78835020
Cosmetics for print_stacktrace()
2014-05-17 10:40:48 +02:00
Alexander Mai
08c209d4d9
Some cleanup for CppcheckSignalHandler, also some cosmetics for the output
2014-05-11 13:25:36 +02:00
Daniel Marjamäki
1903d95015
Fixed #5661 (--suppress=missingInclude has no effect)
2014-05-03 19:31:15 +02:00
Alexander Mai
718e42f5ca
Fix some clang warnings about type conversions
2014-04-11 23:35:53 +02:00
Alexander Mai
a06371e063
Fixes for Doxygen + code formatting
2014-04-07 20:39:19 +02:00
Daniel Marjamäki
22c4d45ca0
astyle formatting
2014-03-31 03:06:57 +02:00
Alexander Mai
a12e59dbee
Make backtrace resemble gdb bt
2014-03-30 21:29:17 +02:00
Daniel Marjamäki
fbd607d35d
Fixed cygwin compilation
2014-03-22 09:57:43 +01:00
Martin Ettl
fe1b46c174
Extended std.cfg
2014-03-19 21:08:48 +01:00
Alexander Mai
af922aedbf
Fix mingw build
2014-03-18 21:14:09 +01:00
Alexander Mai
14386d06dc
Enable SEH for Windows using MSVC (not for mingw)
2014-03-17 19:11:00 +01:00
Martin Ettl
80b1271d01
Astyle running and added test cases for functions in std.cfg.
2014-03-10 02:21:44 +01:00
Alexander Mai
c2a602a6bd
Refactor signal handling code: prepare for demangling names, handle SIGINT w/o backtrace, remove our own signal handler frames from backtrace
2014-03-16 18:37:28 +01:00
Alexander Mai
825bb0f027
Fixed #5286 (Add signal/exception handling to cppcheck and cppcheck-gui)
2014-03-16 12:04:13 +01:00
Daniel Marjamäki
fd3a8a2a18
Update copyright
2014-02-15 07:45:39 +01:00
Kamil Dudka
1f53018b8e
Suppress warning about non-existing path given to -I with --quiet.
2014-01-10 21:50:21 +01:00
Daniel Marjamäki
6ff93a6b36
CLI: Made the 'failed to load std.cfg' nicer and more informative.
2014-01-03 21:59:50 +01:00
Daniel Marjamäki
a94fccf51a
astyle formatting
2014-01-02 21:47:35 +01:00
Sam Truscott
4333dd3c75
Update Qt to support Markup structure
2014-01-02 18:18:24 +01:00
Daniel Marjamäki
562387e3ff
library: use extensions when loading std.cfg and posix.cfg
2013-12-26 13:18:54 +01:00
Daniel Marjamäki
4131c621c9
Fixed #5254 (Warn about missing library files (.cfg))
2013-12-26 11:15:28 +01:00
Daniel Marjamäki
76b907fe65
Fixed #5252 (Improve check: use Library to validate function arguments in invalidFunctionUsage)
2013-12-23 10:06:45 +01:00
Daniel Marjamäki
e446a28b3d
Refactoring FileLister and Path so they don't depend on Library
2013-10-31 19:09:01 +01:00
Sam Truscott
6806fd8135
Extended Qt support through Library
2013-10-20 14:09:10 +02:00
Daniel Marjamäki
43b40b7465
Refactoring: Reordered includes. Put local ones before system includes.
2013-09-04 06:18:22 +02:00
Daniel Marjamäki
0c5e39a813
Library: Added configuration file std.cfg that clients should load.
2013-07-20 17:12:56 +02:00
Daniel Marjamäki
a7da65a40b
Fixed #4618 (Unmatched suppression: don't show this information message unless --enable=information or --check-cfg is used)
2013-05-31 15:20:58 +02:00
Reijo Tomperi
5d5f7085bf
Updating year 2012 -> 2013 to .cpp and .h files and man page.
2013-01-01 18:29:08 +02:00
Daniel Marjamäki
bfb82fe3e1
Cppcheck: Show single 'too many configurations' message if --enable=information hasn't been used and there are too many configurations.
2012-12-26 18:35:49 +01:00
Daniel Marjamäki
b107e5e9e8
cppcheckexecutor: removed time info from verbose progress info. the ctime function that is used is not threadsafe.
2012-12-09 09:30:18 +01:00
Edoardo Prezioso
fae40c4782
Change every C version of 'size_t' to C++ 'std::size_t'.
2012-07-09 13:30:18 +02:00
Edoardo Prezioso
3c4ce7b43a
Fixed (for real) the preprocessor.cpp(1166) warning in #2123 .
2012-07-06 13:17:08 +02:00
Daniel Marjamäki
0bbf2ecd0c
CLI: output information messages to error report
2012-07-04 18:21:56 +02:00
Daniel Marjamäki
956a37a382
Fixed compiler errors
2012-06-20 17:39:31 +02:00
Kimmo Varis
68c52ddd69
Refactoring information messages.
...
Currently the information severity messages are outputted as error
messages with Severity::Information. This causes constant confusion
as people think it as mildest error severity (and rightfully so).
When it was meant to be for printing messages about the checking
procedure itself (like missing header files etc).
So I'm adding a new function for the ErrorLogger for printing these
informative messages. This makes clear the distinction of errors
found from the code and messages related to the checking itself.
It also makes it easier for clients to handle these separately.
2012-06-19 00:16:20 +03:00
PKEuS
772108374e
Removed unused variable CppCheck::_errout.
2012-04-08 14:18:13 +02:00
PKEuS
e8a458edde
Fixed crash when --errorlist is given ( #3711 )
2012-04-08 10:05:44 +02:00
Simon Martin
3ccdd16b01
Avoid clang warning.
2012-04-07 15:36:45 +02:00
PKEuS
6643e14d3c
Avoid copying Settings in CppCheckExecutor
2012-04-06 14:19:26 +02:00
PKEuS
c61762f454
Refactorized doAssignement:
...
- Enhanced performance by directly iterating through the token list instead of index access
- Added more allocation functions
- Simplified code
Replaced avoidable strlen call in cppcheckexecutor.cpp
2012-02-29 20:57:48 +01:00
PKEuS
9f42ce91a1
Refactored STL container usage in CLI.
...
Pathmatcher masks are converted to lowercase only once when instance is created
2012-02-19 17:22:59 +01:00
PKEuS
b1ff900aaa
Some refactorizations
2012-02-18 23:43:51 +01:00
PKEuS
2ba2a4e6ae
Some refactorizations
2012-02-18 11:55:05 +01:00
Daniel Marjamäki
112873e876
Revert "Fixed #3450 (CLI --report-progress is currently useless)"
...
This reverts commit e769fe6294
.
2012-01-02 07:42:39 +01:00
Daniel Marjamäki
e769fe6294
Fixed #3450 (CLI --report-progress is currently useless)
2012-01-02 07:27:45 +01:00
PKEuS
f4703e026a
Refactoring various issues in cmdlineparser, cppcheckexecutor, check64bit and tokenize.
2012-01-01 21:17:16 +02:00
Reijo Tomperi
8cae17fda8
Update year to 2012
2012-01-01 01:05:37 +02:00
PKEuS
dca03c3ce2
Remove unnecessary includes
...
Also add a unit test related to #3427
Also improve the description text in checkclass and remove unused variable.
2011-12-23 23:31:48 +02:00
Daniel Marjamäki
9996d38715
Fix #3277 (Other: attempt to copy-construct an iterator from a singular iterator)
2011-11-11 09:19:59 +01:00
Daniel Marjamäki
ed97b62610
Fixed #3275 (Missing includes always reported)
2011-11-06 08:59:07 +01:00
Zhiyuan Zhang
4c3283738b
Fixed #3292 (Error in --suppressions-list silently ignores all subsequent command line options)
2011-11-05 18:15:03 +01:00
Reijo Tomperi
e989af3fd5
Fix typo "Cpppcheck"
2011-11-05 18:56:40 +02:00
Edoardo Prezioso
9dd3360cd6
Fix some complainted choices made in my older commits.
...
Note: probably you should do 'make clean' before using 'make' to rebuild it again. Maybe it's me but 'make' reports various errors when linking.
2011-11-01 13:23:47 +01:00
Edoardo Prezioso
433f4640a9
Fix some GCC warnings regarding the sign conversion.
2011-10-30 18:34:49 +01:00
Daniel Marjamäki
6f8e42a5af
changed the astyle formatting flags
2011-10-13 20:53:06 +02:00
Reijo Tomperi
1c9ae6937c
Fix compiling on VC++ after previous commit
2011-10-09 21:14:44 +03:00
Reijo Tomperi
e87628b72f
Filter out duplicate error messages in cli.
2011-10-09 21:03:38 +03:00
Kimmo Varis
06f9d310ce
CLI: case-insensitive ignorepath matching in Windows.
2011-10-02 12:02:07 +03:00
Kimmo Varis
9e2dd553fb
Add "ExtraVersion" version number information.
...
The "ExtraVersion" can be used for things like Git commit Id,
release tag (version control), release date etc. If the string
is empty, nothing is printed.
2011-08-11 17:34:59 +03:00
Kimmo Varis
371838b9cb
CLI: Warn if user tries to exclude header files.
...
Filename exclusion (with -i) works only for the source files.
Print a warning if user tries to exclude header file. The warning
instructs user to use --suppress for ignoring warnings from the
header files.
2011-08-06 17:24:10 +03:00
Kimmo Varis
e86abfdc5f
No unmatched suppressions list in quiet output.
...
When user wants to see only errors printed (--quiet in CLI) we
must obey that. And not print unmatchedSuppressions list.
Ticket: #2895 (Cannot suppress unmatchedSuppression reports)
2011-08-04 12:04:38 +03:00
Daniel Marjamäki
c1138cf7f9
Fixed #2941 (False positive: unused function (individual checking of files))
2011-07-25 13:25:09 +02:00
Daniel Marjamaki
b55147a29e
updated error message. --check-includes has been renamed to --check-config
2011-05-04 18:52:03 +02:00
Daniel Marjamäki
d998477c69
renamed --check-includes to --check-config
2011-05-02 21:28:33 +02:00
Daniel Marjamäki
8603919b2d
Missing includes - normally just report that there are missing includes. The --check-includes can then be used to check what missing includes there are. Ticket: #2719
2011-05-02 14:58:16 +02:00
Kimmo Varis
c7d99fe9a7
Remove ErrorLogger::reportStatus() method.
...
The ErrorLogger::reportStatus() is not lib code interface. The CLI
code does the looping through file list and gives one file at a
time for the core code. Hence lib has no any idea about the
progress and it can't provide such information.
Also the recent commit (6d858b6
) caused a GUI build failure by
adding CLI code dependency to GUI. Which is big no-no.
This is admittedly a hack. But it allow us to build all modules
again.
2011-04-27 23:27:02 +03:00
Greg Hewgill
6d858b63a1
Report percentage complete based on file size
...
This patch makes the (reasonable) assumption that the total size of all checked
files fits in a 'long' type.
2011-04-26 22:26:23 +12:00
Kimmo Varis
f240574107
Modify the Cppcheck class to check one file at a time.
...
Unify usage and API of CppCheck class. Allow only one file checked
at a time, instead of list of files. Clients can then handle file
lists more naturally and as they see fit. Also clients have better
knowledge of how checking status should be handled.
The single-threaded CLI checking was only one using the file list.
Other clients were giving files (to list) one file at a time.
2011-04-24 19:17:52 +03:00
Kimmo Varis
903769a388
CLI: Give files to Cppcheck class one at a time.
...
When doing single-threaded checking give checked files to Cppcheck
class one file at a time. Like GUI and multithreaded checking
already do. This unifies how we call Cppcheck class from different
clients.
2011-04-24 19:17:52 +03:00