From bb3a0325bf6b5c6c7cd076ba8a44d9d3eba0902b Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 12:17:25 +0100 Subject: explicitly name token in auth.conf parsing error Reported-By: gcc -Wsign-promo --- apt-pkg/contrib/netrc.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apt-pkg/contrib/netrc.cc b/apt-pkg/contrib/netrc.cc index 27511d413..ed8b2aa88 100644 --- a/apt-pkg/contrib/netrc.cc +++ b/apt-pkg/contrib/netrc.cc @@ -127,8 +127,18 @@ bool MaybeAddAuth(FileFd &NetRCFile, URI &Uri) return true; } else if (Debug) - std::clog << "MaybeAddAuth: Found no matching host (syntax error: " << active_token << ") for " - << (std::string)Uri << " from " << NetRCFile.Name() << std::endl; + { + std::clog << "MaybeAddAuth: Found no matching host (syntax error: token:"; + switch (active_token) + { + case NO: std::clog << "NO"; break; + case MACHINE: std::clog << "MACHINE"; break; + case GOOD_MACHINE: std::clog << "GOOD_MACHINE"; break; + case LOGIN: std::clog << "LOGIN"; break; + case PASSWORD: std::clog << "PASSWORD"; break; + } + std::clog << ") for " << (std::string)Uri << " from " << NetRCFile.Name() << std::endl; + } return false; } -- cgit v1.2.3 From 594ee572949bee6abb36d956af1b9c8a7d100803 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 12:20:10 +0100 Subject: fix over-calculating dpkg commandline length Mostly harmless as it just means that apt thinks that the dpkg commandline it is building is slightly longer than it actually is and we have various ways of avoiding generating very long lines nowadays, but calculating the right value can't hurt. Reported-By: gcc -Wmultistatement-macros --- apt-pkg/deb/dpkgpm.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 4724f6e1c..c6d0a50f1 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1758,7 +1758,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) case Item::Purge: ADDARGC("--force-depends"); if (std::any_of(I, J, ItemIsEssential)) + { ADDARGC("--force-remove-essential"); + } ADDARGC("--remove"); break; -- cgit v1.2.3 From d812245dd5ac9268ef060a243ac978074504ecca Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 12:28:22 +0100 Subject: clearing object via constructor instead of memset Reported-By: gcc -Wclass-memaccess Gbp-Dch: Ignore --- apt-private/private-search.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc index b850339f9..7ec1915a8 100644 --- a/apt-private/private-search.cc +++ b/apt-private/private-search.cc @@ -164,6 +164,7 @@ struct ExDescFile pkgCache::DescFile *Df; pkgCache::VerIterator V; map_id_t ID; + ExDescFile() : Df(nullptr), ID(0) {} }; static bool Search(CommandLine &CmdL) { @@ -203,7 +204,6 @@ static bool Search(CommandLine &CmdL) size_t const descCount = Cache->HeaderP->GroupCount + 1; ExDescFile *DFList = new ExDescFile[descCount]; - memset(DFList,0,sizeof(*DFList) * descCount); bool *PatternMatch = new bool[descCount * NumPatterns]; memset(PatternMatch,false,sizeof(*PatternMatch) * descCount * NumPatterns); -- cgit v1.2.3 From 17cc2fda76ed80b7d56a967d92c4204ef0f4dd10 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 12:31:28 +0100 Subject: don't name unused parameter in apt-helper waitonline Reported-By: gcc -Wunused-parameter Gbp-Dch: Ignore --- cmdline/apt-helper.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc index af8421f41..d1a3b4e6e 100644 --- a/cmdline/apt-helper.cc +++ b/cmdline/apt-helper.cc @@ -197,7 +197,7 @@ static bool ServiceIsActive(const char *service) return ExecWait(pid, "systemctl is-active", true); } -static bool DoWaitOnline(CommandLine &CmdL) +static bool DoWaitOnline(CommandLine &) { // Also add services to After= in .service static const char *WaitingTasks[][6] = { -- cgit v1.2.3 From 5d5ca1aac76448cdfd16972090d246c44671dce6 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 12:51:26 +0100 Subject: deprecate the single-line deprecation ignoring macro gcc has problems understanding this construct and additionally thinks it would produce multiple lines and stuff, so to keep using it isn't really worth it for the few instances we have: We can just write the long form there which works better. Reported-By: gcc Gbp-Dch: Ignore --- apt-pkg/acquire-item.cc | 4 +++- apt-pkg/contrib/macros.h | 1 + apt-pkg/deb/debmetaindex.cc | 6 ++++-- apt-pkg/deb/debsrcrecords.cc | 6 +++++- apt-pkg/pkgcachegen.cc | 4 +++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index b13bd203b..b3eb75d16 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -971,7 +971,9 @@ bool pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState const void pkgAcquire::Item::SetActiveSubprocess(const std::string &subprocess)/*{{{*/ { ActiveSubprocess = subprocess; - APT_IGNORE_DEPRECATED(Mode = ActiveSubprocess.c_str();) + APT_IGNORE_DEPRECATED_PUSH + Mode = ActiveSubprocess.c_str(); + APT_IGNORE_DEPRECATED_POP } /*}}}*/ // Acquire::Item::ReportMirrorFailure /*{{{*/ diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h index abf99f7a2..57d3f6c22 100644 --- a/apt-pkg/contrib/macros.h +++ b/apt-pkg/contrib/macros.h @@ -143,6 +143,7 @@ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #define APT_IGNORE_DEPRECATED_POP \ _Pragma("GCC diagnostic pop") + /* gcc has various problems with this shortcut, so prefer the long form */ #define APT_IGNORE_DEPRECATED(XXX) \ APT_IGNORE_DEPRECATED_PUSH \ XXX \ diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index c2579e12d..ad27e2dcd 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -459,8 +459,10 @@ bool debReleaseIndex::Load(std::string const &Filename, std::string * const Erro Sum->MetaKeyFilename = Name; Sum->Size = Size; Sum->Hashes.FileSize(Size); - APT_IGNORE_DEPRECATED(Sum->Hash = hs;) - Entries[Name] = Sum; + APT_IGNORE_DEPRECATED_PUSH + Sum->Hash = hs; + APT_IGNORE_DEPRECATED_POP + Entries[Name] = Sum; } Entries[Name]->Hashes.push_back(hs); FoundHashSum = true; diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index 1cabfe281..7fd206ed6 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -241,7 +241,11 @@ bool debSrcRecordParser::Files2(std::vector &List) if (file != List.end()) { if (checksumField == "Files") - APT_IGNORE_DEPRECATED(file->MD5Hash = hash;) + { + APT_IGNORE_DEPRECATED_PUSH + file->MD5Hash = hash; + APT_IGNORE_DEPRECATED_POP + } // an error here indicates that we have two different hashes for the same file if (file->Hashes.push_back(hashString) == false) return _error->Error("Error parsing checksum in %s of source package %s", checksumField.c_str(), Package().c_str()); diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index bde0ea122..50c7961e7 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -599,7 +599,9 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, StringView Name, Pkg = pkgCache::PkgIterator(Cache,Cache.PkgP + Package); // Set the name, arch and the ID - APT_IGNORE_DEPRECATED(Pkg->Name = Grp->Name;) + APT_IGNORE_DEPRECATED_PUSH + Pkg->Name = Grp->Name; + APT_IGNORE_DEPRECATED_POP Pkg->Group = Grp.Index(); // all is mapped to the native architecture map_stringitem_t const idxArch = (Arch == "all") ? Cache.HeaderP->Architecture : StoreString(MIXED, Arch); -- cgit v1.2.3 From 957381a0d26ec11a172ebfc64f892d1b31f0c193 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 13:26:38 +0100 Subject: convert various c-style casts to C++-style gcc was warning about ignored type qualifiers for all of them due to the last 'const', so dropping that and converting to static_cast in the process removes the here harmless warning to avoid hidden real issues in them later on. Reported-By: gcc Gbp-Dch: Ignore --- apt-pkg/cacheiterators.h | 4 ++-- apt-pkg/contrib/configuration.h | 2 +- apt-pkg/contrib/fileutl.cc | 2 +- apt-pkg/contrib/hashes.h | 14 +++++++------- apt-pkg/contrib/hashsum_template.h | 8 ++++---- apt-pkg/contrib/mmap.cc | 3 +-- apt-pkg/contrib/mmap.h | 7 +++++-- apt-pkg/deb/deblistparser.cc | 6 +++--- apt-pkg/pkgcachegen.cc | 8 ++++---- apt-private/private-search.cc | 4 ++-- 10 files changed, 30 insertions(+), 28 deletions(-) diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 0cb684382..52915aae4 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -86,7 +86,7 @@ template class pkgCache::Iterator : void ReMap(void const * const oldMap, void const * const newMap) { if (Owner == 0 || S == 0) return; - S += (Str const * const)(newMap) - (Str const * const)(oldMap); + S += static_cast(newMap) - static_cast(oldMap); } // Constructors - look out for the variable assigning @@ -341,7 +341,7 @@ class pkgCache::DepIterator : public Iterator { Iterator::ReMap(oldMap, newMap); if (Owner == 0 || S == 0 || S2 == 0) return; - S2 += (DependencyData const * const)(newMap) - (DependencyData const * const)(oldMap); + S2 += static_cast(newMap) - static_cast(oldMap); } //Nice printable representation diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 8d0835cf5..73f7acb81 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -66,7 +66,7 @@ class Configuration Item *Lookup(const char *Name,const bool &Create); inline const Item *Lookup(const char *Name) const { - return ((Configuration *)this)->Lookup(Name,false); + return const_cast(this)->Lookup(Name,false); } public: diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 6cc7414b0..d3764d003 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1107,7 +1107,7 @@ public: } unsigned long long const OutputSize = std::min(Size, buffer.size()); - char const * const newline = static_cast(memchr(buffer.get(), '\n', OutputSize)); + char const * const newline = static_cast(memchr(buffer.get(), '\n', OutputSize)); // Read until end of line or up to Size bytes from the buffer. unsigned long long actualread = buffer.read(To, (newline != nullptr) diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index 11521008a..dc91c1dd3 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -197,7 +197,7 @@ class Hashes bool Add(const unsigned char * const Data, unsigned long long const Size) APT_NONNULL(2); APT_DEPRECATED_MSG("Construct accordingly instead of choosing hashes while adding") bool Add(const unsigned char * const Data, unsigned long long const Size, unsigned int const Hashes) APT_NONNULL(2); inline bool Add(const char * const Data) APT_NONNULL(2) - {return Add((unsigned char const * const)Data,strlen(Data));}; + {return Add(reinterpret_cast(Data),strlen(Data));}; inline bool Add(const unsigned char * const Beg,const unsigned char * const End) APT_NONNULL(2,3) {return Add(Beg,End-Beg);}; @@ -227,12 +227,12 @@ APT_IGNORE_DEPRECATED_POP private: APT_HIDDEN APT_PURE inline unsigned int boolsToFlag(bool const addMD5, bool const addSHA1, bool const addSHA256, bool const addSHA512) { - unsigned int Hashes = ~0; - if (addMD5 == false) Hashes &= ~MD5SUM; - if (addSHA1 == false) Hashes &= ~SHA1SUM; - if (addSHA256 == false) Hashes &= ~SHA256SUM; - if (addSHA512 == false) Hashes &= ~SHA512SUM; - return Hashes; + unsigned int hashes = ~0; + if (addMD5 == false) hashes &= ~MD5SUM; + if (addSHA1 == false) hashes &= ~SHA1SUM; + if (addSHA256 == false) hashes &= ~SHA256SUM; + if (addSHA512 == false) hashes &= ~SHA512SUM; + return hashes; } public: diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h index 2594f6aeb..33e096b79 100644 --- a/apt-pkg/contrib/hashsum_template.h +++ b/apt-pkg/contrib/hashsum_template.h @@ -123,17 +123,17 @@ class SummationImplementation public: virtual bool Add(const unsigned char *inbuf, unsigned long long inlen) APT_NONNULL(2) = 0; inline bool Add(const char *inbuf, unsigned long long const inlen) APT_NONNULL(2) - { return Add((const unsigned char *)inbuf, inlen); } + { return Add(reinterpret_cast(inbuf), inlen); } inline bool Add(const unsigned char *Data) APT_NONNULL(2) - { return Add(Data, strlen((const char *)Data)); } + { return Add(Data, strlen(reinterpret_cast(Data))); } inline bool Add(const char *Data) APT_NONNULL(2) - { return Add((const unsigned char *)Data, strlen(Data)); } + { return Add(reinterpret_cast(Data), strlen(Data)); } inline bool Add(const unsigned char *Beg, const unsigned char *End) APT_NONNULL(2,3) { return Add(Beg, End - Beg); } inline bool Add(const char *Beg, const char *End) APT_NONNULL(2,3) - { return Add((const unsigned char *)Beg, End - Beg); } + { return Add(reinterpret_cast(Beg), End - Beg); } bool AddFD(int Fd, unsigned long long Size = 0); bool AddFD(FileFd &Fd, unsigned long long Size = 0); diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc index 100796cdf..bfded21e2 100644 --- a/apt-pkg/contrib/mmap.cc +++ b/apt-pkg/contrib/mmap.cc @@ -28,7 +28,6 @@ #include #include #include -#include #include #include @@ -415,7 +414,7 @@ unsigned long DynamicMMap::Allocate(unsigned long ItemSize) unsigned long DynamicMMap::WriteString(const char *String, unsigned long Len) { - if (Len == (unsigned long)-1) + if (Len == std::numeric_limits::max()) Len = strlen(String); _error->PushToStack(); diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index df02b1b85..c194de534 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -26,6 +26,9 @@ #define PKGLIB_MMAP_H #include +#include + +#include #ifndef APT_8_CLEANER_HEADERS #include @@ -65,7 +68,7 @@ class MMap inline void *Data() {return Base;}; inline unsigned long long Size() {return iSize;}; inline void AddSize(unsigned long long const size) {iSize += size;}; - inline bool validData() const { return Base != (void *)-1 && Base != 0; }; + inline bool validData() const { return Base != MAP_FAILED && Base != 0; }; // File manipulators bool Sync(); @@ -104,7 +107,7 @@ class DynamicMMap : public MMap // Allocation unsigned long RawAllocate(unsigned long long Size,unsigned long Aln = 0); unsigned long Allocate(unsigned long ItemSize); - unsigned long WriteString(const char *String,unsigned long Len = (unsigned long)-1); + unsigned long WriteString(const char *String,unsigned long Len = std::numeric_limits::max()); inline unsigned long WriteString(const std::string &S) {return WriteString(S.c_str(),S.length());}; void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;}; diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 378988a1c..241313ff2 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -170,15 +170,15 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) Ver->SourceVerStr = Ver->VerStr; if (Section.Find(pkgTagSection::Key::Source,Start,Stop) == true) { - const char * const Space = (const char * const) memchr(Start, ' ', Stop - Start); + const char * const Space = static_cast(memchr(Start, ' ', Stop - Start)); pkgCache::VerIterator V; if (Space != NULL) { - const char * const Open = (const char * const) memchr(Space, '(', Stop - Space); + const char * const Open = static_cast(memchr(Space, '(', Stop - Space)); if (likely(Open != NULL)) { - const char * const Close = (const char * const) memchr(Open, ')', Stop - Open); + const char * const Close = static_cast(memchr(Open, ')', Stop - Open)); if (likely(Close != NULL)) { APT::StringView const version(Open + 1, (Close - Open) - 1); diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 50c7961e7..1748e8bc1 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -159,8 +159,8 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void const * const newM Cache.ReMap(false); - CurrentFile += (pkgCache::PackageFile const * const) newMap - (pkgCache::PackageFile const * const) oldMap; - CurrentRlsFile += (pkgCache::ReleaseFile const * const) newMap - (pkgCache::ReleaseFile const * const) oldMap; + CurrentFile += static_cast(newMap) - static_cast(oldMap); + CurrentRlsFile += static_cast(newMap) - static_cast(oldMap); for (std::vector::const_iterator i = Dynamic::toReMap.begin(); i != Dynamic::toReMap.end(); ++i) @@ -439,7 +439,7 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator Pkg.Name(), "NewVersion", 1); if (oldMap != Map.Data()) - LastVer += (map_pointer_t const * const) Map.Data() - (map_pointer_t const * const) oldMap; + LastVer += static_cast(Map.Data()) - static_cast(oldMap); *LastVer = verindex; if (unlikely(List.NewVersion(Ver) == false)) @@ -1056,7 +1056,7 @@ bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg, for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false; ++D) OldDepLast = &D->NextDepends; } else if (oldMap != Map.Data()) - OldDepLast += (map_pointer_t const * const) Map.Data() - (map_pointer_t const * const) oldMap; + OldDepLast += static_cast(Map.Data()) - static_cast(oldMap); Dep->NextDepends = *OldDepLast; *OldDepLast = Dependency; diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc index 7ec1915a8..eac7abd05 100644 --- a/apt-private/private-search.cc +++ b/apt-private/private-search.cc @@ -133,8 +133,8 @@ static bool FullTextSearch(CommandLine &CmdL) /*{{{*/ // LocalitySort - Sort a version list by package file locality /*{{{*/ static int LocalityCompare(const void * const a, const void * const b) { - pkgCache::VerFile const * const A = *(pkgCache::VerFile const * const * const)a; - pkgCache::VerFile const * const B = *(pkgCache::VerFile const * const * const)b; + pkgCache::VerFile const * const A = *static_cast(a); + pkgCache::VerFile const * const B = *static_cast(b); if (A == 0 && B == 0) return 0; -- cgit v1.2.3 From 1adcf56bec7d2127d83aa423916639740fe8e586 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 21:39:16 +0100 Subject: avoid some useless casts reported by -Wuseless-cast The casts are useless, but the reports show some where we can actually improve the code by replacing them with better alternatives like converting whatever int type into a string instead of casting to a specific one which might in the future be too small. Reported-By: gcc -Wuseless-cast --- apt-pkg/cdrom.cc | 2 +- apt-pkg/contrib/cdromutl.cc | 33 ++++++++++++++------------------- apt-pkg/indexcopy.cc | 15 +++++++-------- apt-private/private-source.cc | 7 +------ cmdline/apt-config.cc | 2 +- ftparchive/writer.cc | 5 +---- methods/basehttp.cc | 2 +- test/libapt/getlistoffilesindir_test.cc | 2 +- test/libapt/globalerror_test.cc | 4 ++-- 9 files changed, 29 insertions(+), 43 deletions(-) diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index 4f57153f9..e4b0bef06 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -315,7 +315,7 @@ bool pkgCdrom::DropRepeats(vector &List,const char *Name) for (std::vector::const_iterator c = compressor.begin(); c != compressor.end(); ++c) { - std::string filename = std::string(List[I]).append(Name).append(c->Extension); + std::string const filename = List[I] + Name + c->Extension; if (stat(filename.c_str(), &Buf) != 0) continue; Inodes[I] = Buf.st_ino; diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc index 93bfb9f42..7ae54060a 100644 --- a/apt-pkg/contrib/cdromutl.cc +++ b/apt-pkg/contrib/cdromutl.cc @@ -105,13 +105,14 @@ bool UnmountCdrom(string Path) } else { - const char *Args[10]; - Args[0] = "umount"; - Args[1] = Path.c_str(); - Args[2] = 0; - execvp(Args[0],(char **)Args); + const char * const Args[] = { + "umount", + Path.c_str(), + nullptr + }; + execvp(Args[0], const_cast(Args)); _exit(100); - } + } } // if it can not be umounted, give it a bit more time @@ -222,15 +223,13 @@ bool IdentCdrom(string CD,string &Res,unsigned int Version) std::string S; if (Version <= 1) - { - strprintf(S, "%lu", (unsigned long)Dir->d_ino); - } + S = std::to_string(Dir->d_ino); else { struct stat Buf; if (fstatat(dirfd, Dir->d_name, &Buf, 0) != 0) continue; - strprintf(S, "%lu", (unsigned long)Buf.st_mtime); + S = std::to_string(Buf.st_mtime); } Hash.Add(S.c_str()); @@ -246,21 +245,17 @@ bool IdentCdrom(string CD,string &Res,unsigned int Version) return _error->Errno("statfs",_("Failed to stat the cdrom")); // We use a kilobyte block size to avoid overflow - if (writable_media) - { - strprintf(S, "%lu", (unsigned long)(Buf.f_blocks*(Buf.f_bsize/1024))); - } else { - strprintf(S, "%lu %lu", (unsigned long)(Buf.f_blocks*(Buf.f_bsize/1024)), - (unsigned long)(Buf.f_bfree*(Buf.f_bsize/1024))); - } - Hash.Add(S.c_str()); + S = std::to_string(Buf.f_blocks * (Buf.f_bsize / 1024)); + if (writable_media == false) + S.append(" ").append(std::to_string(Buf.f_bfree * (Buf.f_bsize / 1024))); + Hash.Add(S.c_str(), S.length()); strprintf(S, "-%u", Version); } else strprintf(S, "-%u.debug", Version); closedir(D); - Res = Hash.Result().Value() + S; + Res = Hash.Result().Value().append(std::move(S)); return true; } /*}}}*/ diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index d4cab1a04..cb23a860f 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -58,15 +58,14 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector &List, // Prepare the progress indicator off_t TotalSize = 0; std::vector const compressor = APT::Configuration::getCompressors(); - for (vector::iterator I = List.begin(); I != List.end(); ++I) + for (auto const &F : List) { struct stat Buf; bool found = false; - std::string file = std::string(*I).append(GetFileName()); - for (std::vector::const_iterator c = compressor.begin(); - c != compressor.end(); ++c) + auto const file = F + GetFileName(); + for (auto const &ext: APT::Configuration::getCompressorExtensions()) { - if (stat((file + c->Extension).c_str(), &Buf) != 0) + if (stat((file + ext).c_str(), &Buf) != 0) continue; found = true; break; @@ -82,9 +81,9 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector &List, unsigned int WrongSize = 0; unsigned int Packages = 0; for (vector::iterator I = List.begin(); I != List.end(); ++I) - { - string OrigPath = string(*I,CDROM.length()); - + { + std::string OrigPath(*I,CDROM.length()); + // Open the package file FileFd Pkg(*I + GetFileName(), FileFd::ReadOnly, FileFd::Auto); off_t const FileSize = Pkg.Size(); diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc index 47610cd80..32651cfdb 100644 --- a/apt-private/private-source.cc +++ b/apt-private/private-source.cc @@ -208,12 +208,7 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name, // or RelTag if (Cache.BuildPolicy() == false) return nullptr; - pkgPolicy * Policy = dynamic_cast(Cache.GetPolicy()); - if (Policy == nullptr) - { - _error->Fatal("Implementation error: dynamic up-casting policy engine failed in FindSrc!"); - return nullptr; - } + pkgPolicy * const Policy = Cache.GetPolicy(); pkgCache::VerIterator const Ver = Policy->GetCandidateVer(Pkg); if (Ver.end() == false) { diff --git a/cmdline/apt-config.cc b/cmdline/apt-config.cc index ef1e95de1..4e546b098 100644 --- a/cmdline/apt-config.cc +++ b/cmdline/apt-config.cc @@ -128,7 +128,7 @@ int main(int argc,const char *argv[]) /*{{{*/ _config->Set(comp + "Name", c->Name); _config->Set(comp + "Extension", c->Extension); _config->Set(comp + "Binary", c->Binary); - _config->Set(std::string(comp + "Cost").c_str(), c->Cost); + _config->Set((comp + "Cost").c_str(), c->Cost); for (std::vector::const_iterator a = c->CompressArgs.begin(); a != c->CompressArgs.end(); ++a) _config->Set(comp + "CompressArg::", *a); for (std::vector::const_iterator a = c->UncompressArgs.begin(); a != c->UncompressArgs.end(); ++a) diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index bb855d532..91cb72d01 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -477,10 +477,7 @@ bool PackagesWriter::DoPackage(string FileName) // This lists all the changes to the fields we are going to make. std::vector Changes; - - std::string Size; - strprintf(Size, "%llu", (unsigned long long) FileSize); - Changes.push_back(pkgTagSection::Tag::Rewrite("Size", Size)); + Changes.push_back(pkgTagSection::Tag::Rewrite("Size", std::to_string(FileSize))); for (HashStringList::const_iterator hs = Db.HashesList.begin(); hs != Db.HashesList.end(); ++hs) { diff --git a/methods/basehttp.cc b/methods/basehttp.cc index b4c9cc5ed..c77ab28c6 100644 --- a/methods/basehttp.cc +++ b/methods/basehttp.cc @@ -191,7 +191,7 @@ bool RequestState::HeaderLine(string const &Line) /*{{{*/ ; // we got the expected filesize which is all we wanted else if (sscanf(Val.c_str(),"bytes %llu-%*u/%llu",&StartPos,&TotalFileSize) != 2) return _error->Error(_("The HTTP server sent an invalid Content-Range header")); - if ((unsigned long long)StartPos > TotalFileSize) + if (StartPos > TotalFileSize) return _error->Error(_("This HTTP server has broken range support")); // figure out what we will download diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc index 606e2733e..ba4f9f6ef 100644 --- a/test/libapt/getlistoffilesindir_test.cc +++ b/test/libapt/getlistoffilesindir_test.cc @@ -11,7 +11,7 @@ #include "file-helpers.h" -#define P(x) std::string(tempdir).append("/").append(x) +#define P(x) tempdir + "/" + x TEST(FileUtlTest,GetListOfFilesInDir) { diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc index 67682c275..ff14d4618 100644 --- a/test/libapt/globalerror_test.cc +++ b/test/libapt/globalerror_test.cc @@ -111,11 +111,11 @@ TEST(GlobalErrorTest,LongMessage) longText.append("a"); EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2)); EXPECT_TRUE(e.PopMessage(text)); - EXPECT_EQ(std::string(longText).append(" horrible happened 2 times"), text); + EXPECT_EQ(longText + " horrible happened 2 times", text); EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2)); EXPECT_TRUE(e.PopMessage(text)); - EXPECT_EQ(std::string(longText).append(" horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"), text); + EXPECT_EQ(longText + " horrible happened 2 times - errno (0: " + textOfErrnoZero + ")", text); EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2)); std::ostringstream out; -- cgit v1.2.3 From 0b5e329a8ba2461ccb7017d3adfc972f9dccd830 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 13 Dec 2017 21:51:52 +0100 Subject: deal with floats without old-style cast We have no speed problem with handling floats/doubles in our progress handling, but that shouldn't prevent us from cleaning up the handling slightly to avoid unclean casting to ints. Reported-By: gcc -Wdouble-promotion -Wold-style-cast --- apt-pkg/acquire.cc | 13 +++++++------ apt-pkg/contrib/progress.cc | 5 +++-- apt-pkg/install-progress.cc | 8 ++++---- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 408cf6df5..f6e323d30 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -437,7 +438,7 @@ string pkgAcquire::QueueName(string Uri,MethodConfig const *&Config) clog << "Found " << Instances << " instances of " << U.Access << endl; } - if (Instances >= (unsigned int)_config->FindI("Acquire::QueueHost::Limit",10)) + if (Instances >= static_cast(_config->FindI("Acquire::QueueHost::Limit",10))) return U.Access; return FullQueueName; @@ -1074,7 +1075,7 @@ bool pkgAcquire::Queue::Cycle() // Look for a queable item QItem *I = Items; int ActivePriority = 0; - while (PipeDepth < (signed)MaxPipeDepth) + while (PipeDepth < static_cast(MaxPipeDepth)) { for (; I != 0; I = I->Next) { if (I->Owner->Status == pkgAcquire::Item::StatFetching) @@ -1285,7 +1286,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) else CurrentCPS = ((CurrentBytes - ResumeSize) - LastBytes)/Delta; LastBytes = CurrentBytes - ResumeSize; - ElapsedTime = (unsigned long long)Delta; + ElapsedTime = std::llround(Delta); Time = NewTime; } @@ -1295,8 +1296,8 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) Percent = 0; else // use both files and bytes because bytes can be unreliable - Percent = (0.8 * (CurrentBytes/float(TotalBytes)*100.0) + - 0.2 * (CurrentItems/float(TotalItems)*100.0)); + Percent = (0.8 * (CurrentBytes/double(TotalBytes)*100.0) + + 0.2 * (CurrentItems/double(TotalItems)*100.0)); // debug if (_config->FindB("Debug::acquire::progress", false) == true) @@ -1380,7 +1381,7 @@ void pkgAcquireStatus::Stop() else CurrentCPS = FetchedBytes/Delta; LastBytes = CurrentBytes; - ElapsedTime = (unsigned long long)Delta; + ElapsedTime = std::llround(Delta); } /*}}}*/ // AcquireStatus::Fetched - Called when a byte set has been fetched /*{{{*/ diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index 7c5b15e6b..5499f0946 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -44,7 +45,7 @@ void OpProgress::Progress(unsigned long long Cur) if (Total == 0 || Size == 0 || SubTotal == 0) Percent = 0; else - Percent = (Current + Cur/((float)SubTotal)*Size)*100.0/Total; + Percent = (Current + Cur/((double)SubTotal)*Size)*100.0/Total; Update(); } /*}}}*/ @@ -106,7 +107,7 @@ bool OpProgress::CheckChange(float Interval) return true; } - if ((int)LastPercent == (int)Percent) + if (std::lround(LastPercent) == std::lround(Percent)) return false; LastPercent = Percent; diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc index 2c2205d2b..09bf465bf 100644 --- a/apt-pkg/install-progress.cc +++ b/apt-pkg/install-progress.cc @@ -55,8 +55,8 @@ bool PackageManager::StatusChanged(std::string /*PackageName*/, std::string /*HumanReadableAction*/) { int reporting_steps = _config->FindI("DpkgPM::Reporting-Steps", 1); - percentage = StepsDone/(float)TotalSteps * 100.0; - strprintf(progress_str, _("Progress: [%3i%%]"), (int)percentage); + percentage = StepsDone/(double)TotalSteps * 100.0; + strprintf(progress_str, _("Progress: [%3li%%]"), std::lround(percentage)); if(percentage < (last_reported_progress + reporting_steps)) return false; @@ -382,8 +382,8 @@ bool PackageManagerFancy::DrawStatusLine() if (_config->FindB("Dpkg::Progress-Fancy::Progress-Bar", true)) { int padding = 4; - float progressbar_size = size.columns - padding - progress_str.size(); - float current_percent = percentage / 100.0; + auto const progressbar_size = size.columns - padding - progress_str.size(); + auto const current_percent = percentage / 100.0; std::cout << " " << GetTextProgressStr(current_percent, progressbar_size) << " "; -- cgit v1.2.3