commit e509d56bae7fd9799ae47d081d8b5dbaf6a3efe8
parent 5c7b7e3fa85157e9771304ab0b5a0ea8218b25ae
Author: Federico G. Benavento <benavento@gmail.com>
Date: Sun, 10 Mar 2013 21:59:22 -0300
s/getopt/ARGBEGIN/ and -r bug fix cp
Diffstat:
M | cp.c | | | 22 | ++++++++++------------ |
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/cp.c b/cp.c
@@ -1,7 +1,6 @@
/* See LICENSE file for copyright and license details. */
#include <stdbool.h>
#include <stdlib.h>
-#include <unistd.h>
#include <sys/stat.h>
#include "fs.h"
#include "util.h"
@@ -10,18 +9,17 @@ int
main(int argc, char *argv[])
{
struct stat st;
- char c;
- while((c = getopt(argc, argv, "r")) != -1)
- switch(c) {
- case 'r':
- cp_rflag = true;
- break;
- default:
- exit(EXIT_FAILURE);
- }
- if(argc > 3 && !cp_rflag && !(stat(argv[argc-1], &st) == 0 && S_ISDIR(st.st_mode)))
+ ARGBEGIN {
+ case 'r':
+ cp_rflag = true;
+ break;
+ default:
+ exit(EXIT_FAILURE);
+ } ARGEND;
+
+ if(argc > 2 && !(stat(argv[argc-1], &st) == 0 && S_ISDIR(st.st_mode)))
eprintf("%s: not a directory\n", argv[argc-1]);
- enmasse(argc - optind, &argv[optind], cp);
+ enmasse(argc, argv, cp);
return EXIT_SUCCESS;
}