Catch obvious mistakes in mv

This commit is contained in:
K. Lange 2018-10-02 22:42:24 +09:00
parent 06ff00fd41
commit 544a7b16f4

View File

@ -7,7 +7,9 @@
*
* TODO: Actually implement the plumbing for mv!
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
@ -24,6 +26,15 @@ static int call(char * args[]) {
}
int main(int argc, char * argv[]) {
if (argc < 3) {
fprintf(stderr, "%s: missing operand\n", argv[0]);
return 1;
}
if (!strcmp(argv[1], argv[2])) {
fprintf(stderr, "%s: %s and %s are the same file\n", argv[0], argv[1], argv[2]);
return 1;
}
/* TODO stat magic for other ways to reference the same file */
if (call((char *[]){"/bin/cp",argv[1],argv[2],NULL})) return 1;
if (call((char *[]){"/bin/rm",argv[1],NULL})) return 1;
return 0;