Index: cp.c =================================================================== RCS file: /home/ncvs/src/bin/cp/cp.c,v retrieving revision 1.24 diff -u -r1.24 cp.c --- cp.c 1999/11/28 09:34:21 1.24 +++ cp.c 2001/04/19 18:42:57 @@ -98,11 +98,11 @@ { struct stat to_stat, tmp_stat; enum op type; - int Hflag, Lflag, Pflag, ch, fts_options, r; + int Hflag, Lflag, Pflag, dflag, ch, fts_options, r; char *target; - Hflag = Lflag = Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRfiprv")) != -1) + Hflag = Lflag = Pflag = dflag = 0; + while ((ch = getopt(argc, argv, "HLPRd:fiprv")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -119,6 +119,10 @@ case 'R': Rflag = 1; break; + case 'd': + target = strdup(optarg); + dflag = 1; + break; case 'f': fflag = 1; iflag = 0; @@ -176,7 +180,8 @@ (void)umask(myumask); /* Save the target base in "to". */ - target = argv[--argc]; + if (!dflag) + target = argv[--argc]; if (strlen(target) > MAXPATHLEN) errx(1, "%s: name too long", target); (void)strcpy(to.p_path, target);