From 822520d37c7faf4e461e10024578d3f9e04cd5ec Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Thu, 18 Feb 1999 16:33:09 +0000
Subject: [PATCH] [project @ 1999-02-18 16:33:09 by simonm] Allow -f flag to
 override existing symlink tree.

---
 glafp-utils/lndir/lndir.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/glafp-utils/lndir/lndir.c b/glafp-utils/lndir/lndir.c
index 0c76558615ce..27ae80e37d96 100644
--- a/glafp-utils/lndir/lndir.c
+++ b/glafp-utils/lndir/lndir.c
@@ -82,6 +82,8 @@ int ignore_links = 0;		/* -ignorelinks */
 char *rcurdir;
 char *curdir;
 
+int force=0;
+
 void
 quit (
 #if NeedVarargsPrototypes
@@ -284,15 +286,22 @@ int rel;			/* if true, prepend "../" to fn before using */
 	}
 
 	if (symlen >= 0) {
-	    /* Link exists in new tree.  Print message if it doesn't match. */
-	    if (!equivalent (basesymlen>=0 ? basesym : buf, symbuf))
-		msg ("%s: %s", dp->d_name, symbuf);
-	} else {
-	    if (symlink (basesymlen>=0 ? basesym : buf, dp->d_name) < 0)
+	  if (!equivalent (basesymlen>=0 ? basesym : buf, symbuf)) {
+	    if (force) {
+	      unlink(dp->d_name);
+	      if (symlink (basesymlen>=0 ? basesym : buf, dp->d_name) < 0)
 		mperror (dp->d_name);
+	    } else {
+	      /* Link exists in new tree.  Print message if it doesn't match. */
+	      msg ("%s: %s", dp->d_name, symbuf);
+	    }
+	  }
+	} else {
+	  if (symlink (basesymlen>=0 ? basesym : buf, dp->d_name) < 0)
+	    mperror (dp->d_name);
 	}
     }
-
+    
     closedir (df);
     return 0;
 }
@@ -305,7 +314,6 @@ char **av;
     char *prog_name = av[0];
     char *fn, *tn;
     struct stat fs, ts;
-    int force=0;
 
     while (++av, --ac) {
 	if (strcmp(*av, "-silent") == 0)
-- 
GitLab