/* -*- 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 */ #include "nsIFile.idl" %{C++ #include "prio.h" #include "prlink.h" #include %} [ptr] native PRFileDescStar(PRFileDesc); [ptr] native PRLibraryStar(PRLibrary); [ptr] native FILE(FILE); [scriptable, uuid(aa610f20-a889-11d3-8c81-000064657374)] interface nsILocalFile : nsIFile { /** * initWithPath * * 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 pathes. If you do use this function, be very * aware of this problem as bugs. * * @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). This * path must in native. */ void initWithPath([const] in string filePath); void initWithUnicodePath([const] in wstring filePath); /** * 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. /** * appendRelativePath * * 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 */ void appendRelativePath([const] in string relativeFilePath); void appendRelativeUnicodePath([const] in wstring relativeFilePath); /** * Accessor to a null terminated string which will specify * the file in a persistent manner for disk storage. */ attribute string 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(); }; %{C++ #define NS_LOCAL_FILE_CONTRACTID "@mozilla.org/file/local;1" #define NS_LOCAL_FILE_CLASSNAME "Local File Specification" extern "C" NS_EXPORT nsresult NS_NewLocalFile(const char* path, PRBool followLinks, nsILocalFile* *result); extern "C" NS_EXPORT nsresult NS_NewUnicodeLocalFile(const PRUnichar* path, PRBool followLinks, nsILocalFile* *result); %}