#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/utsname.h>
#include <libgen.h>

int recursiveDelete(char* dirname) {
	DIR *dp;
	struct dirent *ep;

	char abs_filename[FILENAME_MAX];

	dp = opendir (dirname);
	if (dp != NULL)
	{
		while (ep = readdir (dp)) {
			struct stat stFileInfo;

			snprintf(abs_filename, FILENAME_MAX, "%s/%s", dirname, ep->d_name);

			if (lstat(abs_filename, &stFileInfo) < 0)
				perror ( abs_filename );

			if(S_ISDIR(stFileInfo.st_mode)) {
				if(strcmp(ep->d_name, ".") && 
						strcmp(ep->d_name, "..")) {
					printf("%s directory\n",abs_filename);
					recursiveDelete(abs_filename);
				}
			} else {
				printf("%s file\n",abs_filename);
				remove(abs_filename);
			}
		}
		(void) closedir (dp);
	}
	else
		perror ("Couldn't open the directory");

	remove(dirname);
	return 0;

}

void arch()
{
	struct utsname un;
	uname(&un);

	if (!strcmp(un.machine, "x86_64")){
		printf ("You are on a 64bit system, so, additional dependencies are requested (only2)\n");
		printf ("Be sure you have the Main32 media enabled! If they are, press ok:\n");
		system ("edit-urpm-sources.pl –expert");
		system ("urpmi libxscrnsaver1 libxv1 libxrender1 libXrandr2 libfreetype6 libfontconfig1 libglib2.0_0");
	}
}

void erase()
{
	chdir ("/opt");
	unlink ("skype_static-2.2.0.35.tar.bz2");

	if (chdir("/opt/skype_static-2.2.0.35/") == 0){

		recursiveDelete("/opt/skype_static-2.2.0.35/");

		unlink ("/usr/bin/skype");
		unlink ("/usr/share/applications/skype.desktop");
		unlink ("/usr/share/icons/skype.png");
		printf ("Clean\n");
	}
}

void install()
{
	arch();	

	chdir ("/opt");
	unlink ("skype_static-2.2.0.35.tar.bz2");
	
	//Check if wget is present//
	FILE *wget = fopen("/usr/bin/wget","r");
	if (!wget){
		system("urpmi wget");
	}
	/////////////////////////////
	
	system ("wget http://download.skype.com/linux/skype_static-2.2.0.35.tar.bz2");
	printf ("Downloading skype into /opt...\n");
	system ("tar -jxvf /opt/skype_static-2.2.0.35.tar.bz2");

	symlink ("/opt/skype_static-2.2.0.35/skype", "/usr/local/bin/skype");
	symlink ("/opt/skype_static-2.2.0.35/skype.desktop", "/usr/share/applications/skype.desktop");
	symlink ("/opt/skype_static-2.2.0.35/icons/SkypeBlue_48x48.png", "/usr/share/icons/skype.png");
}


int main()
{
	int choose = 0;

	if(geteuid() != 0){
		printf ("Run as root\n");
	}else{
		printf ("1 - to Erase\n");
		printf ("2 - to Install\n");
		scanf ("%d", &choose);

		switch (choose){
			case 1: erase(); break;
			case 2: erase(); install(); break;
		}
	}
	return 0;
}

