summaryrefslogtreecommitdiff
path: root/apt-pkg/deb/debsrcrecords.cc
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 16:53:22 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 16:53:22 +0000
commit11e7af846822e893604052db7822de016fb97417 (patch)
treeb2b2e51153079aa3e88de9b6e29a61b996f78dac /apt-pkg/deb/debsrcrecords.cc
parent6c9079759285e073024f7e3193c990ede2a17cef (diff)
Source record parsing
Author: jgg Date: 1999-04-04 01:17:29 GMT Source record parsing
Diffstat (limited to 'apt-pkg/deb/debsrcrecords.cc')
-rw-r--r--apt-pkg/deb/debsrcrecords.cc63
1 files changed, 63 insertions, 0 deletions
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
new file mode 100644
index 000000000..bfbb9e202
--- /dev/null
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -0,0 +1,63 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: debsrcrecords.cc,v 1.1 1999/04/04 01:17:29 jgg Exp $
+/* ######################################################################
+
+ Debian Source Package Records - Parser implementation for Debian style
+ source indexes
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#ifdef __GNUG__
+#pragma implementation "apt-pkg/debsrcrecords.h"
+#endif
+
+#include <apt-pkg/debsrcrecords.h>
+#include <apt-pkg/error.h>
+ /*}}}*/
+
+// SrcRecordParser::Binaries - Return the binaries field /*{{{*/
+// ---------------------------------------------------------------------
+/* This member parses the binaries field into a pair of class arrays and
+ returns a list of strings representing all of the components of the
+ binaries field. The returned array need not be freed and will be
+ reused by the next Binaries function call. */
+const char **debSrcRecordParser::Binaries()
+{
+ string Bins = Sect.FindS("Binary");
+ char *Buf = Buffer;
+ unsigned int Bin = 0;
+ if (Bins.empty() == true)
+ return 0;
+
+ // Strip any leading spaces
+ string::const_iterator Start = Bins.begin();
+ for (; Start != Bins.end() && isspace(*Start) != 0; Start++);
+
+ string::const_iterator Pos = Start;
+ while (Pos != Bins.end())
+ {
+ // Skip to the next ','
+ for (; Pos != Bins.end() && *Pos != ','; Pos++);
+
+ // Back remove spaces
+ string::const_iterator End = Pos;
+ for (; End > Start && (End[-1] == ',' || isspace(End[-1]) != 0); End--);
+
+ // Stash the string
+ memcpy(Buf,Start,End-Start);
+ StaticBinList[Bin] = Buf;
+ Bin++;
+ Buf += End-Start;
+ *Buf++ = 0;
+
+ // Advance pos
+ for (; Pos != Bins.end() && (*Pos == ',' || isspace(*Pos) != 0); Pos++);
+ Start = Pos;
+ }
+
+ StaticBinList[Bin] = 0;
+ return StaticBinList;
+}
+ /*}}}*/