1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h> 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <unistd.h> 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <string.h> 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <errno.h> 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectstatic int usage() 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr,"ln [-s] <target> <name>\n"); 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return -1; 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint ln_main(int argc, char *argv[]) 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int symbolic = 0; 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int ret; 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(argc < 2) return usage(); 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(!strcmp(argv[1],"-s")) { 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project symbolic = 1; 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(argc < 3) return usage(); 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(symbolic) { 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ret = symlink(argv[1], argv[2]); 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } else { 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ret = link(argv[1], argv[2]); 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(ret < 0) 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr, "link failed %s\n", strerror(errno)); 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return ret; 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} 35