mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
141 lines
4.2 KiB
C++
141 lines
4.2 KiB
C++
// Created on: 2018-03-15
|
|
// Created by: Stephan GARNAUD (ARM)
|
|
// Copyright (c) 1998-1999 Matra Datavision
|
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#ifndef _OSD_Protection_HeaderFile
|
|
#define _OSD_Protection_HeaderFile
|
|
|
|
#include <Standard.hxx>
|
|
#include <Standard_DefineAlloc.hxx>
|
|
#include <Standard_Handle.hxx>
|
|
|
|
#include <OSD_SingleProtection.hxx>
|
|
#include <Standard_Integer.hxx>
|
|
|
|
|
|
//! This class provides data to manage file protection
|
|
//! Example:These rights are treated in a system dependent manner :
|
|
//! On UNIX you have User,Group and Other rights
|
|
//! On VMS you have Owner,Group,World and System rights
|
|
//! An automatic conversion is done between OSD and UNIX/VMS.
|
|
//!
|
|
//! OSD VMS UNIX
|
|
//! User Owner User
|
|
//! Group Group Group
|
|
//! World World Other
|
|
//! System System (combined with Other)
|
|
//!
|
|
//! When you use System protection on UNIX you must know that
|
|
//! Other rights and System rights are inclusively "ORed".
|
|
//! So Other with only READ access and System with WRITE access
|
|
//! will produce on UNIX Other with READ and WRITE access.
|
|
//!
|
|
//! This choice comes from the fact that ROOT can't be considered
|
|
//! as member of the group nor as user. So it is considered as Other.
|
|
class OSD_Protection
|
|
{
|
|
public:
|
|
|
|
DEFINE_STANDARD_ALLOC
|
|
|
|
|
|
//! Initializes global access rights as follows
|
|
//!
|
|
//! User : Read Write
|
|
//! System : Read Write
|
|
//! Group : Read
|
|
//! World : Read
|
|
Standard_EXPORT OSD_Protection();
|
|
|
|
//! Sets values of fields
|
|
Standard_EXPORT OSD_Protection(const OSD_SingleProtection System, const OSD_SingleProtection User, const OSD_SingleProtection Group, const OSD_SingleProtection World);
|
|
|
|
//! Retrieves values of fields
|
|
Standard_EXPORT void Values (OSD_SingleProtection& System, OSD_SingleProtection& User, OSD_SingleProtection& Group, OSD_SingleProtection& World);
|
|
|
|
//! Sets values of fields
|
|
Standard_EXPORT void SetValues (const OSD_SingleProtection System, const OSD_SingleProtection User, const OSD_SingleProtection Group, const OSD_SingleProtection World);
|
|
|
|
//! Sets protection of 'System'
|
|
Standard_EXPORT void SetSystem (const OSD_SingleProtection priv);
|
|
|
|
//! Sets protection of 'User'
|
|
Standard_EXPORT void SetUser (const OSD_SingleProtection priv);
|
|
|
|
//! Sets protection of 'Group'
|
|
Standard_EXPORT void SetGroup (const OSD_SingleProtection priv);
|
|
|
|
//! Sets protection of 'World'
|
|
Standard_EXPORT void SetWorld (const OSD_SingleProtection priv);
|
|
|
|
//! Gets protection of 'System'
|
|
Standard_EXPORT OSD_SingleProtection System() const;
|
|
|
|
//! Gets protection of 'User'
|
|
Standard_EXPORT OSD_SingleProtection User() const;
|
|
|
|
//! Gets protection of 'Group'
|
|
Standard_EXPORT OSD_SingleProtection Group() const;
|
|
|
|
//! Gets protection of 'World'
|
|
Standard_EXPORT OSD_SingleProtection World() const;
|
|
|
|
//! Add a right to a single protection.
|
|
//! ex: aProt = RWD
|
|
//! me.Add(aProt,X) -> aProt = RWXD
|
|
Standard_EXPORT void Add (OSD_SingleProtection& aProt, const OSD_SingleProtection aRight);
|
|
|
|
//! Subtract a right to a single protection.
|
|
//! ex: aProt = RWD
|
|
//! me.Sub(aProt,RW) -> aProt = D
|
|
//! But me.Sub(aProt,RWX) is also valid and gives same result.
|
|
Standard_EXPORT void Sub (OSD_SingleProtection& aProt, const OSD_SingleProtection aRight);
|
|
|
|
|
|
friend class OSD_FileNode;
|
|
friend class OSD_File;
|
|
friend class OSD_Directory;
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
//! Returns System dependent access rights
|
|
//! this is a private method.
|
|
Standard_EXPORT Standard_Integer Internal() const;
|
|
|
|
|
|
OSD_SingleProtection s;
|
|
OSD_SingleProtection u;
|
|
OSD_SingleProtection g;
|
|
OSD_SingleProtection w;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // _OSD_Protection_HeaderFile
|