/**	Esercizio 1
 * Il comando abslink, da implementare, deve sostituire un link simbolico con uno equivalente che sia un riferimento ad un path assoluto.
 * 
 * Ad esempio: se mylink e' nella directory /home/user 
 * e punta a myfile, 'abspath mylink" 
 * deve sostituire mylink con un symbolic link a /home/user/myfile.
 * 
 * Hint: considerate l'uso della funzione realpath
 * 
 * link testo https://dynamik.vercel.app/sistemi-operativi/prove/pratica/scritto-2020-02-21-testo.pdf
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>// stat
#include <sys/stat.h>//stat
#include <unistd.h>//stat
#include <string.h>// strcat
#include <dirent.h>// dirname

// controllo argomenti
// trovo la cartella di mylink [argv[1]]
// trovo il myile a cui punta
// creo il link assoluto

int main(int argc, char* argv[]){
	if (argc != 2){
		printf("Usage: %s <link>\n", argv[0]);
		return 1;
	}
	
    char* mylink = argv[1];
	struct stat st;
	lstat(mylink, &st);
	if (S_ISLNK(st.st_mode)){
		// trovo la cartella di mylink
		char* dir = dirname(mylink);
		// trovo il myile a cui punta
		char* file = realpath(mylink, NULL);
		// creo il link assoluto
		char* link = strcat(dir, file);
		symlink(link, mylink);
	}
	return 0;
}