32 int len = path.length();
33 while(len > 0 && path[len-1]!=
'/') len--;
34 while(len > 0 && path[len-1]==
'/') len--;
35 return path.substr(0, len);
40 if (!ctx->rename_info) {
54 std::vector<renameop>
todo;
66 d->
todo.push_back(op);
88 std::string rep = it->second + (path + p.length());
105 std::sort(d->
todo.begin(), d->
todo.end());
106 for (std::vector< csync_rename_s::renameop >::iterator it = d->
todo.begin();
107 it != d->
todo.end(); ++it) {
char * csync_rename_adjust_path(CSYNC *ctx, const char *path)
char * c_strdup(const char *str)
Duplicate a string.
enum csync_instructions_e instruction
Private interface of csync.
int csync_propagate_renames(CSYNC *ctx)
static int _csync_rename_record(void *obj, void *data)
struct csync_s::@3 remote
std::map< std::string, std::string > folder_renamed_to
int c_rbtree_walk(c_rbtree_t *tree, void *data, c_rbtree_visit_func *visitor)
Walk over a red-black tree.
bool operator<(const renameop &other) const
std::vector< renameop > todo
int csync_propagate_rename_file(CSYNC *ctx, csync_file_stat_t *st)
void csync_rename_record(CSYNC *ctx, const char *from, const char *to)
static std::string _parentDir(const std::string &path)
void csync_rename_destroy(CSYNC *ctx)
static csync_rename_s * get(CSYNC *ctx)