/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * The contents of this file are subject to the Netscape 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/NPL/ * * 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 Netscape are * Copyright (C) 1998-1999 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * Doug Turner * Darin Fisher */ #include "nsIFile.idl" %{C++ #include "prio.h" #include "prlink.h" #include #include "nsAString.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. * * Be aware that changing this attribute from true to false after * the nsILocalFile has been initialized may lead to errors. This * could happen if there were resolved symlink in the initialized * path. For example if you had /a/b/c where |b| was a symlink, * and you change this attribute to false, the next usage would * mostlikely fail. */ attribute PRBool followLinks; [noscript] PRFileDescStar openNSPRFileDesc(in long flags, in long mode); [noscript] FILE openANSIFileDesc(in string mode); [noscript] PRLibraryStar load(); readonly attribute PRInt64 diskSpaceAvailable; // maybe we should put this somewhere else. /** * 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 */ 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); }; %{C++ #define NS_LOCAL_FILE_CONTRACTID "@mozilla.org/file/local;1" #define NS_LOCAL_FILE_CLASSNAME "Local File Specification" %}