Merge branch 'feature/abspath' into feature/apt-install-deb
authorMichael Vogt <mvo@ubuntu.com>
Mon, 28 Apr 2014 15:25:28 +0000 (17:25 +0200)
committerMichael Vogt <mvo@ubuntu.com>
Mon, 28 Apr 2014 15:25:28 +0000 (17:25 +0200)
Conflicts:
test/libapt/fileutl_test.cc

apt-pkg/contrib/fileutl.cc
apt-pkg/contrib/fileutl.h
test/libapt/fileutl_test.cc

index dc21d10..c7c60e0 100644 (file)
@@ -659,6 +659,22 @@ string flCombine(string Dir,string File)
    return Dir + '/' + File;
 }
                                                                        /*}}}*/
+// flAbsPath - Return the absolute path of the filename                        /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string flAbsPath(string File)
+{
+   char *p = realpath(File.c_str(), NULL);
+   if (p == NULL)
+   {
+      _error->Errno("realpath", "flAbsPath failed");
+      return "";
+   }
+   std::string AbsPath(p);
+   free(p);
+   return AbsPath;
+}
+                                                                       /*}}}*/
 // SetCloseExec - Set the close on exec flag                           /*{{{*/
 // ---------------------------------------------------------------------
 /* */
index 489cee1..452e5fc 100644 (file)
@@ -200,6 +200,10 @@ std::string flNoLink(std::string File);
 std::string flExtension(std::string File);
 std::string flCombine(std::string Dir,std::string File);
 
+/** \brief Takes a file path and returns the absolute path
+ */
+std::string flAbsPath(std::string File);
+
 // simple c++ glob
 std::vector<std::string> Glob(std::string const &pattern, int flags=0);
 
index c2a43ed..16ea6cf 100644 (file)
@@ -224,7 +224,6 @@ TEST(FileUtlTest, GetTempDir)
    if (old_tmpdir.empty() == false)
       setenv("TMPDIR", old_tmpdir.c_str(), 1);
 }
-
 TEST(FileUtlTest, Popen)
 {
    FileFd Fd;
@@ -272,3 +271,10 @@ TEST(FileUtlTest, Popen)
    Fd.Close();
    ExecWait(Child, "PopenWrite");
 }
+TEST(FileUtlTest, flAbsPath)
+{
+   int res = chdir("/bin/");
+   EXPECT_EQ(res, 0);
+   std::string p = flAbsPath("ls");
+   EXPECT_EQ(p, "/bin/ls");
+}