]> granicus.if.org Git - transmission/commitdiff
(libT) fix red herring issue that tr_mkdirp() was setting errno even if the call...
authorJordan Lee <jordan@transmissionbt.com>
Wed, 23 Jan 2013 21:28:35 +0000 (21:28 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Wed, 23 Jan 2013 21:28:35 +0000 (21:28 +0000)
libtransmission/rename-test.c
libtransmission/utils.c

index 29b02774b5be944491c0aeb480c8687fe8840c10..c0758dde03a4667836c47f8a1c309d9ad99651aa 100644 (file)
@@ -102,11 +102,16 @@ torrentRenameAndWait (tr_torrent * tor,
 static void
 create_file_with_contents (const char * path, const char * str)
 {
+  int rv;
   FILE * fp;
   char * dir;
+  const int tmperr = errno;
 
   dir = tr_dirname (path);
-  tr_mkdirp (dir, 0700);
+  errno = 0;
+  rv = tr_mkdirp (dir, 0700);
+  assert (errno == 0);
+  assert (rv == 0);
   tr_free (dir);
 
   remove (path);
@@ -115,6 +120,8 @@ create_file_with_contents (const char * path, const char * str)
   fclose (fp);
 
   sync ();
+
+  errno = tmperr;
 }
 
 static void
@@ -457,15 +464,18 @@ create_zero_torrent_partial_contents (const char * top)
 {
   int i;
   int n;
+  int rv;
   FILE * fp;
   char * path;
   char buf[32];
 
 fprintf (stderr, "top %s exists %d\n", top, (int)tr_fileExists(top,NULL));
 
-errno = 0;
+  errno = 0;
   path = tr_buildPath (top, "files-filled-with-zeroes", NULL);
-  tr_mkdirp (path, 0700);
+  rv = tr_mkdirp (path, 0700);
+  assert (rv == 0);
+  assert (errno == 0);
 fprintf (stderr, "%s:%d %s\n", __FILE__, __LINE__, path);
 fprintf (stderr, "errno is %d (%s)\n", errno, tr_strerror (errno));
   tr_free (path);
index bb5ed800a7f5789cef2befea5aefabd98771e34e..881fe5571f73427947c33a96b082ff53eec0c79c 100644 (file)
@@ -547,7 +547,9 @@ tr_mkdirp (const char * path_in,
     char *      path = tr_strdup (path_in);
     char *      p, * pp;
     struct stat sb;
-    int         done;
+    bool        done;
+    int         tmperr;
+    int         rv;
 
     /* walk past the root */
     p = path;
@@ -555,26 +557,26 @@ tr_mkdirp (const char * path_in,
         ++p;
 
     pp = p;
-    done = 0;
-    while ((p =
-                strchr (pp, TR_PATH_DELIMITER)) || (p = strchr (pp, '\0')))
+    done = false;
+    while ((p = strchr (pp, TR_PATH_DELIMITER)) || (p = strchr (pp, '\0')))
     {
         if (!*p)
-            done = 1;
+            done = true;
         else
             *p = '\0';
 
-        if (stat (path, &sb))
+        tmperr = errno;
+        rv = stat (path, &sb);
+        errno = tmperr;
+        if (rv)
         {
             /* Folder doesn't exist yet */
             if (tr_mkdir (path, permissions))
             {
-                const int err = errno;
-                tr_err (_(
-                           "Couldn't create \"%1$s\": %2$s"), path,
-                       tr_strerror (err));
+                tmperr = errno;
+                tr_err (_("Couldn't create \"%1$s\": %2$s"), path, tr_strerror (tmperr));
                 tr_free (path);
-                errno = err;
+                errno = tmperr;
                 return -1;
             }
         }