#include #include #include #include #include #include #include #include "make_path.h" char *f_flag = "mv"; int move(const char *src, const char *dst) { char *copy = strdup(src); if (!copy) return 1; char *new_path = mu_make_path(f_flag, dst, basename(copy)); if (new_path == NULL) { free(copy); return 1; } int ret = 0; if (rename(src, new_path) < 0) ret = 1; free(new_path); free(copy); return ret; } int main(int argc, char **argv) { int opt; while ((opt = getopt(argc, argv, "f")) != -1) { switch (opt) { case 'f': f_flag = NULL; break; default: printf("mv [f] [src1 src2...] [dst]\n\t-f Force\n"); return 0; } } argv += optind; argc -= optind; /* Move code */ for (int i = 0; i < argc - 1; i++) { if (move(argv[i], argv[argc - 1])) { if (rename(argv[i], argv[argc - 1]) < 0) { if (f_flag) fprintf(stderr, "mv: %s %s\n", argv[i], strerror(errno)); return 1; } } } return 0; }