plus a bunch of other fixes and cleanups:
- Fix comment misstatements of fact in nsIFile.idl, improve style slightly.
- Fix typo in comment in nsILocalFile.idl.
- Avoid gratuitous nsCString and nsXPIDLCString copy-constructions, which
entail malloc'ing, in nsLocalFileUnix.cpp's CopyTo and GetParent methods.
But do use nsXPIDLCString instead of raw nsMemory::Alloc/Free.
- Get rid of unnecessary mLL_II2L and mLL_L2II macros, use "prlong.h" API only.
Also use the LL_* macros consistently in case a Unix lacking long long type
support wants to use this code.
* BTW, the "Date" methods should be renamed to use "Time" instead -- after all
PRTime is the type, and traditionally "time" refers to the time-number, a
scalar independent of one's position on the surface of the earth, while
"date" refers to a struct full of locale-specific information derived from
time and some "environment" variables such as DST. Can we rename these
nsIFile methods before Mozilla 0.9 / Netscape 6?
- Use CHECK_mPath consistently and first, before any assertions relating to
arguments (which logically come after the 'this' parameter CHECK_mPath is
making assertions about).
- Use nsCOMPtr for singly-inheriting implementations of XPCOM interfaces, to
avoid scary-when-scaled 0-refcnt instances from being handled (these all
got a ref via QI or equivalent soon enough, but you never know). This also
removed some naked deletes.
- Canonize all paths copied into mPath to lack trailing slashes, so we don't
need to strip trailing slashes elsewhere, in higher-frequency methods (you
set path less often than you get it or a substring of it).
- ssize_t for strlen return values.
- Since shaver used a function pointer to consolidate creat/mkdir logic, but
didn't fold the necessary close of the new fd returned by non-failing creat
into the pointed-at function, I did that.
- AppendRelativePath forbids .. as a component (bounded by / or beginning or
end of string on either side), not just in the middle of fragment (so that
foo..bar is not an illegal relative pathname -- it should not be). BTW,
what the heck is the difference between NS_ERROR_FILE_UNRECOGNIZED_PATH and
...INVALID_PATH?
- SetLeafName was overallocating the new pathname buffer by failing to subtract
the old leafname's length.
- CopyTo was failing to return an NSRESULT_FOR_ERRNO(), it just called that
macro on a line by itself -- eek! It also contained redundant if (newFD
== nsnull) {...} cleanup code, it did a useless PR_GetFileInfo call, and it
leaked FDs on read or write error.
- Implemented CopyToFollowingLinks as a forwarded call to CopyTo, Unix does
not support "copying" a symlink via normal file i/o. Should we instead
lstat in CopyTo and if a link is the source of the copy, do readlink and
then symlink?
- Fixed the readlink method (GetTarget) to null-terminate the link string in
the out parameter (readlink does not do that for you).
- Lots of little nsnull vs. NULL vs. 0, == and != applied to boolean or null
literals, white-space, indentation, bracing, comment, and sloppy code order
(e.g., declaring an initialized variable that's not used till after early
returns) fixes. Also invert some return logic so that NS_OK is the normal,
least indented, final return.
git-svn-id: svn://10.0.0.236/trunk@79492 18797224-902f-48f8-a5cc-f745e15eee43
2. It is now possible to pass nsnull for the path param to NS_NewLocalFile(). This allows one to create an unspecified file.
r = dougt
git-svn-id: svn://10.0.0.236/trunk@74318 18797224-902f-48f8-a5cc-f745e15eee43
Adding followSymlink flag to nsILocalFile.
Adjusting callers.
windows shortcut optimizations.
r=blizzard@mozilla.org.
a=brendan@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@74127 18797224-902f-48f8-a5cc-f745e15eee43
- nsILocalFile::Append() returns error uniformly on all platforms if
more than one component of path is being appended.
git-svn-id: svn://10.0.0.236/trunk@68351 18797224-902f-48f8-a5cc-f745e15eee43
a=leaf. This is #ifdefed for Tru64 Unix, but if it causes
bustage and I am not on IRC, you can get me at 919.859.3885
git-svn-id: svn://10.0.0.236/trunk@65382 18797224-902f-48f8-a5cc-f745e15eee43
It is a nsIProperty.
2. Updates to the nsIFile and nsILocalFile interfaces based on conversations
with warren. (thanks)
3. Updated windows mac and unix implementations based on interface changes.
Mac and windows changes need to be reviewed.
Not part of build.
git-svn-id: svn://10.0.0.236/trunk@56336 18797224-902f-48f8-a5cc-f745e15eee43