LibreOffice
LibreOffice 4.1 SDK C/C++ API Reference
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
salhelper
linkhelper.hxx
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
* This file is part of the LibreOffice project.
4
*
5
* This Source Code Form is subject to the terms of the Mozilla Public
6
* License, v. 2.0. If a copy of the MPL was not distributed with this
7
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
*/
9
10
#ifndef _SALHELPER_LINKHELPER_HXX
11
#define _SALHELPER_LINKHELPER_HXX
12
13
#include <
rtl/ustring.hxx
>
14
#include <
osl/file.hxx
>
15
16
namespace
salhelper
17
{
18
class
LinkResolver
19
{
20
public
:
21
osl::FileStatus
m_aStatus
;
22
23
LinkResolver
(sal_uInt32 nMask)
24
:
m_aStatus
(nMask |
25
osl_FileStatus_Mask_FileURL
|
26
osl_FileStatus_Mask_Type
|
27
osl_FileStatus_Mask_LinkTargetURL
)
28
{
29
}
30
38
osl::FileBase::RC
fetchFileStatus
(
const
rtl::OUString
&rURL,
39
int
nDepth = 128)
40
{
41
//In an ideal world this wouldn't be inline, but I want to use this
42
//in jvmfwk hence salhelper, but salhelper is .map controlled and
43
//getting all the mangled names right is a misery, moving it over
44
//to visibility markup would drop per-symbol versioning
45
osl::FileBase::RC
eReturn;
46
47
osl::DirectoryItem
item;
48
rtl::OUString
sURL(rURL);
49
while
((eReturn =
osl::DirectoryItem::get
(sURL, item))
50
==
osl::File::E_None
)
51
{
52
if
(--nDepth == 0)
53
{
54
eReturn =
osl::FileBase::E_MULTIHOP
;
55
break
;
56
}
57
eReturn = item.
getFileStatus
(
m_aStatus
);
58
if
(eReturn !=
osl::File::E_None
)
59
break
;
60
if
(
m_aStatus
.
getFileType
() !=
osl::FileStatus::Link
)
61
{
62
eReturn =
osl::FileBase::E_None
;
63
break
;
64
}
65
sURL =
m_aStatus
.
getLinkTargetURL
();
66
}
67
68
return
eReturn;
69
}
70
};
71
}
72
73
#endif
74
75
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Generated on Thu Aug 29 2013 01:06:40 for LibreOffice by
1.8.4