1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
/* rsource.h - access the sources.list file
*
* Copyright (c) 1999 Patrick Cole <z@amused.net>
* (c) 2002 Synaptic development team
*
* Author: Patrick Cole <z@amused.net>
* Michael Vogt <mvo@debian.org>
* Gustavo Niemeyer <niemeyer@conectiva.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
#ifndef _RSOURCES_H
#define _RSOURCES_H
#include <string>
#include <list>
using namespace std;
class SourcesList {
public:
enum RecType {
Deb = 1 << 0,
DebSrc = 1 << 1,
Rpm = 1 << 2,
RpmSrc = 1 << 3,
Disabled = 1 << 4,
Comment = 1 << 5,
RpmDir = 1 << 6,
RpmSrcDir = 1 << 7,
Repomd = 1 << 8,
RepomdSrc = 1 << 9
};
struct SourceRecord {
unsigned int Type;
string VendorID;
string URI;
string Dist;
string *Sections;
unsigned short NumSections;
string Comment;
string SourceFile;
bool SetType(string);
string GetType();
bool SetURI(string);
SourceRecord():Type(0), Sections(0), NumSections(0) {
}
~SourceRecord() {
if (Sections)
delete[]Sections;
}
SourceRecord &operator=(const SourceRecord &);
};
struct VendorRecord {
string VendorID;
string FingerPrint;
string Description;
};
list<SourceRecord *> SourceRecords;
list<VendorRecord *> VendorRecords;
private:
SourceRecord *AddSourceNode(SourceRecord &);
VendorRecord *AddVendorNode(VendorRecord &);
public:
SourceRecord *AddSource(RecType Type,
string VendorID,
string URI,
string Dist,
string *Sections,
unsigned short count, string SourceFile);
SourceRecord *AddEmptySource();
void RemoveSource(SourceRecord *&);
void SwapSources( SourceRecord *&, SourceRecord *& );
bool ReadSourcePart(string listpath);
bool ReadSourceDir(string Dir);
bool ReadSources();
bool UpdateSources();
VendorRecord *AddVendor(string VendorID,
string FingerPrint, string Description);
void RemoveVendor(VendorRecord *&);
bool ReadVendors();
bool UpdateVendors();
SourcesList() {
}
~SourcesList();
};
ostream &operator <<(ostream &, const SourcesList::SourceRecord &);
#endif
|