diff options
Diffstat (limited to 'klm/util')
| -rw-r--r-- | klm/util/file.cc | 10 | ||||
| -rw-r--r-- | klm/util/file.hh | 8 | ||||
| -rw-r--r-- | klm/util/file_piece.cc | 2 | ||||
| -rw-r--r-- | klm/util/have.hh | 2 | ||||
| -rw-r--r-- | klm/util/mmap.cc | 16 | ||||
| -rw-r--r-- | klm/util/string_piece.hh | 5 | 
6 files changed, 25 insertions, 18 deletions
| diff --git a/klm/util/file.cc b/klm/util/file.cc index 6a3885a7..98f13983 100644 --- a/klm/util/file.cc +++ b/klm/util/file.cc @@ -44,6 +44,16 @@ int OpenReadOrThrow(const char *name) {    return ret;  } +int CreateOrThrow(const char *name) { +  int ret; +#if defined(_WIN32) || defined(_WIN64) +  UTIL_THROW_IF(-1 == (ret = _open(name, _O_CREAT | _O_TRUNC | _O_RDWR, _S_IREAD | _S_IWRITE)), ErrnoException, "while creating " << name); +#else +  UTIL_THROW_IF(-1 == (ret = open(name, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)), ErrnoException, "while creating " << name); +#endif +  return ret; +} +  uint64_t SizeFile(int fd) {  #if defined(_WIN32) || defined(_WIN64)    __int64 ret = _filelengthi64(fd); diff --git a/klm/util/file.hh b/klm/util/file.hh index 5c57e2a9..8af1ff4f 100644 --- a/klm/util/file.hh +++ b/klm/util/file.hh @@ -65,7 +65,10 @@ class scoped_FILE {      std::FILE *file_;  }; +// Open for read only.    int OpenReadOrThrow(const char *name); +// Create file if it doesn't exist, truncate if it does.  Opened for write.    +int CreateOrThrow(const char *name);  // Return value for SizeFile when it can't size properly.    const uint64_t kBadSize = (uint64_t)-1; @@ -91,10 +94,13 @@ class TempMaker {    public:      explicit TempMaker(const std::string &prefix); +    // These will already be unlinked for you.        int Make() const; -      std::FILE *MakeFile() const; +    // This will force you to close the fd instead of leaving it open.   +    std::string Name(scoped_fd &opened) const; +    private:      std::string base_;  }; diff --git a/klm/util/file_piece.cc b/klm/util/file_piece.cc index a205995a..19a68728 100644 --- a/klm/util/file_piece.cc +++ b/klm/util/file_piece.cc @@ -27,7 +27,7 @@ ParseNumberException::ParseNumberException(StringPiece value) throw() {  #ifdef HAVE_ZLIB  GZException::GZException(gzFile file) {    int num; -  *this << gzerror( file, &num) << " from zlib"; +  *this << gzerror(file, &num) << " from zlib";  }  #endif // HAVE_ZLIB diff --git a/klm/util/have.hh b/klm/util/have.hh index b8181e99..1d76a7fc 100644 --- a/klm/util/have.hh +++ b/klm/util/have.hh @@ -13,7 +13,7 @@  #endif  #ifndef HAVE_BOOST -#define HAVE_BOOST +//#define HAVE_BOOST  #endif  #ifndef HAVE_THREADS diff --git a/klm/util/mmap.cc b/klm/util/mmap.cc index 576fd4cc..bc9e3f81 100644 --- a/klm/util/mmap.cc +++ b/klm/util/mmap.cc @@ -19,8 +19,8 @@  #include <windows.h>  #include <io.h>  #else -#include <unistd.h>  #include <sys/mman.h> +#include <unistd.h>  #endif  namespace util { @@ -171,20 +171,6 @@ void *MapZeroedWrite(int fd, std::size_t size) {    return MapOrThrow(size, true, kFileFlags, false, fd, 0);  } -namespace { - -int CreateOrThrow(const char *name) { -  int ret; -#if defined(_WIN32) || defined(_WIN64) -  UTIL_THROW_IF(-1 == (ret = _open(name, _O_CREAT | _O_TRUNC | _O_RDWR, _S_IREAD | _S_IWRITE)), ErrnoException, "while creating " << name); -#else -  UTIL_THROW_IF(-1 == (ret = open(name, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)), ErrnoException, "while creating " << name); -#endif -  return ret; -} - -} // namespace -  void *MapZeroedWrite(const char *name, std::size_t size, scoped_fd &file) {    file.reset(CreateOrThrow(name));    try { diff --git a/klm/util/string_piece.hh b/klm/util/string_piece.hh index 5de053aa..be6a643d 100644 --- a/klm/util/string_piece.hh +++ b/klm/util/string_piece.hh @@ -85,6 +85,11 @@ U_NAMESPACE_BEGIN  #include <string>  #include <string.h> +#ifdef WIN32 +#undef max +#undef min +#endif +  class StringPiece {   public:    typedef size_t size_type; | 
