summaryrefslogtreecommitdiff
path: root/apt-pkg/tagfile.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-06-09 10:50:32 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-06-09 10:50:32 +0200
commit1aa9b2974d33015102224ffb738b2e8e0a4bcb42 (patch)
treeb8c164c9634d2c6cf6bc245cd6fce50f680dea78 /apt-pkg/tagfile.cc
parent3c9772456931842dee211444086c15dd2e5f9a29 (diff)
parent3a882565a943644dcf7287c9673fb07f617fb851 (diff)
* apt-pkg/pkgcache.h:
- switch {,Install-}Size to unsigned long long - deal with long long, not with int to remove 2GB Limit (LP: #250909) - deprecate AddSize with Multiplier as it is unused and switch to boolean instead to handle the sizes more gracefully. - switch i{Download,Usr}Size from double to (un)signed long long * cmdline/apt-get.cc: - use unsigned long long instead of double to store values it gets
Diffstat (limited to 'apt-pkg/tagfile.cc')
-rw-r--r--apt-pkg/tagfile.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
index 0d4999ee7..1394d7e24 100644
--- a/apt-pkg/tagfile.cc
+++ b/apt-pkg/tagfile.cc
@@ -365,6 +365,30 @@ signed int pkgTagSection::FindI(const char *Tag,signed long Default) const
return Result;
}
/*}}}*/
+// TagSection::FindULL - Find an unsigned long long integer /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+unsigned long long pkgTagSection::FindULL(const char *Tag, unsigned long long const &Default) const
+{
+ const char *Start;
+ const char *Stop;
+ if (Find(Tag,Start,Stop) == false)
+ return Default;
+
+ // Copy it into a temp buffer so we can use strtoull
+ char S[100];
+ if ((unsigned)(Stop - Start) >= sizeof(S))
+ return Default;
+ strncpy(S,Start,Stop-Start);
+ S[Stop - Start] = 0;
+
+ char *End;
+ unsigned long long Result = strtoull(S,&End,10);
+ if (S == End)
+ return Default;
+ return Result;
+}
+ /*}}}*/
// TagSection::FindFlag - Locate a yes/no type flag /*{{{*/
// ---------------------------------------------------------------------
/* The bits marked in Flag are masked on/off in Flags */