#include #include #include #include /* Produce a script to feed to ftp to replicate a directory. */ int filetype(char *file) { struct stat st; if ((!file) || (!*file)) return 0; if (stat(file, &st) < 0) return 0; if (S_ISREG(st.st_mode)) return 1; if (S_ISDIR(st.st_mode)) return 2; return 0; } void dodir(char *name) { DIR *d; struct dirent *e; chdir(name); d = opendir("."); while (e = readdir(d)) { int t = filetype(e->d_name); if (*e->d_name == '.') continue; if (t == 1) { printf("put %s\n", e->d_name); } else if (t == 2) { printf("mkdir %s\n", e->d_name); printf("cd %s\n", e->d_name); printf("lcd %s\n", e->d_name); dodir(e->d_name); printf("cd ..\nlcd ..\n"); } } closedir(d); chdir(".."); } int main(int argc, char **argv) { printf("open %s\nuser %s %s\nbinary\n", argv[1], argv[2], argv[3]); dodir("."); return 0; }