- argc--, argv++;
- if (argc > 0 && !strcmp(*argv, "-r")) {
- iamrecursive++;
- argc--, argv++;
- }
- if (argc > 0 && !strcmp(*argv, "-d")) {
- targetshouldbedirectory = 1;
- argc--, argv++;
- }
- if (argc > 0 && !strcmp(*argv, "-f")) {
- argc--, argv++; iamremote = 1;
- (void) response();
- (void) setuid(getuid());
- source(argc, argv);
- exit(errs);
- }
- if (argc > 0 && !strcmp(*argv, "-t")) {
- argc--, argv++; iamremote = 1;
- (void) setuid(getuid());
- sink(argc, argv);
- exit(errs);
+
+ for (argc--, argv++; argc > 0 && **argv == '-'; argc--, argv++) {
+ (*argv)++;
+ while (**argv) switch (*(*argv)++) {
+
+ case 'r':
+ iamrecursive++;
+ break;
+
+ case 'p': /* preserve mtimes and atimes */
+ pflag++;
+ break;
+
+ /* The rest of these are not for users. */
+ case 'd':
+ targetshouldbedirectory = 1;
+ break;
+
+ case 'f': /* "from" */
+ iamremote = 1;
+ (void) response();
+ (void) setuid(userid);
+ source(--argc, ++argv);
+ exit(errs);
+
+ case 't': /* "to" */
+ iamremote = 1;
+ (void) setuid(userid);
+ sink(--argc, ++argv);
+ exit(errs);
+
+ default:
+ fprintf(stderr,
+ "Usage: rcp [-p] f1 f2; or: rcp [-rp] f1 ... fn d2\n");
+ exit(1);
+ }