home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.update.uu.se
/
ftp.update.uu.se.2014.03.zip
/
ftp.update.uu.se
/
pub
/
rainbow
/
msdos
/
misc2
/
cshell.lzh
/
MV.C
< prev
next >
Wrap
C/C++ Source or Header
|
1985-09-04
|
2KB
|
85 lines
#include <stdio.h>
extern char *me;
extern char *fname_part();
/* mv.c - implements a version of UNIX mv */
mv(argc,argv)
int argc;
register char *argv[];
{
static char *usage = "mv : usage mv file1 [file2 . . fileN] target\r\n";
static char target_name[128];
char target[128],*fname_part();
register int i;
me = argv[0];
if (argc < 3)
{
write(2,usage,strlen(usage));
return(-1);
}
strcpy(target, argv[argc-1]);
/* kill trailing backslashes */
if (target[i = strlen(target) - 1] == '\\')
target[i] = '\0';
if (argc == 3)
{
/* if the target doesn't exist and it's not a directory then rename */
if (access(target,0) && !dirp(target))
{
fprintf(stderr,"moving %s to %s\n",argv[1],argv[2]);
rename(argv[1],argv[2]);
}
else
{
/* if the target is a directory copy to same name that directory */
if (dirp(target))
{
int len;
strcpy(target_name,target);
if (target_name[(len = strlen(target_name))-1] != '\\')
{
target_name[len = strlen(target_name)] = '\\';
target_name[len+1] = '\0';
}
strcat(target_name,fname_part(argv[1]));
fprintf(stderr,"moving %s to %s\n",argv[1],target_name);
filecopy(target_name,argv[1]);
unlink(argv[1]);
}
else
{
fprintf(stderr,"moving %s to %s\n",argv[1],target);
filecopy(target,argv[1]);
unlink(argv[1]);
}
}
return(0);
}
/* handle special case of a drive designation */
if (target[(i = strlen(target))-1] != ':')
if (!dirp(target))
{
fprintf(stderr,"mv : %s isn't a directory\n",target);
return(-1);
}
for (i = 1; i < argc-1; i++)
{
int len;
strcpy(target_name,target);
if (target_name[(len = strlen(target_name))-1] != '\\')
{
target_name[len = strlen(target_name)] = '\\';
target_name[len+1] = '\0';
}
strcat(target_name,fname_part(argv[i]));
if (!filep(argv[i]))
{
fprintf(stderr,"mv : %s isn't a file\n",argv[i]);
continue;
}
fprintf(stderr,"moving %s to %s\n",argv[i],target_name);
filecopy(target_name,argv[i]);
unlink(argv[i]);
}
return 0;
}