libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libzypp
Welcome to libzypp
Code Pitfalls - Frequently made mistakes
Code Snippets
Environment Variables
Testing for provided features.
Notes on revisions
Extending ZYpp: Plugins and Hooks
Services
Solver - Vendor protection
Writing and tunning testcases
Libzypp and threads
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
zypp
base
media
misc
parser
pool
repo
sat
solver
target
hal
modalias
rpm
BinHeader.cc
BinHeader.h
librpm.h
librpmDb.cc
librpmDb.cv3.cc
librpmDb.h
RpmCallbacks.cc
RpmCallbacks.h
RpmDb.cc
RpmDb.h
RpmException.cc
RpmException.h
RpmFlags.h
RpmHeader.cc
RpmHeader.h
CommitPackageCache.cc
CommitPackageCache.h
CommitPackageCacheImpl.cc
CommitPackageCacheImpl.h
CommitPackageCacheReadAhead.cc
CommitPackageCacheReadAhead.h
HardLocksFile.cc
HardLocksFile.h
RequestedLocalesFile.cc
RequestedLocalesFile.h
SoftLocksFile.cc
SoftLocksFile.h
TargetCallbackReceiver.cc
TargetCallbackReceiver.h
TargetException.cc
TargetException.h
TargetImpl.cc
TargetImpl.h
thread
ui
url
ws
zypp_detail
APIConfig.h
Arch.cc
Arch.h
AutoDispose.h
Bit.h
ByteCount.cc
ByteCount.h
Callback.h
Capabilities.cc
Capabilities.h
Capability.cc
Capability.h
CapMatch.cc
CapMatch.h
Changelog.cc
Changelog.h
CheckSum.cc
CheckSum.h
CountryCode.cc
CountryCode.h
Date.cc
Date.h
Dep.cc
Dep.h
Digest.cc
Digest.h
DiskUsage.cc
DiskUsage.h
DiskUsageCounter.cc
DiskUsageCounter.h
DownloadMode.cc
DownloadMode.h
Edition.cc
Edition.h
ExternalProgram.cc
ExternalProgram.h
Fetcher.cc
Fetcher.h
FileChecker.cc
FileChecker.h
Filter.h
Glob.cc
Glob.h
HistoryLog.cc
HistoryLog.h
HistoryLogData.cc
HistoryLogData.h
IdString.cc
IdString.h
IdStringType.h
InstanceId.cc
InstanceId.h
KeyContext.h
KeyRing.cc
KeyRing.h
KVMap.h
LanguageCode.cc
LanguageCode.h
Locale.cc
Locale.h
Locks.cc
Locks.h
ManagedFile.h
MediaProducts.cc
MediaProducts.h
MediaSetAccess.cc
MediaSetAccess.h
Misc.h
OnMediaLocation.cc
OnMediaLocation.h
Package.cc
Package.h
PackageKeyword.h
Patch.cc
Patch.h
PathInfo.cc
PathInfo.h
Pathname.cc
Pathname.h
Pattern.cc
Pattern.h
PluginFrame.cc
PluginFrame.h
PluginFrameException.cc
PluginFrameException.h
PluginScript.cc
PluginScript.h
PluginScriptException.cc
PluginScriptException.h
PoolItem.cc
PoolItem.h
PoolItemBest.cc
PoolItemBest.h
PoolQuery.cc
PoolQuery.h
PoolQueryResult.cc
PoolQueryResult.h
PoolQueryUtil.tcc
ProblemSolution.cc
ProblemSolution.h
ProblemTypes.h
Product.cc
Product.h
ProgressData.cc
ProgressData.h
ProvideFilePolicy.cc
ProvideFilePolicy.h
PublicKey.cc
PublicKey.h
Range.cc
Range.h
Rel.cc
Rel.h
RelCompare.h
RepoInfo.cc
RepoInfo.h
RepoManager.cc
RepoManager.h
Repository.cc
Repository.h
RepoStatus.cc
RepoStatus.h
ResFilters.h
ResKind.cc
ResKind.h
ResObject.cc
ResObject.h
ResObjects.h
Resolvable.cc
Resolvable.h
Resolver.cc
Resolver.h
ResolverProblem.cc
ResolverProblem.h
ResPool.cc
ResPool.h
ResPoolProxy.cc
ResPoolProxy.h
ResStatus.cc
ResStatus.h
ResTraits.h
ServiceInfo.cc
ServiceInfo.h
Signature.cc
Signature.h
SrcPackage.cc
SrcPackage.h
SysContent.cc
SysContent.h
Target.cc
Target.h
TmpPath.cc
TmpPath.h
TriBool.h
Url.cc
Url.h
Vendor.h
VendorAttr.cc
VendorAttr.h
VendorSupportOptions.cc
VendorSupportOptions.h
ZConfig.cc
ZConfig.h
ZYpp.cc
ZYpp.h
ZYppCallbacks.h
ZYppCommit.h
ZYppCommitPolicy.cc
ZYppCommitPolicy.h
ZYppCommitResult.cc
ZYppCommitResult.h
ZYppFactory.cc
ZYppFactory.h
File Members
librpmDb.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef librpmDb_h
13
#define librpmDb_h
14
15
#include <iosfwd>
16
17
#include "
zypp/base/ReferenceCounted.h
"
18
#include "
zypp/base/NonCopyable.h
"
19
#include "
zypp/base/PtrTypes.h
"
20
#include "
zypp/PathInfo.h
"
21
#include "
zypp/Package.h
"
22
#include "
zypp/target/rpm/RpmHeader.h
"
23
#include "
zypp/target/rpm/RpmException.h
"
24
25
namespace
zypp
26
{
27
namespace
target
28
{
29
namespace
rpm
30
{
31
33
//
34
// CLASS NAME : librpmDb
38
class
librpmDb
:
public
base::ReferenceCounted
,
private
base::NonCopyable
39
{
40
public
:
41
typedef
intrusive_ptr<librpmDb>
Ptr
;
42
typedef
intrusive_ptr<const librpmDb>
constPtr
;
43
private
:
53
static
void
dbAccess
(
librpmDb::Ptr
& ptr_r );
54
55
public
:
56
58
//
59
// static interface
60
//
62
private
:
63
68
static
Pathname
_defaultRoot
;
69
74
static
Pathname
_defaultDbPath
;
75
79
static
librpmDb::constPtr
_defaultDb
;
80
84
static
bool
_dbBlocked
;
85
93
static
librpmDb
*
newLibrpmDb
( Pathname root_r, Pathname dbPath_r,
bool
readonly_r );
94
107
static
void
dbAccess
();
108
109
public
:
110
117
static
bool
globalInit
();
118
122
static
std::string
expand
(
const
std::string & macro_r );
123
127
static
std::string
stringPath
(
const
Pathname & root_r,
const
Pathname & sub_r )
128
{
129
return
std::string(
"'("
) + root_r.asString() +
")"
+ sub_r.asString() +
"'"
;
130
}
131
132
public
:
133
137
static
const
Pathname &
defaultRoot
()
138
{
139
return
_defaultRoot
;
140
}
141
145
static
const
Pathname &
defaultDbPath
()
146
{
147
return
_defaultDbPath
;
148
}
149
164
static
void
dbAccess
(
const
Pathname & root_r,
const
Pathname & dbPath_r );
165
175
static
void
dbAccess
(
librpmDb::constPtr
& ptr_r );
176
189
static
unsigned
dbRelease
(
bool
force_r =
false
);
190
198
static
unsigned
blockAccess
();
199
210
static
void
unblockAccess
();
211
215
static
bool
isBlocked
()
216
{
217
return
_dbBlocked
;
218
}
219
223
static
std::ostream &
dumpState
( std::ostream & str );
224
225
public
:
226
231
class
DbDirInfo;
232
236
class
db_const_iterator;
237
238
private
:
240
//
241
// internal database handle interface (nonstatic)
242
//
244
248
class
D
;
249
D
&
_d
;
250
251
protected
:
252
257
librpmDb
(
const
Pathname & root_r,
const
Pathname & dbPath_r,
bool
readonly_r );
258
262
virtual
void
unref_to
(
unsigned
refCount_r )
const
;
263
264
public
:
265
269
virtual
~librpmDb
();
270
274
const
Pathname &
root
()
const
;
275
279
const
Pathname &
dbPath
()
const
;
280
285
shared_ptr<RpmException>
error
()
const
;
286
290
bool
valid
()
const
291
{
292
return
( !
error
() );
293
}
294
298
bool
empty
()
const
;
299
303
unsigned
size
()
const
;
304
305
public
:
306
310
void
*
dont_call_it
()
const
;
311
315
virtual
std::ostream &
dumpOn
( std::ostream & str )
const
;
316
};
317
319
321
//
322
// CLASS NAME : librpmDb::DbDirInfo
327
class
librpmDb::DbDirInfo
328
{
329
friend
std::ostream &
operator<<
( std::ostream & str,
const
DbDirInfo
& obj );
330
331
private
:
332
336
Pathname
_root
;
337
341
Pathname
_dbPath
;
342
346
PathInfo
_dbDir
;
347
351
PathInfo
_dbV4
;
352
356
PathInfo
_dbV3
;
357
361
PathInfo
_dbV3ToV4
;
362
363
public
:
364
369
DbDirInfo
(
const
Pathname & root_r,
const
Pathname & dbPath_r );
370
371
public
:
372
376
const
Pathname &
root
()
const
377
{
378
return
_root
;
379
}
380
384
const
Pathname &
dbPath
()
const
385
{
386
return
_dbPath
;
387
}
388
392
const
PathInfo &
dbDir
()
const
393
{
394
return
_dbDir
;
395
}
396
400
const
PathInfo &
dbV4
()
const
401
{
402
return
_dbV4
;
403
}
404
408
const
PathInfo &
dbV3
()
const
409
{
410
return
_dbV3
;
411
}
412
416
const
PathInfo &
dbV3ToV4
()
const
417
{
418
return
_dbV3ToV4
;
419
}
420
421
public
:
422
426
void
restat
();
427
428
public
:
429
433
bool
illegalArgs
()
const
434
{
435
return
_dbDir
.path().empty();
436
}
437
442
bool
usableArgs
()
const
443
{
444
return
_dbDir
.isDir() || ! (
_dbDir
.path().empty() ||
_dbDir
.isExist() );
445
}
446
450
bool
hasDbDir
()
const
451
{
452
return
_dbDir
.isDir();
453
}
454
458
bool
hasDbV4
()
const
459
{
460
return
_dbV4
.isFile();
461
}
462
466
bool
hasDbV3
()
const
467
{
468
return
_dbV3
.isFile();
469
}
470
474
bool
hasDbV3ToV4
()
const
475
{
476
return
_dbV3ToV4
.isFile();
477
}
478
};
479
481
483
//
484
// CLASS NAME : librpmDb::db_const_iterator
490
class
librpmDb::db_const_iterator
491
{
492
db_const_iterator
&
operator=
(
const
db_const_iterator
& );
// NO ASSIGNMENT!
493
db_const_iterator
(
const
db_const_iterator
& );
// NO COPY!
494
friend
std::ostream &
operator<<
( std::ostream & str,
const
db_const_iterator
& obj );
495
friend
class
librpmDb
;
496
497
private
:
498
502
class
D
;
503
D
&
_d
;
504
505
public
:
506
513
db_const_iterator
(
librpmDb::constPtr
dbptr_r = 0 );
514
518
~db_const_iterator
();
519
527
shared_ptr<RpmException>
dbError
()
const
;
528
532
void
operator++
();
533
538
unsigned
dbHdrNum
()
const
;
539
544
const
RpmHeader::constPtr
&
operator*
()
const
;
545
549
const
RpmHeader::constPtr
&
operator->
()
const
550
{
551
return
operator*
();
552
}
553
554
public
:
555
564
bool
findAll
();
565
569
bool
findByFile
(
const
std::string & file_r );
570
574
bool
findByProvides
(
const
std::string & tag_r );
575
579
bool
findByRequiredBy
(
const
std::string & tag_r );
580
584
bool
findByConflicts
(
const
std::string & tag_r );
585
596
bool
findByName
(
const
std::string & name_r );
597
598
public
:
599
607
bool
findPackage
(
const
std::string & name_r );
608
613
bool
findPackage
(
const
std::string & name_r,
const
Edition
& ed_r );
614
618
bool
findPackage
(
const
Package::constPtr
& which_r );
619
};
620
622
}
//namespace rpm
623
}
//namespace target
624
}
// namespace zypp
625
626
#endif // librpmDb_h
627
zypp
target
rpm
librpmDb.h
Generated by
1.8.1