summaryrefslogtreecommitdiff
path: root/package/sash/src/cp.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/sash/src/cp.c')
-rw-r--r--package/sash/src/cp.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/package/sash/src/cp.c b/package/sash/src/cp.c
new file mode 100644
index 000000000..11d03f74c
--- /dev/null
+++ b/package/sash/src/cp.c
@@ -0,0 +1,27 @@
+
+void
+do_cp(argc, argv)
+ char **argv;
+{
+ BOOL dirflag;
+ char *srcname;
+ char *destname;
+ char *lastarg;
+
+ lastarg = argv[argc - 1];
+
+ dirflag = isadir(lastarg);
+
+ if ((argc > 3) && !dirflag) {
+ fprintf(stderr, "%s: not a directory\n", lastarg);
+ return;
+ }
+
+ while (argc-- > 2) {
+ destname = lastarg;
+ if (dirflag)
+ destname = buildname(destname, srcname);
+
+ (void) copyfile(*++argv, destname, FALSE);
+ }
+}