/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_io_FilePermission_idl__
#define __com_sun_star_io_FilePermission_idl__

module com {  module sun {  module star {  module io {


/// This permission represents access to a file or directory.
/// A FilePermission consists of a file url and a set of actions valid for that url.
/// <p>
/// The path of the file url that ends in <code>"/*"</code> indicates all the files and
/// directories contained in that directory.  A path that ends with <code>"/-"</code>
/// indicates (recursively) all files and subdirectories contained in that
/// directory.  A file url string consisting of the special token
/// <code>"<<ALL FILES>>"</code> matches any file.
/// <br>
/// Note: A file url string consisting of a single <code>"*"</code> indicates all the files
/// in the current directory, while a string consisting of a single <code>"-"</code> indicates
/// all the files in the current directory and (recursively) all files and
/// subdirectories contained in the current directory.
/// <br>
/// The actions to be granted is a list of one or more comma-separated keywords.
/// The possible keywords are <code>"read"</code>, <code>"write"</code>,
/// <code>"execute"</code>, and <code>"delete"</code>.
/// Their meaning is defined as follows:
/// <ul>
/// <li><code>read</code> -- read permission</li>
/// <li><code>write</code> -- write permission</li>
/// <li><code>execute</code> -- execute permission</li>
/// <li><code>delete</code> -- delete permission</li>
/// </ul><br>
/// The actions string is processed case-insensitive.
/// </p>
///
/// @attention
/// Be careful when granting FilePermissions.  Think about the implications of
/// granting read and especially write access to various files and directories.
/// The <code>"<<ALL FILES>>"</code> permission with write action is
/// especially dangerous.  This grants permission to write to the entire file system.
///
/// @since OOo 1.1.2
published struct FilePermission
{
    /** target file url
    */
    string URL;
    /** comma separated actions list
    */
    string Actions;
};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
