- np = rindex(argv[1], '/');
- if (np==0)
- np = argv[1];
- else
- np++;
- if (argc==2)
- arg2 = np;
- else
- arg2 = argv[2];
- statres = stat(argv[1], &statb);
- if (statres<0) {
- printf ("ln: %s does not exist\n", argv[1]);
- exit(1);
+ if (argc > 2) {
+ if (stat(argv[argc-1], &stb) < 0)
+ goto usage;
+ if ((stb.st_mode&S_IFMT) != S_IFDIR)
+ goto usage;
+ }
+ r = 0;
+ for(i = 0; i < argc-1; i++)
+ r |= linkit(argv[i], argv[argc-1]);
+ exit(r);
+usage:
+ fprintf(stderr, "Usage: ln f1\nor: ln f1 f2\nln f1 ... fn d2\n");
+ exit(1);
+}
+
+linkit(from, to)
+ char *from, *to;
+{
+ char *tail;
+
+ /* is target a directory? */
+ if (fflag == 0 && stat(from, &stb) >= 0
+ && (stb.st_mode&S_IFMT) == S_IFDIR) {
+ printf("%s is a directory\n", from);
+ return (1);