fix srcclean when doing multiple files in a single run (nw)

This commit is contained in:
Vas Crabb 2016-09-28 11:57:17 +10:00
parent 6bc18458b8
commit e41e16cf5b

View File

@ -1874,7 +1874,7 @@ int main(int argc, char *argv[])
try try
{ {
// instantiate appropriate cleaner implementation // instantiate appropriate cleaner implementation
char const *const ext(std::strrchr(argv[1], '.')); char const *const ext(std::strrchr(argv[i], '.'));
bool const is_c_file(ext && is_c_source_extension(ext)); bool const is_c_file(ext && is_c_source_extension(ext));
bool const is_lua_file(ext && is_lua_source_extension(ext)); bool const is_lua_file(ext && is_lua_source_extension(ext));
bool const is_xml_file(ext && is_xml_extension(ext)); bool const is_xml_file(ext && is_xml_extension(ext));
@ -1922,31 +1922,31 @@ int main(int argc, char *argv[])
if (!dry_run) if (!dry_run)
{ {
using namespace std::string_literals; using namespace std::string_literals;
std::string const backup(argv[1] + ".orig"s); std::string const backup(argv[i] + ".orig"s);
std::remove(backup.c_str()); std::remove(backup.c_str());
if (std::rename(argv[1], backup.c_str())) if (std::rename(argv[i], backup.c_str()))
{ {
util::stream_format(std::cerr, "Error moving %1$s to backup location\n", argv[1]); util::stream_format(std::cerr, "Error moving %1$s to backup location\n", argv[i]);
++failures; ++failures;
} }
else else
{ {
std::ofstream outfile(argv[1], std::ios_base::binary | std::ios_base::out | std::ios_base::trunc); std::ofstream outfile(argv[i], std::ios_base::binary | std::ios_base::out | std::ios_base::trunc);
outfile.write(&output[0], output.size()); outfile.write(&output[0], output.size());
outfile.flush(); outfile.flush();
if (!outfile) if (!outfile)
{ {
util::stream_format(std::cerr, "Error writing output to %1$s\n", argv[1]); util::stream_format(std::cerr, "Error writing output to %1$s\n", argv[i]);
++failures; ++failures;
outfile.close(); outfile.close();
if (std::rename(backup.c_str(), argv[1])) if (std::rename(backup.c_str(), argv[i]))
util::stream_format(std::cerr, "Error restoring backup of %1$s\n", argv[1]); util::stream_format(std::cerr, "Error restoring backup of %1$s\n", argv[i]);
} }
else if (!keep_backup) else if (!keep_backup)
{ {
if (std::remove(backup.c_str())) if (std::remove(backup.c_str()))
{ {
util::stream_format(std::cerr, "Error removing backup of %1$s\n", argv[1]); util::stream_format(std::cerr, "Error removing backup of %1$s\n", argv[i]);
++failures; ++failures;
} }
} }