- }
- i_src++;
- i_dst++;
- }
- else if (sd > 0)
- {
- strcpy (dst +dst_len+1, e_src[i_src].name);
- strcpy (src +src_len+1, e_src[i_src].name);
-
- stat (src, &fs_src);
- switch (fs_src.st_mode & S_IFMT)
- {
- case S_IFREG:
- file_extract ('a', &fs_src, src, dst);
- break;
- case S_IFDIR:
- repository_add_tree (cmd, dst, src);
- break;
- }
- i_src++;
- }
- else
- {
- strcpy (dst +dst_len+1, e_dst[i_dst].name);
- strcpy (src +src_len+1, e_dst[i_dst].name);
-
- stat (dst, &fs_dst);
- switch (fs_dst.st_mode & S_IFMT)
- {
- case S_IFREG:
- file_extract ('d', &fs_dst, dst, dst);
- break;
- case S_IFDIR:
- repository_del_tree (cmd, dst, src);
- break;
- }
- i_dst++;
- }
- }
- dir_free (&e_dst);
- dir_free (&e_src);
-}
-
-void repository_traverse (int cmd, const char *rep)
-{
- char rep_tmp1[2048];
- char rep_tmp2[2048];
-
- strcpy (rep_tmp1, rep);
- if (base_path)
- {
- strcpy (rep_tmp2, base_path);
- repository_update_r (cmd, rep_tmp2, rep_tmp1);
- }
- else
- repository_extract_r (cmd, rep_tmp1);
-}
-
-
-int main (int argc, char **argv)
-{
- int ret;
- int cmd = 0;
- char *arg;
- char *base_name;
-
- prog = *argv;
- while ((ret = options ("r:v:", argv, argc, &arg)) != -2)
- {
- if (ret == 0)
- {
- if (!base_name)
- {
- base_name = arg;