]> Dogcows Code - chaz/tar/blobdiff - src/unlink.c
Fix some problems with negative and out-of-range integers.
[chaz/tar] / src / unlink.c
index 2af6f9957b2887eea74b9fe0b394207d60937e32..d89f3ed72b61a1f70cc17dd91cee4adde4098200 100644 (file)
@@ -1,4 +1,4 @@
-/* This file is part of GNU tar. 
+/* This file is part of GNU tar.
    Copyright (C) 2009 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
@@ -39,10 +39,10 @@ static struct deferred_unlink *dunlink_avail;
 
 /* Delay (number of records written) between adding entry to the
    list and its actual removal. */
-size_t deferred_unlink_delay = 0;
+static size_t deferred_unlink_delay = 0;
 
 static struct deferred_unlink *
-dunlink_alloc ()
+dunlink_alloc (void)
 {
   struct deferred_unlink *p;
   if (dunlink_avail)
@@ -77,7 +77,7 @@ flush_deferred_unlinks (bool force)
        {
          if (p->is_dir)
            {
-             if (rmdir (p->file_name) != 0)
+             if (unlinkat (chdir_fd, p->file_name, AT_REMOVEDIR) != 0)
                {
                  switch (errno)
                    {
@@ -101,7 +101,7 @@ flush_deferred_unlinks (bool force)
            }
          else
            {
-             if (unlink (p->file_name) != 0 && errno != ENOENT)
+             if (unlinkat (chdir_fd, p->file_name, 0) != 0 && errno != ENOENT)
                unlink_error (p->file_name);
            }
          dunlink_reclaim (p);
@@ -116,14 +116,14 @@ flush_deferred_unlinks (bool force)
        {
          prev = p;
          p = next;
-       }         
+       }
     }
   if (!dunlink_head)
     dunlink_tail = NULL;
 }
 
 void
-finish_deferred_unlinks ()
+finish_deferred_unlinks (void)
 {
   flush_deferred_unlinks (true);
   while (dunlink_avail)
@@ -142,13 +142,13 @@ queue_deferred_unlink (const char *name, bool is_dir)
   if (dunlink_head
       && records_written > dunlink_head->records_written + deferred_unlink_delay)
     flush_deferred_unlinks (false);
-  
+
   p = dunlink_alloc ();
   p->next = NULL;
   p->file_name = normalize_filename (name);
   p->is_dir = is_dir;
   p->records_written = records_written;
-  
+
   if (dunlink_tail)
     dunlink_tail->next = p;
   else
This page took 0.030288 seconds and 4 git commands to generate.