Exemplo n.º 1
0
    virtual int copy_file_to_hash
    (const entry_t& source, const path_t& target, hash_t& hash) {
        entry_t& entry = target_entry_;
        string_t target_path(target.chars());
        const char_t* chars = 0;
        int err = 1;

        if ((append_hash_name_to_target_path_) && (chars = hash.name())) {
            target_path.append(&target.extension_separator(), 1);
            target_path.append(hash_name_prefix_);
            target_path.append(chars);
            target_path.append(hash_name_suffix_);
        }

        if ((entry.exists(chars = target_path.chars()))) {
            if ((write_overwrite != write_) && (write_append != write_)) {
                errf("target file \"%s\" already exists\n", chars);
            } else {
                fs::entry_type type = fs::entry_type_none;

                switch (type = entry.type()) {
                case fs::entry_type_file:
                    err = copy_file_to_file_hash(source, entry, hash);
                    break;
                default:
                    break;
                }
            }
        } else {
            if (!(err = make_directory(entry, target))) {
                entry.set_path(chars);
                err = copy_file_to_file_hash(source, entry, hash);
            } else {
                errf("failed to make directory \"%s\"\n", target.directory().chars());
            }
        }
        if (!(err) && (!(to_same != to_) || !(target_modified_))) {
            if ((entry.set_times_to_set(source))) {
                if ((entry.set_times_set())) {
                } else {
                }
            }
        }
        return err;
    }
Exemplo n.º 2
0
    virtual int make_directories
    (const sub_directories_t& sub_directories, const entry_t& entry, const path_t& path) {
        int err = 0;
        sub_directories_t::const_iterator end = sub_directories.end();
        sub_directories_t::const_iterator i;

        for (i = sub_directories.begin(); i != end; ++i) {
            const sub_directory_t& d = *i;
            string_t path(d.chars, d.length);

            EV_LOG_MESSAGE_INFO("make directory \"" << path << "\"...");
            if ((entry.make_directory(path.chars()))) {
                EV_LOG_MESSAGE_INFO("...made directory \"" << path << "\"");
            } else {
                EV_LOG_MESSAGE_INFO("...failed to make directory \"" << path << "\"");
                return 1;
            }
        }
        return err;
    }
Exemplo n.º 3
0
    virtual int copy(const path_t& source, const path_t& target) {
        entry_t& entry = source_entry_;
        const char_t* chars = 0;
        int err = 0;

        if ((entry.exists(chars = source.chars()))) {
            fs::entry_type type = fs::entry_type_none;

            switch (type = entry.type()) {
            case fs::entry_type_file:
                err = copy_file(entry, target);
                break;
            default:
                break;
            }
        } else {
            errf("source file \"%s\" does not exist\n", chars);
            err = 1;
        }
        return err;
    }
Exemplo n.º 4
0
    virtual int copy_file(const entry_t& source, const path_t& target) {
        entry_t& entry = target_entry_;
        const char_t* chars = 0;
        int err = 1;

        if ((entry.exists(chars = target.chars()))) {
            if ((write_overwrite != write_) && (write_append != write_)) {
                errf("target file \"%s\" already exists\n", chars);
            } else {
                fs::entry_type type = fs::entry_type_none;

                switch (type = entry.type()) {
                case fs::entry_type_file:
                    err = copy_file_to_file(source, entry);
                    break;
                default:
                    break;
                }
            }
        } else {
            if (!(err = make_directory(entry, target))) {
                entry.set_path(chars);
                err = copy_file_to_file(source, entry);
            } else {
                errf("failed to make directory \"%s\"\n", target.directory().chars());
            }
        }
        if (!(err) && (!(to_same != to_) || !(target_modified_))) {
            if ((entry.set_times_to_set(source))) {
                if ((entry.set_times_set())) {
                } else {
                }
            }
        }
        return err;
    }