/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Communicator client code, released * March 31, 1998. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998-1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Doug Turner * Darin Fisher * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsIFile.idl" %{C++ #include "prio.h" #include "prlink.h" #include %} [ptr] native PRFileDescStar(PRFileDesc); [ptr] native PRLibraryStar(PRLibrary); [ptr] native FILE(FILE); /** * This interface adds methods to nsIFile that are particular to a file * that is accessible via the local file system. * * It follows the same string conventions as nsIFile. * * @status FROZEN */ [scriptable, uuid(aa610f20-a889-11d3-8c81-000064657374)] interface nsILocalFile : nsIFile { /** * initWith[Native]Path * * This function will initialize the nsILocalFile object. Any * internal state information will be reset. * * @param filePath * A string which specifies a full file path to a * location. Relative paths will be treated as an * error (NS_ERROR_FILE_UNRECOGNIZED_PATH). For * initWithNativePath, the filePath must be in the native * filesystem charset. */ void initWithPath(in AString filePath); [noscript] void initWithNativePath(in ACString filePath); /** * initWithFile * * Initialize this object with another file * * @param aFile * the file this becomes equivalent to */ void initWithFile(in nsILocalFile aFile); /** * followLinks * * This attribute will determine if the nsLocalFile will auto * resolve symbolic links. By default, this value will be false * on all non unix systems. On unix, this attribute is effectively * a noop. */ attribute PRBool followLinks; const unsigned long DELETE_ON_CLOSE = 0x80000000; /** * Return the result of PR_Open on the file. The caller is * responsible for calling PR_Close on the result. * * @param flags the PR_Open flags from prio.h, plus optionally * DELETE_ON_CLOSE. DELETE_ON_CLOSE may be implemented by removing * the file (by path name) immediately after opening it, so beware * of possible races; the file should be exclusively owned by this * process. */ [noscript] PRFileDescStar openNSPRFileDesc(in long flags, in long mode); /** * Return the result of fopen on the file. The caller is * responsible for calling fclose on the result. */ [noscript] FILE openANSIFileDesc(in string mode); /** * Return the result of PR_LoadLibrary on the file. The caller is * responsible for calling PR_UnloadLibrary on the result. */ [noscript] PRLibraryStar load(); // number of bytes available on disk to non-superuser readonly attribute PRInt64 diskSpaceAvailable; /** * appendRelative[Native]Path * * Append a relative path to the current path of the nsILocalFile object. * * @param relativeFilePath * relativeFilePath is a native relative path. For security reasons, * this cannot contain .. or cannot start with a directory separator. * For the |appendRelativeNativePath| method, the relativeFilePath * must be in the native filesystem charset. */ void appendRelativePath(in AString relativeFilePath); [noscript] void appendRelativeNativePath(in ACString relativeFilePath); /** * Accessor to a null terminated string which will specify * the file in a persistent manner for disk storage. * * The character set of this attribute is undefined. DO NOT TRY TO * INTERPRET IT AS HUMAN READABLE TEXT! */ attribute ACString persistentDescriptor; /** * reveal * * Ask the operating system to open the folder which contains * this file or folder. This routine only works on platforms which * support the ability to open a folder... */ void reveal(); /** * launch * * Ask the operating system to attempt to open the file. * this really just simulates "double clicking" the file on your platform. * This routine only works on platforms which support this functionality. */ void launch(); /** * getRelativeDescriptor * * Returns a relative file path in an opaque, XP format. It is therefore * not a native path. * * The character set of the string returned from this function is * undefined. DO NOT TRY TO INTERPRET IT AS HUMAN READABLE TEXT! * * @param fromFile * the file from which the descriptor is relative. * There is no defined result if this param is null. */ ACString getRelativeDescriptor(in nsILocalFile fromFile); /** * setRelativeDescriptor * * Initializes the file to the location relative to fromFile using * a string returned by getRelativeDescriptor. * * @param fromFile * the file to which the descriptor is relative * @param relative * the relative descriptor obtained from getRelativeDescriptor */ void setRelativeDescriptor(in nsILocalFile fromFile, in ACString relativeDesc); };