/src/log4cplus/src/fileinfo.cxx
Line | Count | Source |
1 | | // -*- C++ -*- |
2 | | // |
3 | | // Copyright (C) 2012-2017, Vaclav Zeman. All rights reserved. |
4 | | // |
5 | | // Redistribution and use in source and binary forms, with or without modifica- |
6 | | // tion, are permitted provided that the following conditions are met: |
7 | | // |
8 | | // 1. Redistributions of source code must retain the above copyright notice, |
9 | | // this list of conditions and the following disclaimer. |
10 | | // |
11 | | // 2. Redistributions in binary form must reproduce the above copyright notice, |
12 | | // this list of conditions and the following disclaimer in the documentation |
13 | | // and/or other materials provided with the distribution. |
14 | | // |
15 | | // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, |
16 | | // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
17 | | // FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
18 | | // APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
19 | | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- |
20 | | // DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
21 | | // OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
22 | | // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 | | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
24 | | // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 | | |
26 | | #include <log4cplus/config.hxx> |
27 | | #include <log4cplus/helpers/fileinfo.h> |
28 | | |
29 | | #ifdef LOG4CPLUS_HAVE_SYS_TYPES_H |
30 | | #include <sys/types.h> |
31 | | #endif |
32 | | #ifdef LOG4CPLUS_HAVE_SYS_STAT_H |
33 | | #include <sys/stat.h> |
34 | | #endif |
35 | | |
36 | | #if defined (_WIN32) |
37 | | #include <tchar.h> |
38 | | #include <log4cplus/config/windowsh-inc.h> |
39 | | #endif |
40 | | |
41 | | |
42 | | namespace log4cplus { namespace helpers { |
43 | | |
44 | | |
45 | | int |
46 | | getFileInfo (FileInfo * fi, tstring const & name) |
47 | 0 | { |
48 | | #if defined (_WIN32) |
49 | | struct _stat fileStatus; |
50 | | if (_tstat (name.c_str (), &fileStatus) == -1) |
51 | | return -1; |
52 | | |
53 | | fi->mtime = helpers::from_time_t (fileStatus.st_mtime); |
54 | | fi->is_link = false; |
55 | | fi->size = fileStatus.st_size; |
56 | | |
57 | | #else |
58 | 0 | struct stat fileStatus; |
59 | 0 | if (stat (LOG4CPLUS_TSTRING_TO_STRING (name).c_str (), |
60 | 0 | &fileStatus) == -1) |
61 | 0 | return -1; |
62 | | |
63 | 0 | fi->mtime = helpers::from_time_t (fileStatus.st_mtime); |
64 | 0 | fi->is_link = S_ISLNK (fileStatus.st_mode); |
65 | 0 | fi->size = fileStatus.st_size; |
66 | |
|
67 | 0 | #endif |
68 | |
|
69 | 0 | return 0; |
70 | 0 | } |
71 | | |
72 | | } } // namespace log4cplus { namespace helpers { |