xref: /aoo42x/main/tools/source/fsys/comdep.hxx (revision 8b851043)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _COMDEP_HXX
25 #define _COMDEP_HXX
26 
27 #include <tools/fsys.hxx>
28 
29 #define ACCESSDELIM(e)  ( (e == FSYS_STYLE_MAC) ? ":" : \
30 						( ( e == FSYS_STYLE_VFAT || e == FSYS_STYLE_HPFS || \
31 						    e == FSYS_STYLE_FAT ) || e == FSYS_STYLE_NTFS ) \
32 						  ? "\\" : "/" )
33 #define ACCESSDELIM_C(e)(char)\
34                         ( (e == FSYS_STYLE_MAC) ? ':' : \
35 						( ( e == FSYS_STYLE_VFAT || e == FSYS_STYLE_HPFS || \
36 						    e == FSYS_STYLE_FAT ) || e == FSYS_STYLE_NTFS ) \
37 						  ? '\\' : '/' )
38 #define SEARCHDELIM(e)  ( (e == FSYS_STYLE_SYSV || e == FSYS_STYLE_BSD) ? ":" \
39                         : ";" )
40 #define SEARCHDELIM_C(e)(char)\
41                         ( (e == FSYS_STYLE_SYSV || e == FSYS_STYLE_BSD) ? ':' \
42                         : ';' )
43 #define ACTPARENT(e)    ( (e == FSYS_STYLE_MAC) ? ":" : ".." )
44 #define ACTCURRENT(e)   ( (e == FSYS_STYLE_MAC) ? "" : "." )
45 
46 #if defined UNX
47 #include "unx.hxx"
48 #elif defined WNT
49 #include "wntmsc.hxx"
50 #elif defined OS2
51 #include "os2.hxx"
52 #endif
53 
54 //--------------------------------------------------------------------
55 
56 #ifndef LINUX
57 DIR *opendir( const char* pPfad );
58 dirent *readdir( DIR *pDir );
59 int closedir( DIR *pDir );
60 char *volumeid( const char* pPfad );
61 #endif
62 
63 //--------------------------------------------------------------------
64 
65 struct DirReader_Impl
66 {
67 	Dir*		pDir;
68     DIR*        pDosDir;
69     dirent*     pDosEntry;
70     DirEntry*   pParent;
71     String  	aPath;
72     ByteString  aBypass;
73     sal_Bool        bReady;
74 	sal_Bool		bInUse;
75 
76 				DirReader_Impl( Dir &rDir )
77 				:	pDir( &rDir ),
78                     pDosEntry( 0 ),
79                     pParent( 0 ),
80 					aPath( GUI2FSYS(rDir.GetFull()) ),
81                     bReady ( sal_False ),
82 					bInUse( sal_False )
83                 {
84 #ifndef BOOTSTRAP
85 					// Redirection
86 					FSysRedirector::DoRedirect( aPath );
87 #endif
88 
89                     // nur den String der Memer-Var nehmen!
90 
91 #if defined(UNX) || defined(OS2) //for further exlpanation see DirReader_Impl::Read() in unx.cxx
92 					pDosDir = NULL;
93 #else
94                     aBypass = ByteString(aPath, osl_getThreadTextEncoding());
95                     pDosDir = opendir( (char*) aBypass.GetBuffer() );
96 #endif
97 
98                     // Parent f"ur die neuen DirEntries ermitteln
99 					pParent = pDir->GetFlag() == FSYS_FLAG_NORMAL ||
100 							  pDir->GetFlag() == FSYS_FLAG_ABSROOT
101 									? pDir
102 									: pDir->GetParent();
103 
104                 }
105 
106                 ~DirReader_Impl()
107                 { if( pDosDir ) closedir( pDosDir ); }
108 
109                 // die folgenden sind systemabh"angig implementiert
110     sal_uInt16      Init(); // initialisiert, liest ggf. devices
111     sal_uInt16      Read(); // liest 1 Eintrag, F2ugt ein falls ok
112 };
113 
114 //--------------------------------------------------------------------
115 
116 struct FileCopier_Impl
117 {
118 	FSysAction		nActions;		// was zu tun ist (Copy/Move/recur)
119     Link            aErrorLink;		// bei Fehlern zu rufen
120 	ErrCode			eErr;           // aktueller Fehlercode im Error-Handler
121 	const DirEntry*	pErrSource;		// fuer Error-Handler falls Source-Fehler
122 	const DirEntry*	pErrTarget;		// fuer Error-Handler falls Target-Fehler
123 
124 					FileCopier_Impl()
125 					:	nActions( 0 ), eErr( 0 ),
126 						pErrSource( 0 ), pErrTarget( 0 )
127 					{}
128 					FileCopier_Impl( const FileCopier_Impl &rOrig )
129 					:	nActions( rOrig.nActions ), eErr( 0 ),
130 						pErrSource( 0 ), pErrTarget( 0 )
131 					{}
132 
133 	FileCopier_Impl& operator=( const FileCopier_Impl &rOrig )
134 					{
135 						nActions = rOrig.nActions;
136 						eErr = 0; pErrSource = 0; pErrTarget = 0;
137 						return *this;
138 					}
139 };
140 
141 //--------------------------------------------------------------------
142 
143 #if defined WNT || defined OS2
144 sal_Bool IsRedirectable_Impl( const ByteString &rPath );
145 #else
146 #define IsRedirectable_Impl( rPath )	sal_True
147 #endif
148 
149 //--------------------------------------------------------------------
150 
151 
152 #endif
153