/* -*- Mode: C++; tab-width: 4; 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.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * THIS INTERFACE IS DEPRECIATED AND UNSUPPORTED! USE |nsIFile| and |nsILocalFile|. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ // This is the only correct cross-platform way to specify a file. // Strings are not such a way. If you grew up on windows or unix, you // may think they are. Welcome to reality. #include "nsISupports.idl" %{C++ #include "nsFileSpec.h" // for factory method %} interface nsIFileURL; interface nsIFilePath; interface nsIOutputStream; interface nsIInputStream; // Define Contractid and CID %{C++ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * THIS INTERFACE IS DEPRECIATED AND UNSUPPORTED! USE |nsIFile| and |nsILocalFile|. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ // {A5740FA2-146E-11d3-B00D-00C04FC2E79B} #define NS_FILESPEC_CID \ { 0xa5740fa2, 0x146e, 0x11d3, { 0xb0, 0xd, 0x0, 0xc0, 0x4f, 0xc2, 0xe7, 0x9b } } #define NS_FILESPEC_CONTRACTID "@mozilla.org/filespec;1" #define NS_FILESPEC_CLASSNAME "File Spec" %} native nsFileSpec(nsFileSpec); [ref] native nsFileSpecRef(nsFileSpec); [ptr] native nsFileSpecPtr(nsFileSpec); [scriptable, uuid(d8c0a080-0868-11d3-915f-d9d889d48e3c)] interface nsIFileSpec : nsISupports { void fromFileSpec([const] in nsIFileSpec original); attribute string URLString; attribute string unixStyleFilePath; attribute string persistentDescriptorString; attribute string nativePath; readonly attribute string NSPRPath; void error(); boolean isValid(); boolean failed(); attribute string leafName; readonly attribute nsIFileSpec parent; readonly attribute nsIInputStream inputStream; readonly attribute nsIOutputStream outputStream; boolean isChildOf(in nsIFileSpec possibleParent); [noscript] readonly attribute nsFileSpec fileSpec; [noscript] void setFromFileSpec([const] in nsFileSpecRef spec); attribute string fileContents; void makeUnique(); void makeUniqueWithSuggestedName(in string suggestedName); readonly attribute unsigned long modDate; boolean modDateChanged(in unsigned long oldStamp); boolean isDirectory(); boolean isFile(); boolean exists(); boolean isHidden(); boolean equals(in nsIFileSpec spec); readonly attribute unsigned long fileSize; readonly attribute long long diskSpaceAvailable; void appendRelativeUnixPath(in string relativePath); void createDir(); void touch(); boolean isSymlink(); void resolveSymlink(); void delete(in boolean recursive); void truncate(in long aNewLength); void rename([const] in string newLeafName); void copyToDir([const] in nsIFileSpec newParentDir); void moveToDir([const] in nsIFileSpec newParentDir); void execute([const] in string args); void openStreamForReading(); void openStreamForWriting(); void openStreamForReadingAndWriting(); void closeStream(); boolean isStreamOpen(); boolean eof(); long read(inout string buffer, in long requestedCount); void readLine(inout string line, in long bufferSize, out boolean wasTruncated); /** Check eof() before each call. * CAUTION: false result only indicates line was truncated * to fit buffer, or an error occurred (OTHER THAN eof). */ long write(in string data, in long requestedCount); void flush(); void seek(in long offset); long tell(); void endLine(); }; // Define Contractid and CID %{C++ // {a3020981-2018-11d3-915f-a957795b7ebc} #define NS_DIRECTORYITERATOR_CID \ { 0xa3020981, 0x2018, 0x11d3, { 0x91, 0x5f, 0xa9, 0x57, 0x79, 0x5b, 0x7e, 0xbc } } #define NS_DIRECTORYITERATOR_CONTRACTID "@mozilla.org/directoryiterator;1" #define NS_DIRECTORYITERATOR_CLASSNAME "nsIDirectoryIterator" %} [scriptable, uuid(d8c0a083-0868-11d3-915f-d9d889d48e3c)] interface nsIDirectoryIterator : nsISupports { void init(in nsIFileSpec parent, in boolean resolveSymlink); boolean exists(); void next(); readonly attribute nsIFileSpec currentSpec; }; %{C++ // Factory methods if you link with xpcom NS_COM nsresult NS_NewFileSpecWithSpec(const nsFileSpec& aSrcFileSpec, nsIFileSpec **result); NS_COM nsresult NS_NewFileSpec(nsIFileSpec** result); NS_COM nsresult NS_NewDirectoryIterator(nsIDirectoryIterator** result); #define NS_BOOL_ACCESSOR(_method) { PRBool yes; return NS_SUCCEEDED(f->_method(&yes)) && yes; } inline PRBool Exists(nsIFileSpec* f) NS_BOOL_ACCESSOR(Exists) inline PRBool Exists(nsIDirectoryIterator* f) NS_BOOL_ACCESSOR(Exists) inline PRBool IsDirectory(nsIFileSpec* f) NS_BOOL_ACCESSOR(IsDirectory) %}