Boost logo

Boost Users :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-07-23 01:42:05


Russell Hind wrote:

> Vladimir Prus wrote:
>>
>> I believe you can't do it portably.... on Linux, for example, there's
>> O_EXCL flag to the 'open' system call, but you can't specify this flag
>> via boost::fs. In fact, this is related to temporary file discussion we
>> had on dev list before.
>>
>> Probably, it means we need a function in boost::fs to do what you ask
>> for.
>>
>
> I think it would be useful, although I'm not sure how you could
> integrate it with std streams? If you use CreateFile in Win32 with
> CREATE_NEW (which fails if exists), can you construct a std::ofstream
> with that handle? (I guess it would be similar in linux)?

I'm probably missing something very basic, but you can open fstream using
the filename. After all, CreateFile made sure that file did not exist
before and created the new one for your use. Now, you can safely open it by
name.

The only problem (as discussed of dev-) is when somebody removes the file
between the time you called CreateFile and you construct fstream. On Unix,
this can be prevented by checking directory permissions. I'm not sure what
permission models are there on Windows... last used it during Win95 days.

- Volodya


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net