mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Equivalent to llvm::sys::fs::rename, except that if the destination file exists and has the same contents as the source file, the source file is simply deleted and the destination file is not touched. Used in next commit. Swift SVN r28041
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
//===--- FileSystem.cpp - Extra helpers for manipulating files --*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See http://swift.org/LICENSE.txt for license information
|
|
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_BASIC_FILESYSTEM_H
|
|
#define SWIFT_BASIC_FILESYSTEM_H
|
|
|
|
#include "llvm/ADT/Twine.h"
|
|
#include <system_error>
|
|
|
|
namespace swift {
|
|
/// Moves a file from \p source to \p destination, unless there is already
|
|
/// a file at \p destination that contains the same data as \p source.
|
|
///
|
|
/// In the latter case, the file at \p source is deleted. If an error occurs,
|
|
/// the file at \p source will still be present at \p source.
|
|
std::error_code moveFileIfDifferent(const llvm::Twine &source,
|
|
const llvm::Twine &destination);
|
|
}
|
|
|
|
#endif
|