| /* -*- 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 <dougt@netscape.com> |
| * Darin Fisher <darin@netscape.com> |
| * |
| * 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 <stdio.h> |
| %} |
| |
| [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. |
| * |
| * NOTE: This function has a known bug on the macintosh and |
| * other OSes which do not represent file locations as paths. |
| * If you do use this function, be very aware of this problem! |
| * |
| * @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; |
| |
| /** |
| * Return the result of PR_Open on the file. The caller is |
| * responsible for calling PR_Close on the result. |
| */ |
| [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(); |
| |
| 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); |
| }; |
| |