office-gobmx/tools/source/fsys/comdep.hxx
2012-01-23 14:04:47 +05:30

147 lines
5 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _COMDEP_HXX
#define _COMDEP_HXX
#include <tools/fsys.hxx>
#define ACCESSDELIM(e) ( ( e == FSYS_STYLE_NTFS ) ? "\\" : "/" )
#define ACCESSDELIM_C(e)(char)\
( ( e == FSYS_STYLE_NTFS ) ? '\\' : '/' )
#define SEARCHDELIM(e) ( (e == FSYS_STYLE_BSD) ? ":" : ";" )
#define SEARCHDELIM_C(e)(char)\
( (e == FSYS_STYLE_BSD) ? ':' : ';' )
#define ACTPARENT(e) ".."
#define ACTCURRENT(e) "."
#if defined UNX
#include "unx.hxx"
#elif defined WNT
#include "wntmsc.hxx"
#endif
//--------------------------------------------------------------------
#ifndef LINUX
DIR *opendir( const char* pPfad );
dirent *readdir( DIR *pDir );
int closedir( DIR *pDir );
char *volumeid( const char* pPfad );
#endif
//--------------------------------------------------------------------
struct DirReader_Impl
{
Dir* pDir;
DIR* pDosDir;
dirent* pDosEntry;
DirEntry* pParent;
String aPath;
rtl::OString aBypass;
sal_Bool bReady;
sal_Bool bInUse;
DirReader_Impl( Dir &rDir )
: pDir( &rDir ),
pDosEntry( 0 ),
pParent( 0 ),
aPath(rDir.GetFull()),
bReady ( sal_False ),
bInUse( sal_False )
{
// Redirection
FSysRedirector::DoRedirect( aPath );
// nur den String der Memer-Var nehmen!
#if defined(UNX) //for further eplanation see DirReader_Impl::Read() in unx.cxx
pDosDir = NULL;
#else
aBypass = rtl::OUStringToOString(aPath, osl_getThreadTextEncoding());
pDosDir = opendir( aBypass.getStr() );
#endif
// Parent f"ur die neuen DirEntries ermitteln
pParent = pDir->GetFlag() == FSYS_FLAG_NORMAL ||
pDir->GetFlag() == FSYS_FLAG_ABSROOT
? pDir
: pDir->GetParent();
}
~DirReader_Impl()
{ if( pDosDir ) closedir( pDosDir ); }
// die folgenden sind systemabh"angig implementiert
sal_uInt16 Init(); // initialisiert, liest ggf. devices
sal_uInt16 Read(); // liest 1 Eintrag, F2ugt ein falls ok
};
//--------------------------------------------------------------------
struct FileCopier_Impl
{
FSysAction nActions; // was zu tun ist (Copy/Move/recur)
Link aErrorLink; // bei Fehlern zu rufen
ErrCode eErr; // aktueller Fehlercode im Error-Handler
const DirEntry* pErrSource; // fuer Error-Handler falls Source-Fehler
const DirEntry* pErrTarget; // fuer Error-Handler falls Target-Fehler
FileCopier_Impl()
: nActions( 0 ), eErr( 0 ),
pErrSource( 0 ), pErrTarget( 0 )
{}
FileCopier_Impl( const FileCopier_Impl &rOrig )
: nActions( rOrig.nActions ), eErr( 0 ),
pErrSource( 0 ), pErrTarget( 0 )
{}
FileCopier_Impl& operator=( const FileCopier_Impl &rOrig )
{
nActions = rOrig.nActions;
eErr = 0; pErrSource = 0; pErrTarget = 0;
return *this;
}
};
//--------------------------------------------------------------------
#if defined WNT
sal_Bool IsRedirectable_Impl( const rtl::OString &rPath );
#else
#define IsRedirectable_Impl( rPath ) sal_True
#endif
//--------------------------------------------------------------------
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */