Main Page Modules Data Structures File List Data Fields Globals Related Pages

# lib/rpmal.c File Reference

More...

`#include "system.h"`
`#include <rpmlib.h>`
`#include "rpmal.h"`
`#include "rpmds.h"`
`#include "rpmfi.h"`
`#include "debug.h"`

Go to the source code of this file.

## Data Structures

struct | availableIndex_s
struct | availableIndexEntry_s
struct | availablePackage_s
struct | dirInfo_s
struct | fileIndexEntry_s
struct | rpmal_s

## Typedefs

typedef availablePackage_s * | availablePackage
typedef availableIndexEntry_s * | availableIndexEntry
typedef availableIndex_s * | availableIndex
typedef fileIndexEntry_s * | fileIndexEntry
typedef dirInfo_s * | dirInfo

## Functions

void | rpmalFreeIndex (rpmal al)
| Destroy available item index. More...
alNum | alKey2Num (const rpmal al, alKey pkgKey)
alKey | alNum2Key (const rpmal al, alNum pkgNum)
rpmal | rpmalCreate (int delta)
| Initialize available packckages, items, and directory list. More...
rpmal | rpmalFree (rpmal al)
| Free available packages, items, and directory members. More...
int | dieCompare (const void *one, const void *two)
| Compare two directory info entries by name (qsort/bsearch). More...
int | fieCompare (const void *one, const void *two)
| Compare two file info entries by name (qsort/bsearch). More...
void | rpmalDel (rpmal al, alKey pkgKey)
| Delete package from available list. More...
alKey | rpmalAdd (rpmal *alistp, alKey pkgKey, fnpyKey key, rpmds provides, rpmfi fi)
| Add package to available list. More...
int | indexcmp (const void *one, const void *two)
| Compare two available index entries by name (qsort/bsearch). More...
void | rpmalAddProvides (rpmal al, alKey pkgKey, rpmds provides)
| Add package provides to available list index. More...
void | rpmalMakeIndex (rpmal al)
| Generate index for available list. More...
fnpyKey * | rpmalAllFileSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
| Check added package file lists for package(s) that provide a file. More...
fnpyKey * | rpmalAllSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
| Check added package file lists for package(s) that have a provide. More...
fnpyKey | rpmalSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
| Check added package file lists for first package that has a provide. More...

## Variables

int | _rpmal_debug = 0

## Detailed Description

Definition in file rpmal.c.

## Typedef Documentation

typedef struct availableIndex_s* availableIndex

| Definition at line 63 of file rpmal.c.

typedef struct availableIndexEntry_s* availableIndexEntry

| Definition at line 45 of file rpmal.c.

typedef struct availablePackage_s* availablePackage

| Definition at line 15 of file rpmal.c.

typedef struct dirInfo_s* dirInfo

| Definition at line 90 of file rpmal.c.

typedef struct fileIndexEntry_s* fileIndexEntry

| Definition at line 76 of file rpmal.c.

## Function Documentation

alNum alKey2Num | ( | const rpmal | al,
|  | alKey | pkgKey
| ) | `[inline, static]`

| Definition at line 147 of file rpmal.c. References alKey, and alNum. Referenced by rpmalAdd, rpmalAddProvides, rpmalAllSatisfiesDepend, and rpmalDel.

alKey alNum2Key | ( | const rpmal | al,
|  | alNum | pkgNum
| ) | `[inline, static]`

| Definition at line 156 of file rpmal.c. References alKey, and alNum. Referenced by rpmalAllFileSatisfiesDepend.

int dieCompare | ( | const void * | one,
|  | const void * | two
| ) | `[static]`

Compare two directory info entries by name (qsort/bsearch).

Parameters:

  one | 1st directory info
  two | 2nd directory info

Returns:
  result of comparison

Definition at line 242 of file rpmal.c.

References dirInfo_s::dirName, and dirInfo_s::dirNameLen.

Referenced by rpmalAdd, rpmalAllFileSatisfiesDepend, and rpmalDel.

int fieCompare | ( | const void * | one,
|  | const void * | two
| ) | `[static]`

Compare two file info entries by name (qsort/bsearch).

Parameters:

  one | 1st directory info
  two | 2nd directory info

Returns:
  result of comparison

Definition at line 267 of file rpmal.c.

References fileIndexEntry_s::baseName, and fileIndexEntry_s::baseNameLen.

Referenced by rpmalAdd, and rpmalAllFileSatisfiesDepend.

int indexcmp | ( | const void * | one,
|  | const void * | two
| ) | `[static]`

Compare two available index entries by name (qsort/bsearch).

Parameters:

  one | 1st available index entry
  two | 2nd available index entry

Returns:
  result of comparison

Definition at line 525 of file rpmal.c.

References availableIndexEntry_s::entry, and availableIndexEntry_s::entryLen.

Referenced by rpmalAllSatisfiesDepend, and rpmalMakeIndex.

alKey rpmalAdd | ( | rpmal * | alistp,
|  | alKey | pkgKey,
|  | fnpyKey | key,
|  | rpmds | provides,
|  | rpmfi | fi
| ) |

Add package to available list.

Parameters:

  alistp | address of available list
  pkgKey | package key, RPMAL_NOMATCH to force an append
  key | associated file name/python object
  provides | provides dependency set
  fi | file info set

Returns:
  available package index

Definition at line 380 of file rpmal.c.

References alKey, alKey2Num, alloca, rpmal_s::alloced, alNum, fileIndexEntry_s::baseName, fileIndexEntry_s::baseNameLen, rpmal_s::delta, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, availablePackage_s::fi, fieCompare, fileIndexEntry_s::fileFlags, dirInfo_s::files, availablePackage_s::key, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, availablePackage_s::provides, RPMAL_NOMATCH, rpmalCreate, rpmalDel, rpmalFreeIndex, rpmds, rpmdsLink, rpmfi, rpmal_s::size, xrealloc, and xstrdup.

void rpmalAddProvides | ( | rpmal | al,
|  | alKey | pkgKey,
|  | rpmds | provides
| ) |

Add package provides to available list index.

Parameters:

  al | available list
  pkgKey | package key
  provides | added package provides

Definition at line 541 of file rpmal.c.

References alKey, alKey2Num, alNum, availableIndexEntry_s::entry, availableIndexEntry_s::entryIx, availableIndexEntry_s::entryLen, availableIndex_s::index, rpmal_s::index, int_32, isDependsMULTILIB, availableIndex_s::k, rpmal_s::list, availableIndexEntry_s::pkgKey, rpmds, rpmdsFlags, rpmdsInit, rpmdsIx, rpmdsN, rpmdsNext, availableIndex_s::size, rpmal_s::size, and availableIndexEntry_s::type.

fnpyKey* rpmalAllFileSatisfiesDepend | ( | const rpmal | al,
|  | const rpmds | ds,
|  | alKey * | keyp
| ) |

Check added package file lists for package(s) that provide a file.

Parameters:

  al | available list
  ds | dependency set

Return values:

  keyp | added package key pointer (or NULL)

Returns:
  associated package key(s), NULL if none

Definition at line 613 of file rpmal.c.

References _, _free, alKey, alloca, alNum2Key, fileIndexEntry_s::baseName, fileIndexEntry_s::baseNameLen, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, fieCompare, fileIndexEntry_s::fileFlags, dirInfo_s::files, isFileMULTILIB, availablePackage_s::key, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, RPMAL_NOMATCH, rpmds, rpmdsN, rpmdsNotify, xrealloc, and xstrdup.

fnpyKey* rpmalAllSatisfiesDepend | ( | const rpmal | al,
|  | const rpmds | ds,
|  | alKey * | keyp
| ) |

Check added package file lists for package(s) that have a provide.

Parameters:

  al | available list
  ds | dependency set

Return values:

  keyp | added package key pointer (or NULL)

Returns:
  associated package key(s), NULL if none

Definition at line 712 of file rpmal.c.

References _, alKey, alKey2Num, alloca, availableIndexEntry_s::entry, availableIndexEntry_s::entryIx, availableIndexEntry_s::entryLen, availableIndex_s::index, rpmal_s::index, indexcmp, availablePackage_s::key, rpmal_s::list, availableIndexEntry_s::pkgKey, availablePackage_s::provides, RPMAL_NOMATCH, rpmalAllFileSatisfiesDepend, rpmds, rpmdsCompare, rpmdsN, rpmdsNext, rpmdsNotify, rpmdsSetIx, availableIndex_s::size, availableIndexEntry_s::type, and xrealloc.

rpmal rpmalCreate | ( | int | delta | ) |

Initialize available packckages, items, and directory list.

Parameters:

  delta | no. of entries to add on each realloc

Returns:
  al new available list

Definition at line 188 of file rpmal.c.

References rpmal_s::alloced, rpmal_s::delta, rpmal_s::dirs, availableIndex_s::index, rpmal_s::index, rpmal_s::list, rpmal_s::numDirs, availableIndex_s::size, rpmal_s::size, and xcalloc.

void rpmalDel | ( | rpmal | al,
|  | alKey | pkgKey
| ) |

Delete package from available list.

Parameters:

  al | available list
  pkgKey | package key

Definition at line 286 of file rpmal.c.

References _free, alKey, alKey2Num, alloca, alNum, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, availablePackage_s::fi, dirInfo_s::files, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, availablePackage_s::provides, rpmdsFree, rpmfi, and xrealloc.

rpmal rpmalFree | ( | rpmal | al | ) |

Free available packages, items, and directory members.

Parameters:

  al | available list

Returns:
  NULL always

Definition at line 206 of file rpmal.c.

References _free, rpmal_s::alloced, die, dirInfo_s::dirName, rpmal_s::dirs, availablePackage_s::fi, dirInfo_s::files, rpmal_s::list, rpmal_s::numDirs, availablePackage_s::provides, rpmalFreeIndex, rpmdsFree, and rpmal_s::size.

void rpmalFreeIndex | ( | rpmal | al | ) | `[static]`

Destroy available item index.

Parameters:

  al | available list

Definition at line 124 of file rpmal.c.

References _free, availableIndex_s::index, and availableIndex_s::size.

Referenced by rpmalAdd, and rpmalFree.

void rpmalMakeIndex | ( | rpmal | al | ) |

Generate index for available list.

Parameters:

  al | available list

Definition at line 586 of file rpmal.c.

References alKey, availableIndex_s::index, rpmal_s::index, indexcmp, availableIndex_s::k, rpmal_s::list, availablePackage_s::provides, rpmalAddProvides, rpmdsCount, rpmal_s::size, availableIndex_s::size, and xrealloc.

fnpyKey rpmalSatisfiesDepend | ( | const rpmal | al,
|  | const rpmds | ds,
|  | alKey * | keyp
| ) |

Check added package file lists for first package that has a provide.

Todo:
  Eliminate.

Parameters:

  al | available list
  ds | dependency set

Return values:

  keyp | added package key pointer (or NULL)

Returns:
  associated package key, NULL if none

Definition at line 793 of file rpmal.c.

References alKey, rpmalAllSatisfiesDepend, and rpmds.

## Variable Documentation

int _rpmal_debug = 0

| Definition at line 18 of file rpmal.c.