Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 69b05d49de08d42f926292b8c99d6040bac42f34
  • master par défaut
  • 1-baka-export
  • meson
  • assdraw
  • old-master
  • v3.2.2
  • v3.2.1
  • v3.2.0
  • v3.1.3
  • v3.1.2
  • v3.1.1
  • v3.1.0
  • v3.0.4
  • v3.0.3
  • v3.0.2
  • v3.0.1
  • v3.0.0
  • v2.1.3
  • v2.1.4
  • v2.1.5
  • v2.1.6
  • v2.1.0
  • v2.1.1
  • v2.1.2
  • v2.1.7
26 résultats

io.cpp

Blame
  • io.cpp 3,07 Kio
    // Copyright (c) 2010, Amar Takhar <verm@aegisub.org>
    //
    // Permission to use, copy, modify, and distribute this software for any
    // purpose with or without fee is hereby granted, provided that the above
    // copyright notice and this permission notice appear in all copies.
    //
    // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    
    /// @file io.cpp
    /// @brief Windows IO methods.
    /// @ingroup libaegisub
    
    #ifndef LAGI_PRE
    #include <sys/stat.h>
    #include <errno.h>
    
    #include <iostream>
    #include <fstream>
    #endif
    
    #include <libaegisub/access.h>
    #include <libaegisub/charset_conv_win.h>
    #include "libaegisub/io.h"
    #include "libaegisub/log.h"
    #include "libaegisub/util.h"
    
    #ifdef _WIN32
    #define snprintf sprintf_s
    #endif
    
    namespace {
    	std::string make_temp_name(std::string const& filename) {
    		char tmp[1024];
    		snprintf(tmp, sizeof tmp, "_tmp_%lld", (long long)time(0));
    
    		std::string::size_type pos = filename.rfind('.');
    		if (pos == std::string::npos)
    			return filename + tmp;
    
    		return filename.substr(0, pos) + tmp + filename.substr(pos);
    	}
    }
    
    namespace agi {
    	namespace io {
    
    using agi::charset::ConvertW;
    
    #ifndef _WIN32
    #define ConvertW
    #endif
    
    std::ifstream* Open(const std::string &file, bool binary) {
    	LOG_D("agi/io/open/file") << file;
    	acs::CheckFileRead(file);
    
    	std::ifstream *stream = new std::ifstream(ConvertW(file).c_str(), (binary ? std::ios::binary : std::ios::in));
    
    	if (stream->fail()) {
    		delete stream;
    		throw IOFatal("Unknown fatal error as occurred");
    	}
    
    	return stream;