summaryrefslogtreecommitdiff
path: root/src/filesdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/filesdb.c')
-rw-r--r--src/filesdb.c209
1 files changed, 0 insertions, 209 deletions
diff --git a/src/filesdb.c b/src/filesdb.c
index 6e99c36f3..87bca58e3 100644
--- a/src/filesdb.c
+++ b/src/filesdb.c
@@ -54,47 +54,9 @@
#include "infodb.h"
#include "main.h"
-/*** filepackages support for tracking packages owning a file. ***/
-
-struct filepackages_iterator {
- struct pkg_list *pkg_node;
-};
-
-struct filepackages_iterator *
-filepackages_iter_new(struct filenamenode *fnn)
-{
- struct filepackages_iterator *iter;
-
- iter = m_malloc(sizeof(*iter));
- iter->pkg_node = fnn->packages;
-
- return iter;
-}
-
-struct pkginfo *
-filepackages_iter_next(struct filepackages_iterator *iter)
-{
- struct pkg_list *pkg_node;
-
- if (iter->pkg_node == NULL)
- return NULL;
-
- pkg_node = iter->pkg_node;
- iter->pkg_node = pkg_node->next;
-
- return pkg_node->pkg;
-}
-
-void
-filepackages_iter_free(struct filepackages_iterator *iter)
-{
- free(iter);
-}
-
/*** Generic data structures and routines. ***/
static bool allpackagesdone = false;
-static int nfiles= 0;
void
ensure_package_clientdata(struct pkginfo *pkg)
@@ -473,174 +435,3 @@ write_filelist_except(struct pkginfo *pkg, struct pkgbin *pkgbin,
note_must_reread_files_inpackage(pkg);
}
-
-/*
- * Initializes an iterator that appears to go through the file
- * list ‘files’ in reverse order, returning the namenode from
- * each. What actually happens is that we walk the list here,
- * building up a reverse list, and then peel it apart one
- * entry at a time.
- */
-void
-reversefilelist_init(struct reversefilelistiter *iter, struct fileinlist *files)
-{
- struct fileinlist *newent;
-
- iter->todo = NULL;
- while (files) {
- newent= m_malloc(sizeof(struct fileinlist));
- newent->namenode= files->namenode;
- newent->next = iter->todo;
- iter->todo = newent;
- files= files->next;
- }
-}
-
-struct filenamenode *
-reversefilelist_next(struct reversefilelistiter *iter)
-{
- struct filenamenode *ret;
- struct fileinlist *todo;
-
- todo = iter->todo;
- if (!todo)
- return NULL;
- ret= todo->namenode;
- iter->todo = todo->next;
- free(todo);
- return ret;
-}
-
-/*
- * Clients must call this function to clean up the reversefilelistiter
- * if they wish to break out of the iteration before it is all done.
- * Calling this function is not necessary if reversefilelist_next has
- * been called until it returned 0.
- */
-void
-reversefilelist_abort(struct reversefilelistiter *iter)
-{
- while (reversefilelist_next(iter));
-}
-
-struct fileiterator {
- struct filenamenode *namenode;
- int nbinn;
-};
-
-/* This must always be a prime for optimal performance.
- * This is the closest one to 2^18 (262144). */
-#define BINS 262139
-
-static struct filenamenode *bins[BINS];
-
-struct fileiterator *
-files_db_iter_new(void)
-{
- struct fileiterator *iter;
-
- iter = m_malloc(sizeof(struct fileiterator));
- iter->namenode = NULL;
- iter->nbinn = 0;
-
- return iter;
-}
-
-struct filenamenode *
-files_db_iter_next(struct fileiterator *iter)
-{
- struct filenamenode *r= NULL;
-
- while (!iter->namenode) {
- if (iter->nbinn >= BINS)
- return NULL;
- iter->namenode = bins[iter->nbinn++];
- }
- r = iter->namenode;
- iter->namenode = r->next;
-
- return r;
-}
-
-void
-files_db_iter_free(struct fileiterator *iter)
-{
- free(iter);
-}
-
-void filesdbinit(void) {
- struct filenamenode *fnn;
- int i;
-
- for (i=0; i<BINS; i++)
- for (fnn= bins[i]; fnn; fnn= fnn->next) {
- fnn->flags= 0;
- fnn->oldhash = NULL;
- fnn->newhash = EMPTYHASHFLAG;
- fnn->filestat = NULL;
- }
-}
-
-void
-files_db_reset(void)
-{
- int i;
-
- for (i = 0; i < BINS; i++)
- bins[i] = NULL;
-}
-
-int
-fsys_hash_entries(void)
-{
- return nfiles;
-}
-
-struct filenamenode *findnamenode(const char *name, enum fnnflags flags) {
- struct filenamenode **pointerp, *newnode;
- const char *orig_name = name;
-
- /* We skip initial slashes and ‘./’ pairs, and add our own single
- * leading slash. */
- name = path_skip_slash_dotslash(name);
-
- pointerp = bins + (str_fnv_hash(name) % (BINS));
- while (*pointerp) {
- /* XXX: This should not be needed, but it has been a constant source
- * of assertions over the years. Hopefully with the internerr() we will
- * get better diagnostics. */
- if ((*pointerp)->name[0] != '/')
- internerr("filename node '%s' does not start with '/'",
- (*pointerp)->name);
-
- if (strcmp((*pointerp)->name + 1, name) == 0)
- break;
- pointerp= &(*pointerp)->next;
- }
- if (*pointerp) return *pointerp;
-
- if (flags & fnn_nonew)
- return NULL;
-
- newnode= nfmalloc(sizeof(struct filenamenode));
- newnode->packages = NULL;
- if((flags & fnn_nocopy) && name > orig_name && name[-1] == '/')
- newnode->name = name - 1;
- else {
- char *newname= nfmalloc(strlen(name)+2);
- newname[0]= '/'; strcpy(newname+1,name);
- newnode->name= newname;
- }
- newnode->flags= 0;
- newnode->next = NULL;
- newnode->divert = NULL;
- newnode->statoverride = NULL;
- newnode->oldhash = NULL;
- newnode->newhash = EMPTYHASHFLAG;
- newnode->filestat = NULL;
- newnode->trig_interested = NULL;
- *pointerp= newnode;
- nfiles++;
-
- return newnode;
-}