rpmhook.c File Reference
`#include "system.h"`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include <stdarg.h>`
`#include <rpmhook.h>`
`#include "debug.h"`
Include dependency graph for rpmhook.c:

Go to the source code of this file.

## Data Structures

struct | rpmhookItem_s
struct | rpmhookBucket_s
struct | rpmhookTable_s

## Macros

#define | RPMHOOK_TABLE_INITSIZE 256
#define | RPMHOOK_BUCKET_INITSIZE 5

## Typedefs

typedef struct rpmhookItem_s * | rpmhookItem
typedef struct rpmhookBucket_s * | rpmhookBucket
typedef struct rpmhookTable_s * | rpmhookTable

## Functions

rpmhookArgs | rpmhookArgsNew (int argc)
rpmhookArgs | rpmhookArgsFree (rpmhookArgs args)
static rpmhookTable | rpmhookTableNew (int size)
static void | rpmhookTableRehash (rpmhookTable *table)
static int | rpmhookTableFindBucket (rpmhookTable *table, const char *name)
static void | rpmhookTableAddItem (rpmhookTable *table, const char *name, rpmhookFunc func, void *data)
static void | rpmhookTableDelItem (rpmhookTable *table, const char *name, rpmhookFunc func, void *data, int matchfunc, int matchdata)
static rpmhookArgs | rpmhookArgsParse (const char *argt, va_list ap)
static void | rpmhookTableCallArgs (rpmhookTable *table, const char *name, rpmhookArgs args)
void | rpmhookRegister (const char *name, rpmhookFunc func, void *data)
void | rpmhookUnregister (const char *name, rpmhookFunc func, void *data)
void | rpmhookUnregisterAny (const char *name, rpmhookFunc func)
void | rpmhookUnregisterAll (const char *name)
void | rpmhookCall (const char *name, const char *argt,...)
void | rpmhookCallArgs (const char *name, rpmhookArgs args)

## Variables

static rpmhookTable | globalTable = NULL

## Macro Definition Documentation

#define RPMHOOK_BUCKET_INITSIZE 5

Definition at line 12 of file rpmhook.c.

#define RPMHOOK_TABLE_INITSIZE 256

Definition at line 11 of file rpmhook.c.

Referenced by rpmhookRegister().

## Typedef Documentation

typedef struct rpmhookBucket_s * rpmhookBucket

typedef struct rpmhookItem_s * rpmhookItem

typedef struct rpmhookTable_s * rpmhookTable

## Function Documentation

rpmhookArgs rpmhookArgsFree | ( | rpmhookArgs | args | ) |

Definition at line 42 of file rpmhook.c.

Referenced by rpmhookCall().

rpmhookArgs rpmhookArgsNew | ( | int | argc | ) |

Definition at line 34 of file rpmhook.c.

References rpmhookArgs_s::argc, rpmhookArgs_s::argv, and xcalloc().

Referenced by rpmhookArgsParse().

static rpmhookArgs rpmhookArgsParse | ( | const char * | argt,
|  | va_list | ap
| ) |  |

static

Definition at line 190 of file rpmhook.c.

References rpmhookArgs_s::argc, rpmhookArgs_s::argt, rpmhookArgs_s::argv, rpmhookArgv::f, rpmhookArgv::i, rpmhookArgv::p, rpmhookArgsNew(), and rpmhookArgv::s.

Referenced by rpmhookCall().

void rpmhookCall | ( | const char * | name,
|  | const char * | argt,
|  |  | ...
| ) |  |

Definition at line 267 of file rpmhook.c.

References rpmhookArgsFree(), rpmhookArgsParse(), and rpmhookTableCallArgs().

void rpmhookCallArgs | ( | const char * | name,
|  | rpmhookArgs | args
| ) |  |

Definition at line 282 of file rpmhook.c.

References rpmhookTableCallArgs().

void rpmhookRegister | ( | const char * | name,
|  | rpmhookFunc | func,
|  | void * | data
| ) |  |

Definition at line 240 of file rpmhook.c.

References RPMHOOK_TABLE_INITSIZE, rpmhookTableAddItem(), and rpmhookTableNew().

static void rpmhookTableAddItem | ( | rpmhookTable * | table,
|  | const char * | name,
|  | rpmhookFunc | func,
|  | void * | data
| ) |  |

static

Definition at line 138 of file rpmhook.c.

References rpmhookBucket_s::item, rpmhookBucket_s::name, rpmhookItem_s::next, rpmhookTableFindBucket(), and xcalloc().

Referenced by rpmhookRegister().

static void rpmhookTableCallArgs | ( | rpmhookTable * | table,
|  | const char * | name,
|  | rpmhookArgs | args
| ) |  |

static

Definition at line 224 of file rpmhook.c.

References rpmhookItem_s::data, rpmhookItem_s::func, rpmhookItem_s::next, and rpmhookTableFindBucket().

Referenced by rpmhookCall(), and rpmhookCallArgs().

static void rpmhookTableDelItem | ( | rpmhookTable * | table,
|  | const char * | name,
|  | rpmhookFunc | func,
|  | void * | data,
|  | int | matchfunc,
|  | int | matchdata
| ) |  |

static

Definition at line 157 of file rpmhook.c.

References rpmhookItem_s::data, rpmhookItem_s::func, rpmhookBucket_s::item, rpmhookBucket_s::name, rpmhookItem_s::next, and rpmhookTableFindBucket().

Referenced by rpmhookUnregister(), rpmhookUnregisterAll(), and rpmhookUnregisterAny().

static int rpmhookTableFindBucket | ( | rpmhookTable * | table,
|  | const char * | name
| ) |  |

static

Definition at line 84 of file rpmhook.c.

References rpmhookBucket_s::hash, rpmhookBucket_s::name, and rpmhookTableRehash().

Referenced by rpmhookTableAddItem(), rpmhookTableCallArgs(), rpmhookTableDelItem(), and rpmhookTableRehash().

static rpmhookTable rpmhookTableNew | ( | int | size | ) |

static

Definition at line 50 of file rpmhook.c.

References rpmhookTable_s::bucket, rpmhookTable_s::size, and xcalloc().

Referenced by rpmhookRegister(), and rpmhookTableRehash().

static void rpmhookTableRehash | ( | rpmhookTable * | table | ) |

static

Definition at line 118 of file rpmhook.c.

References rpmhookTable_s::bucket, rpmhookBucket_s::item, rpmhookBucket_s::name, rpmhookTableFindBucket(), rpmhookTableNew(), and rpmhookTable_s::used.

Referenced by rpmhookTableFindBucket().

void rpmhookUnregister | ( | const char * | name,
|  | rpmhookFunc | func,
|  | void * | data
| ) |  |

Definition at line 249 of file rpmhook.c.

References rpmhookTableDelItem().

void rpmhookUnregisterAll | ( | const char * | name | ) |

Definition at line 261 of file rpmhook.c.

References rpmhookTableDelItem().

void rpmhookUnregisterAny | ( | const char * | name,
|  | rpmhookFunc | func
| ) |  |

Definition at line 255 of file rpmhook.c.

References rpmhookTableDelItem().

## Variable Documentation

rpmhookTable globalTable = NULL

static

Definition at line 238 of file rpmhook.c.