mirror of
https://github.com/QIDITECH/QIDISlicer.git
synced 2026-02-02 08:58:43 +03:00
update bundled_deps
This commit is contained in:
91
bundled_deps/libigl/igl/dated_copy.cpp
Normal file
91
bundled_deps/libigl/igl/dated_copy.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
// This file is part of libigl, a simple c++ geometry processing library.
|
||||
//
|
||||
// Copyright (C) 2014 Alec Jacobson <alecjacobson@gmail.com>
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public License
|
||||
// v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
||||
// obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#include "dated_copy.h"
|
||||
#include "dirname.h"
|
||||
#include "basename.h"
|
||||
|
||||
#include <ctime>
|
||||
#include <fstream>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <iostream>
|
||||
|
||||
#if !defined(_WIN32)
|
||||
#include <unistd.h>
|
||||
|
||||
IGL_INLINE bool igl::dated_copy(const std::string & src_path, const std::string & dir)
|
||||
{
|
||||
using namespace std;
|
||||
// Get time and date as string
|
||||
char buffer[80];
|
||||
time_t rawtime;
|
||||
struct tm * timeinfo;
|
||||
time (&rawtime);
|
||||
timeinfo = localtime (&rawtime);
|
||||
// ISO 8601 format with hyphens instead of colons and no timezone offset
|
||||
strftime (buffer,80,"%Y-%m-%dT%H-%M-%S",timeinfo);
|
||||
string src_basename = basename(src_path);
|
||||
string dst_basename = src_basename+"-"+buffer;
|
||||
string dst_path = dir+"/"+dst_basename;
|
||||
cerr<<"Saving binary to "<<dst_path;
|
||||
{
|
||||
// http://stackoverflow.com/a/10195497/148668
|
||||
ifstream src(src_path,ios::binary);
|
||||
if (!src.is_open())
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
ofstream dst(dst_path,ios::binary);
|
||||
if(!dst.is_open())
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
dst << src.rdbuf();
|
||||
}
|
||||
cerr<<" succeeded."<<endl;
|
||||
cerr<<"Setting permissions of "<<dst_path;
|
||||
{
|
||||
int src_posix = fileno(fopen(src_path.c_str(),"r"));
|
||||
if(src_posix == -1)
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
struct stat fst;
|
||||
fstat(src_posix,&fst);
|
||||
int dst_posix = fileno(fopen(dst_path.c_str(),"r"));
|
||||
if(dst_posix == -1)
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
//update to the same uid/gid
|
||||
if(fchown(dst_posix,fst.st_uid,fst.st_gid))
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
//update the permissions
|
||||
if(fchmod(dst_posix,fst.st_mode) == -1)
|
||||
{
|
||||
cerr<<" failed."<<endl;
|
||||
return false;
|
||||
}
|
||||
cerr<<" succeeded."<<endl;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
IGL_INLINE bool igl::dated_copy(const std::string & src_path)
|
||||
{
|
||||
return dated_copy(src_path,dirname(src_path));
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user