[llvm-commits] [llvm] r89765 - in /llvm/trunk: include/llvm/System/Path.h lib/System/Unix/Path.inc lib/System/Win32/Path.inc
Edward O'Callaghan
eocallaghan at auroraux.org
Tue Nov 24 11:39:04 PST 2009
G'Day Daniel,
> I would prefer this be Path::isRegularFile, that corresponds to a well
> known Unixism (S_ISREG) and avoids creating new terminology.
> Similarly, I don't think it should do anything else -- checking that
> the path is a directory is something clients can do.
You know that's about the forth time someone has told me to change the name. :|
Also, isRegularFile would be wrong because it returns false for being
a regular file, that's not we want to be checking for, you got it the
wrong way around.
I'm not sure what you mean about not checking a directory, if its not
a reg file or a directory then its special. Please see how its being
used on the clang side of this fix. This is a two part fix, one side
on LLVM and the other on Clang.
Cheers,
Edward.
2009/11/24 Daniel Dunbar <daniel at zuster.org>:
> Hi Edward,
>
>
> On Tue, Nov 24, 2009 at 7:19 AM, Edward O'Callaghan
> <eocallaghan at auroraux.org> wrote:
>> Author: evocallaghan
>> Date: Tue Nov 24 09:19:10 2009
>> New Revision: 89765
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=89765&view=rev
>> Log:
>> Provide Path::isSpecialFile interface for PR5568.
>>
>> Modified:
>> llvm/trunk/include/llvm/System/Path.h
>> llvm/trunk/lib/System/Unix/Path.inc
>> llvm/trunk/lib/System/Win32/Path.inc
>>
>> Modified: llvm/trunk/include/llvm/System/Path.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/System/Path.h?rev=89765&r1=89764&r2=89765&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/System/Path.h (original)
>> +++ llvm/trunk/include/llvm/System/Path.h Tue Nov 24 09:19:10 2009
>> @@ -380,6 +380,11 @@
>> /// in the file system.
>> bool canWrite() const;
>>
>> + /// This function checks that what we're trying to work only on a regular file or Dir.
>> + /// Check for things like /dev/null, any block special file,
>> + /// or other things that aren't "regular" files.
>> + bool isSpecialFile() const;
>> +
>> /// This function determines if the path name references an executable
>> /// file in the file system. This function checks for the existence and
>> /// executability (by the current program) of the file.
>
>
> I would prefer this be Path::isRegularFile, that corresponds to a well
> known Unixism (S_ISREG) and avoids creating new terminology.
> Similarly, I don't think it should do anything else -- checking that
> the path is a directory is something clients can do.
>
> - Daniel
>
>> Modified: llvm/trunk/lib/System/Unix/Path.inc
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Unix/Path.inc?rev=89765&r1=89764&r2=89765&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/System/Unix/Path.inc (original)
>> +++ llvm/trunk/lib/System/Unix/Path.inc Tue Nov 24 09:19:10 2009
>> @@ -335,7 +335,7 @@
>> free(pv);
>> return (NULL);
>> }
>> -#endif
>> +#endif // __FreeBSD__
>>
>> /// GetMainExecutable - Return the path to the main executable, given the
>> /// value of argv[0] from program startup.
>> @@ -454,6 +454,24 @@
>> }
>>
>> bool
>> +Path::isSpecialFile() const {
>> + // Get the status so we can determine if its a file or directory
>> + struct stat buf;
>> + std::string *ErrStr;
>> +
>> + if (0 != stat(path.c_str(), &buf)) {
>> + MakeErrMsg(ErrStr, path + ": can't get status of file");
>> + return true;
>> + }
>> +
>> + if (S_ISDIR(buf.st_mode) || S_ISREG(buf.st_mode)) {
>> + return false;
>> + }
>> +
>> + return true;
>> +}
>> +
>> +bool
>> Path::canExecute() const {
>> if (0 != access(path.c_str(), R_OK | X_OK ))
>> return false;
>> @@ -723,7 +741,7 @@
>>
>> bool
>> Path::eraseFromDisk(bool remove_contents, std::string *ErrStr) const {
>> - // Get the status so we can determin if its a file or directory
>> + // Get the status so we can determine if its a file or directory
>> struct stat buf;
>> if (0 != stat(path.c_str(), &buf)) {
>> MakeErrMsg(ErrStr, path + ": can't get status of file");
>>
>> Modified: llvm/trunk/lib/System/Win32/Path.inc
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Win32/Path.inc?rev=89765&r1=89764&r2=89765&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/System/Win32/Path.inc (original)
>> +++ llvm/trunk/lib/System/Win32/Path.inc Tue Nov 24 09:19:10 2009
>> @@ -357,6 +357,11 @@
>> return attr != INVALID_FILE_ATTRIBUTES;
>> }
>>
>> +bool
>> +Path::isSpecialFile() const {
>> + return false;
>> +}
>>
>> std::string
>> Path::getLast() const {
>> // Find the last slash
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
--
--
Edward O'Callaghan
http://www.auroraux.org/
eocallaghan at auroraux dot org
---
() ascii ribbon campaign - against html e-mail
/\ - against microsoft attachments
More information about the llvm-commits
mailing list