]> git.wh0rd.org - dump.git/blobdiff - restore/utilities.c
Added readline capabilities to interactive restore.
[dump.git] / restore / utilities.c
index 44cea0454c343c9d513b72da27444320384eb3ca..f052071484824a7fc41db11ad265f0e90507c728 100644 (file)
@@ -2,8 +2,7 @@
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
  *     Remy Card <card@Linux.EU.Org>, 1994-1997
- *      Stelian Pop <pop@cybercable.fr>, 1999 
- *
+ *     Stelian Pop <pop@cybercable.fr>, 1999-2000
  */
 
 /*
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- * $Id: utilities.c,v 1.5 1999/10/11 13:31:14 stelian Exp $
  */
 
+#ifndef lint
+static const char rcsid[] =
+       "$Id: utilities.c,v 1.8 2000/02/08 12:22:43 stelian Exp $";
+#endif /* not lint */
+
 #include <sys/param.h>
 #include <sys/stat.h>
 
@@ -242,6 +244,18 @@ linkit(char *existing, char *new, int type)
                                ret = link(existing, new);
                                chflags(existing, s.st_flags);
                        }
+#else
+                       unsigned long s;
+
+                       /*
+                        * Most likely, the immutable or append-only attribute
+                        * is set. Clear the attributes and try again.
+                        */
+                       if (fgetflags (existing, &s) != -1 &&
+                           fsetflags (existing, 0) != -1) {
+                               ret = link(existing, new);
+                               fsetflags(existing, s);
+                       }
 #endif
                        if (ret < 0) {
                                warn("warning: cannot create hard link %s->%s",