summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-09-02 12:47:48 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-09-02 12:47:48 +0200
commitb29c37128c2c77490f5851158a7631ed107c79fc (patch)
treedd609a58cf2c3810486d0630490f8cb8750341a3
parent158fda31be7d4ae1c80a56223faa8d01efc25acc (diff)
* apt-pkg/deb/dpkgpm.cc:
- create Dir::Log if needed to support /var/log as tmpfs or similar, inspired by Thomas Bechtold, thanks! (Closes: #523919, LP: #220239) Easily done by moving a private method from pkgAcquire into the public area of fileutl.cc to be able to use it also in here
-rw-r--r--apt-pkg/acquire.cc21
-rw-r--r--apt-pkg/acquire.h8
-rw-r--r--apt-pkg/contrib/fileutl.cc21
-rw-r--r--apt-pkg/contrib/fileutl.h9
-rw-r--r--apt-pkg/deb/dpkgpm.cc3
-rw-r--r--debian/changelog5
-rw-r--r--test/integration/framework4
7 files changed, 38 insertions, 33 deletions
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index 63825da93..6ec557397 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -93,27 +93,6 @@ bool pkgAcquire::Setup(pkgAcquireStatus *Progress, string const &Lock)
return true;
}
/*}}}*/
-// Acquire::CheckDirectory - ensure that the given directory exists /*{{{*/
-// ---------------------------------------------------------------------
-/* a small wrapper around CreateDirectory to check if it exists and to
- remove the trailing "/apt/" from the parent directory if needed */
-bool pkgAcquire::CheckDirectory(string const &Parent, string const &Path) const
-{
- if (DirectoryExists(Path) == true)
- return true;
-
- size_t const len = Parent.size();
- if (len > 5 && Parent.find("/apt/", len - 6, 5) == len - 5)
- {
- if (CreateDirectory(Parent.substr(0,len-5), Path) == true)
- return true;
- }
- else if (CreateDirectory(Parent, Path) == true)
- return true;
-
- return false;
-}
- /*}}}*/
// Acquire::~pkgAcquire - Destructor /*{{{*/
// ---------------------------------------------------------------------
/* Free our memory, clean up the queues (destroy the workers) */
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
index 82be8b843..e3a4435b8 100644
--- a/apt-pkg/acquire.h
+++ b/apt-pkg/acquire.h
@@ -362,14 +362,6 @@ class pkgAcquire
private:
/** \brief FD of the Lock file we acquire in Setup (if any) */
int LockFD;
-
- /** \brief Ensure the existence of the given Path
- *
- * \param Parent directory of the Path directory - a trailing
- * /apt/ will be removed before CreateDirectory call.
- * \param Path which should exist after (successful) call
- */
- bool CheckDirectory(string const &Parent, string const &Path) const;
};
/** \brief Represents a single download source from which an item
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index 2b73d1424..94d994e8b 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -251,6 +251,27 @@ bool CreateDirectory(string const &Parent, string const &Path)
return true;
}
/*}}}*/
+// CheckDirectory - ensure that the given directory exists /*{{{*/
+// ---------------------------------------------------------------------
+/* a small wrapper around CreateDirectory to check if it exists and to
+ remove the trailing "/apt/" from the parent directory if needed */
+bool CheckDirectory(string const &Parent, string const &Path)
+{
+ if (DirectoryExists(Path) == true)
+ return true;
+
+ size_t const len = Parent.size();
+ if (len > 5 && Parent.find("/apt/", len - 6, 5) == len - 5)
+ {
+ if (CreateDirectory(Parent.substr(0,len-5), Path) == true)
+ return true;
+ }
+ else if (CreateDirectory(Parent, Path) == true)
+ return true;
+
+ return false;
+}
+ /*}}}*/
// GetListOfFilesInDir - returns a vector of files in the given dir /*{{{*/
// ---------------------------------------------------------------------
/* If an extension is given only files with this extension are included
diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h
index cb4655798..f79c9032f 100644
--- a/apt-pkg/contrib/fileutl.h
+++ b/apt-pkg/contrib/fileutl.h
@@ -94,6 +94,15 @@ int GetLock(string File,bool Errors = true);
bool FileExists(string File);
bool DirectoryExists(string const &Path) __attrib_const;
bool CreateDirectory(string const &Parent, string const &Path);
+
+/** \brief Ensure the existence of the given Path
+ *
+ * \param Parent directory of the Path directory - a trailing
+ * /apt/ will be removed before CreateDirectory call.
+ * \param Path which should exist after (successful) call
+ */
+bool CheckDirectory(string const &Parent, string const &Path);
+
std::vector<string> GetListOfFilesInDir(string const &Dir, string const &Ext,
bool const &SortList, bool const &AllowNoExt=false);
std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> const &Ext,
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 5530ef129..d3c432ce1 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -641,7 +641,8 @@ void pkgDPkgPM::WriteHistoryTag(string const &tag, string value)
bool pkgDPkgPM::OpenLog()
{
string const logdir = _config->FindDir("Dir::Log");
- if(not FileExists(logdir))
+ if(CheckDirectory(logdir, logdir) == false)
+ // FIXME: use a better string after freeze
return _error->Error(_("Directory '%s' missing"), logdir.c_str());
// get current time
diff --git a/debian/changelog b/debian/changelog
index e37a5504f..2a3a9d89c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -40,8 +40,11 @@ apt (0.8.1) UNRELEASED; urgency=low
- let the pin origin actually work as advertised in the manpage
which means "" are optional and pinning a local archive does
work - even if it is a non-flat archive (Closes: #594435)
+ * apt-pkg/deb/dpkgpm.cc:
+ - create Dir::Log if needed to support /var/log as tmpfs or similar,
+ inspired by Thomas Bechtold, thanks! (Closes: #523919, LP: #220239)
- -- Michael Vogt <mvo@debian.org> Mon, 30 Aug 2010 11:53:30 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com> Thu, 02 Sep 2010 12:41:32 +0200
apt (0.8.0) unstable; urgency=low
diff --git a/test/integration/framework b/test/integration/framework
index ba5f9dfa3..2b26fc8f7 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -88,8 +88,8 @@ setupenvironment() {
cd $TMPWORKINGDIRECTORY
mkdir rootdir aptarchive keys
cd rootdir
- mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d var/cache
- mkdir -p var/log/apt var/lib/apt
+ mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
+ mkdir -p var/cache var/lib var/log
mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
local STATUSFILE=$(echo "$(basename $0)" | sed 's/^test-/status-/')
if [ -f "${TESTDIR}/${STATUSFILE}" ]; then