Header
//#############################################################################
class file_info {
public:
file_info* next;
char name[20];
time_t source_time;
time_t dest_time;
file_info();
~file_info();
void set_name(char* s) {strcpy(name, s);}
;
void set_time(time_t t, int is_source);
void show(FILE* output);
void copy(char* source, char* destination);
};
Code
//#############################################################################
file_info::file_info()
{
next = NULL;
strcpy(name, "");
source_time = 0;
dest_time = 0;
}
//#############################################################################
file_info::~file_info()
{
}
file_info* file_list = NULL;
//#############################################################################
void file_info::set_time(time_t t, int is_source)
{
if (is_source) {
source_time = t;
}
else {
dest_time = t;
}
}
//#############################################################################
void file_info::show(FILE* output)
{
char buffer[100];
fprintf(output, "%-13s - ", name);
strftime(buffer, 99, "%d/%m/%Y %H:%M:%S", localtime( source_time));
fprintf(output, "%s - ", buffer);
strftime(buffer, 99, "%d/%m/%Y %H:%M:%S", localtime( dest_time));
fprintf(output, "%s - ", buffer);
if (source_time == 0) {
fprintf(output, "remove dest");
}
else if (difftime(dest_time, source_time) < 0.0) {
fprintf(output, "copy source");
}
else {
fprintf(output, "leave dest");
}
fprintf(output, "\n");
}
//#############################################################################
void file_info::copy(char* source, char* destination)
{
char source_name[256];
char destination_name[256];
strcpy(source_name, source);
strcat(source_name, name);
strcpy(destination_name, destination);
strcat(destination_name, name);
if (source_time == 0 merge != 1) {
printf("remove %s\n", destination_name);
_unlink(destination_name);
}
else if (difftime(dest_time, source_time) < 0.0 || force == 1) {
printf("copy %s to %s\n", source_name, destination_name);
copy_file(source_name, destination_name);
}
else {
printf("skip %s\n", destination_name);
}
}