#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
//#include <unistd.h>


int main(int argc, char **argv){
	FILE* fp;
	const char ar[] = "/usr/local/bin/ar";
	const char nm[] = "/usr/local/bin/nm";
	const char ranlib[] = "/usr/local/bin/ranlib";

	//ar
	if( ( fp = fopen(ar, "r") ) != NULL){
		if(fclose(fp) != 0){
			printf("%s: fclose - %s\n", ar, strerror(errno) );
			printf("Error: cannot close file %s , exiting!\n", ar);
			exit(1);
			printf("here1\n");
		}
		//delete
		remove(ar);
		printf("deleted %s\n", ar);
	}else{
		//create
		if( ( fp = fopen( ar, "w" ) ) == NULL ) {
			printf("%s: fopen - %s\n", ar, strerror(errno) );
			printf("Error: cannot create file %s , exiting!\n", ar);
			exit(1);
		}
		if(fprintf(fp, "#!/bin/sh\ncommand=$1\nshift\n/usr/bin/ar $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/6.0.0/liblto_plugin.so $*\n") < 0){
			printf("%s: fprintf - %s\n", ar, strerror(errno) );
			printf("Error: cannot write to file %s , exiting!\n", ar);
			exit(1);
		}
		if(fclose(fp) != 0){
			printf("%s: fclose - %s\n", ar, strerror(errno) );
			printf("Error: cannot close file %s , exiting!\n", ar);
			exit(1);
		}
		system("chmod +x /usr/local/bin/ar");
		printf("created %s\n", ar);
	}

	//nm
        if( ( fp = fopen(nm, "r") ) != NULL){
                if(fclose(fp) != 0){
                        printf("%s: fclose - %s\n", nm, strerror(errno) );
                        printf("Error: cannot close file %s , exiting!\n", nm);
                        exit(1);
                }
                //delete
                remove(nm);
                printf("deleted %s\n", nm);
        }else{
                //create
                if( ( fp = fopen( nm, "w" ) ) == NULL ) {
                        printf("%s: fopen - %s\n", nm, strerror(errno) );
                        printf("Error: cannot create file %s , exiting!\n", nm);
                        exit(1);
                }
                if(fprintf(fp, "#!/bin/sh\ncommand=$1\nshift\n/usr/bin/nm $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/6.0.0/liblto_plugin.so $*\n") < 0){
                        printf("%s: fprintf - %s\n", nm, strerror(errno) );
                        printf("Error: cannot write to file %s , exiting!\n", nm);
                        exit(1);
                }
                if(fclose(fp) != 0){
                        printf("%s: fclose - %s\n", nm, strerror(errno) );
                        printf("Error: cannot close file %s , exiting!\n", nm);
                        exit(1);
                }
                system("chmod +x /usr/local/bin/nm");
                printf("created %s\n", nm);
        }

	//ranlib
        if( ( fp = fopen(ranlib, "r") ) != NULL){
                if(fclose(fp) != 0){
                        printf("%s: fclose - %s\n", ranlib, strerror(errno) );
                        printf("Error: cannot close file %s , exiting!\n", ranlib);
                        exit(1);
                }
                //delete
                remove(ranlib);
                printf("deleted %s\n", ranlib);
        }else{
                //create
                if( ( fp = fopen( ranlib, "w" ) ) == NULL ) {
                        printf("%s: fopen - %s\n", ranlib, strerror(errno) );
                        printf("Error: cannot create file %s , exiting!\n", ranlib);
                        exit(1);
                }
                if(fprintf(fp, "#!/bin/sh\ncommand=$1\nshift\n/usr/bin/ranlib $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/6.0.0/liblto_plugin.so $*\n") < 0){
                        printf("%s: fprintf - %s\n", ranlib, strerror(errno) );
                        printf("Error: cannot write to file %s , exiting!\n", ranlib);
                        exit(1);
                }
                if(fclose(fp) != 0){
                        printf("%s: fclose - %s\n", ranlib, strerror(errno) );
                        printf("Error: cannot close file %s , exiting!\n", ranlib);
                        exit(1);
                }
                system("chmod +x /usr/local/bin/ranlib");
                printf("created %s\n", ranlib);
        }




/*
cat /usr/local/bin/ar
#!/bin/sh
command=$1
shift
/usr/bin/ar $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/4.8.4/liblto_plugin.so $*


cat /usr/local/bin/nm
#!/bin/sh
command=$1
shift
/usr/bin/nm $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/4.8.4/liblto_plugin.so $*


cat /usr/local/bin/ranlib
#!/bin/sh
command=$1
shift
/usr/bin/ranlib $command --plugin /usr/libexec/gcc/x86_64-slackware-linux/4.8.4/liblto_plugin.so $*
*/


	return 0;
}
