/* -*- 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 .
 */


module com { module sun { module star { module system {

/** Specifies an interface for executing a system command.
*/


published interface XSystemShellExecute: com::sun::star::uno::XInterface
{
    /** Executes an arbitrary system command.

        There are generally two modes of operation for this function:

        With `URIS_ONLY` among the passed-in `nFlags`, the passed-in `aCommand`
        must be a URI that is opened in an
        "only do secure things, make sure not to execute potentially dangerous code" way
        (e.g., instead of running an arbitrary app, open a window showing the location of the app).

        Without `URIS_ONLY` among the passed-in `nFlags`, the passed-in `aCommand` must be a
        system pathname of an executable to run.

        @param aCommand
        Specifies the command to execute. This may be an executable file or a
        document which is registered with an application on a specific platform,
        so that the platform knows what application to launch for that document.
        If the command specifies a path to an executable, etc, this has to be
        a system specific path.

        @param aParameter
        Specifies a list of space separated parameters. The method does not
        validate the given parameters, but only passes it as a parameter to the
        specified command.

        @param nFlags
        Specifies different flags to control the execution of this method, for example,
        avoid showing system error messages, in case of failures, etc.

        @throws com::sun::star::lang::IllegalArgumentException
        when the specified flags are wrong or exclude each other; also thrown,
        with an ArgumentPosition of 0, when nFlags contains URIS_ONLY and
        aCommand is not an absolute URI reference

        @throws com::sun::star::system::SystemShellExecuteException
        in the case of errors when trying to executed the specified command.

        @see com::sun::star::system::SystemShellExecuteFlags
    */
    void execute( [in] string aCommand, [in] string aParameter, [in] long nFlags )
        raises( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::system::SystemShellExecuteException );
};


}; }; }; };

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