llvm/lib/System/Unix
Ted Kremenek c5412c58d2 Re-implemented Path::createDirectoryOnDisk (for Unix).
This method allows one to create a directory, and optionally create all parent
directories that do not exist.

The original implementation would require that *all* directories along a path
are writable by the user, including directories that already exist. For example,
suppose we wanted to create the directory "/tmp/foo/bar", and the directory
"/tmp" already exists, but not "/tmp/foo". Since "/tmp" is writable by all
users, the original implementation would work, and create "/tmp/foo", followed
by "/tmp/bar".

A problem occurred, however if one wanted to created the directory
"/Users/myuser/bar" (or equivalently "/home/myuser/bar"), and "/Users/myuser"
already existed and is writable by the current user. The directory
"/User/myuser" is writable by the user, but "/User" is not. The original
implementation of createDirectoryOnDisk would return with failure since "/User"
is not writable, even though "/User/mysuser" is writable.

The new implementation works by recursively creating parents as needed, and thus
doesn't need to check the permissions on every directory in a path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49162 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-03 16:11:31 +00:00
..
Alarm.inc Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
Memory.inc Revert r48676. I had plans for using it, but now it's just dead code. 2008-03-24 21:29:58 +00:00
Mutex.inc Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
Path.inc Re-implemented Path::createDirectoryOnDisk (for Unix). 2008-04-03 16:11:31 +00:00
Process.inc Actually disable crash reporting on Mac OS X, returning bugpoint to speedy 2008-03-31 22:19:25 +00:00
Program.inc Set error message. 2008-02-04 20:57:54 +00:00
README.txt
Signals.inc Avoid calling array_endof in a static initializer, as it incurs 2008-03-21 23:44:21 +00:00
TimeValue.inc Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
Unix.h Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00

llvm/lib/System/Unix README
===========================

This directory provides implementations of the lib/System classes that
are common to two or more variants of UNIX. For example, the directory 
structure underneath this directory could look like this:

Unix           - only code that is truly generic to all UNIX platforms
  Posix        - code that is specific to Posix variants of UNIX
  SUS          - code that is specific to the Single Unix Specification 
  SysV         - code that is specific to System V variants of UNIX

As a rule, only those directories actually needing to be created should be
created. Also, further subdirectories could be created to reflect versions of
the various standards. For example, under SUS there could be v1, v2, and v3
subdirectories to reflect the three major versions of SUS.