1: /*
   2:  * ln [ -f ] target [ new name ]
   3:  */
   4: 
   5: #include <sys/types.h>
   6: #include <sys/stat.h>
   7: #include "stdio.h"
   8: char    *rindex();
   9: 
  10: main(argc, argv)
  11: char **argv;
  12: {
  13:     struct stat statb;
  14:     register char *np;
  15:     int fflag = 0;
  16:     char nb[100], *name=nb, *arg2;
  17:     int statres;
  18: 
  19:     if (argc >1 && strcmp(argv[1], "-f")==0) {
  20:         argc--;
  21:         argv++;
  22:         fflag++;
  23:     }
  24:     if (argc<2 || argc>3) {
  25:         printf("Usage: ln target [ newname ]\n");
  26:         exit(1);
  27:     }
  28:     np = rindex(argv[1], '/');
  29:     if (np==0)
  30:         np = argv[1];
  31:     else
  32:         np++;
  33:     if (argc==2)
  34:         arg2 = np;
  35:     else
  36:         arg2 = argv[2];
  37:     statres = stat(argv[1], &statb);
  38:     if (statres<0) {
  39:         printf ("ln: %s does not exist\n", argv[1]);
  40:         exit(1);
  41:     }
  42:     if (fflag==0 && (statb.st_mode&S_IFMT) == S_IFDIR) {
  43:         printf("ln: %s is a directory\n", argv[1]);
  44:         exit(1);
  45:     }
  46:     statres = stat(arg2, &statb);
  47:     if (statres>=0 && (statb.st_mode&S_IFMT) == S_IFDIR)
  48:         sprintf(name, "%s/%s", arg2, np);
  49:     else
  50:         name = arg2;
  51:     if (link(argv[1], name)<0) {
  52:         perror("ln");
  53:         exit(1);
  54:     }
  55:     exit(0);
  56: }

Defined functions

main defined in line 10; never used
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 566
Valid CSS Valid XHTML 1.0 Strict