diff --git a/headers/os/package/PackageInfo.h b/headers/os/package/PackageInfo.h index 124a9fb3f1..6109a2efa5 100644 --- a/headers/os/package/PackageInfo.h +++ b/headers/os/package/PackageInfo.h @@ -18,6 +18,7 @@ class BEntry; +class BFile; namespace BPackageKit { @@ -44,6 +45,9 @@ public: status_t ReadFromConfigFile( const BEntry& packageInfoEntry, ParseErrorListener* listener = NULL); + status_t ReadFromConfigFile( + BFile& packageInfoFile, + ParseErrorListener* listener = NULL); status_t ReadFromConfigString( const BString& packageInfoString, ParseErrorListener* listener = NULL); diff --git a/src/kits/package/PackageInfo.cpp b/src/kits/package/PackageInfo.cpp index dd7dad04f1..ee3376e7b8 100644 --- a/src/kits/package/PackageInfo.cpp +++ b/src/kits/package/PackageInfo.cpp @@ -849,8 +849,17 @@ BPackageInfo::ReadFromConfigFile(const BEntry& packageInfoEntry, if ((result = file.InitCheck()) != B_OK) return result; + return ReadFromConfigFile(file, listener); +} + + +status_t +BPackageInfo::ReadFromConfigFile(BFile& packageInfoFile, + ParseErrorListener* listener) +{ off_t size; - if ((result = file.GetSize(&size)) != B_OK) + status_t result = packageInfoFile.GetSize(&size); + if (result != B_OK) return result; BString packageInfoString; @@ -858,7 +867,7 @@ BPackageInfo::ReadFromConfigFile(const BEntry& packageInfoEntry, if (buffer == NULL) return B_NO_MEMORY; - if ((result = file.Read(buffer, size)) < size) { + if ((result = packageInfoFile.Read(buffer, size)) < size) { packageInfoString.UnlockBuffer(0); return result >= 0 ? B_IO_ERROR : result; }