2020-06-02 17:48:59 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
int
|
|
|
|
main(int argc, char *argv[])
|
|
|
|
{
|
2020-06-02 19:46:28 +00:00
|
|
|
|
2020-06-02 17:48:59 +00:00
|
|
|
if(argc == 1)
|
|
|
|
{
|
|
|
|
printf("Usage: ln oldfile newfile\n");
|
|
|
|
return 1;
|
|
|
|
}
|
2020-06-02 20:53:42 +00:00
|
|
|
int opts, fd, fflag;
|
|
|
|
while((opts = getopt(argc, argv, "sf")) != -1)
|
2020-06-02 17:48:59 +00:00
|
|
|
{
|
2020-06-02 20:19:26 +00:00
|
|
|
switch(opts)
|
|
|
|
{
|
2020-06-02 20:53:42 +00:00
|
|
|
case 'f':
|
|
|
|
fflag=1;
|
|
|
|
case 's':
|
|
|
|
if(fflag && (access(argv[3], F_OK) != 1))
|
|
|
|
unlink(argv[3]);
|
2020-06-02 23:54:32 +00:00
|
|
|
int symstat = symlink(argv[2],argv[3]);
|
|
|
|
if(symstat == -1)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "Symlink error!");
|
|
|
|
return 1;
|
|
|
|
}
|
2020-06-02 20:19:26 +00:00
|
|
|
break;
|
|
|
|
case '?':
|
|
|
|
printf("-%c: Argument not found", optopt);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fd = link(argv[1],argv[2]);
|
|
|
|
if(fd == -1)
|
|
|
|
{
|
|
|
|
fprintf(stderr,"Error creating link\n");
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
2020-06-02 17:48:59 +00:00
|
|
|
}
|
|
|
|
}
|