-
Notifications
You must be signed in to change notification settings - Fork 1
/
ln.c
60 lines (57 loc) · 1.1 KB
/
ln.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(int argc, char* argv[])
{
char* sym="-s";
// creating a hard link
if(argc==3)
{
//linking file argv[1] to argv[2]
if((link(argv[1],argv[2]))==0)
{
printf("Link for %s successfully created : %s\n",argv[1],argv[2]);
return 0;
}
//error in creating hard link
else
{
perror("Link error");
return 100;
}
}
//creating a symbolic link
else if(argc==4)
{
//if option -s is used in command line
if((strcmp(sym,argv[1]))==0)
{
//creating a symbolic link of file argv[2] as argv[3]
if((symlink(argv[2],argv[3]))==0)
{
printf("Symbolic link for file %s successfully created : %s\n",argv[2],argv[3]);
return 0;
}
else
{
perror("Symbolic link error");
return errno;
}
}
//error if option -s is not used
else
{
printf("Invalid option used\n");
return 100;
}
}
//user input error
else
{
printf("Incorrect number of arguments : <command> <filename> <linkname> OR <command> -s <filename> <linkname>\n");
return 101;
}
return 0;
}