diff --git a/ex1/T2.c b/ex1/T2.c index 544697c8a82a92cf632f5c2d2f2d9e08a60f9b98..af2de0f59790d238a65e84860f578a1368f112d9 100644 --- a/ex1/T2.c +++ b/ex1/T2.c @@ -5,13 +5,47 @@ #include <unistd.h> #include <errno.h> -int main(int argc, char * argv[]){ +int main(int argc, char * argv[]) { - if(argc<3){ - printf("Usage ./T2.o folder_path link_name\n"); - } + if (argc < 3) { + printf("Usage ./T2.o folder_path link_name\n"); + } -//TODO -- implement your code here; + char* folder_path = argv[1]; + char* link = argv[2]; - return 0; + // Creating folder if it doesn't exist: + mkdir(folder_path, 0777); + if (errno != 0) { + fprintf(stderr, "cannot create directory '%s': ", folder_path); + switch (errno) { + case 13: + fprintf(stderr, "Permission denied.\n"); + break; + case 17: + fprintf(stderr, "File exists.\n"); + break; + default: + fprintf(stderr, "Unknown error.\n"); + } + } + else { + // Creating link if folder creation is successful: + symlink(folder_path, link); + if (errno != 0) { + fprintf(stderr, "cannot create symlink '%s' to '%s': ", link, folder_path); + switch (errno) { + case 13: + fprintf(stderr, "Permission denied.\n"); + break; + case 17: + fprintf(stderr, "File exists.\n"); + break; + default: + fprintf(stderr, "Unknown error.\n"); + } + } + } + + return 0; } diff --git a/ex1/T2.o b/ex1/T2.o new file mode 100755 index 0000000000000000000000000000000000000000..6a5b6ded1a14ddfb7e5ee3c8c984911114d6fb04 Binary files /dev/null and b/ex1/T2.o differ diff --git a/ex1/T2.sh b/ex1/T2.sh index 8f44c793a6f320108cfba1392fd789421ed9f24e..595c5d4ce2dd3d3ceb3d878876cb50bbedff6807 100755 --- a/ex1/T2.sh +++ b/ex1/T2.sh @@ -18,7 +18,3 @@ then fi ln -s $folder_path $link -if [ $? -eq 1 ] -then - exit -fi