diff options
Diffstat (limited to 'libibex/index.c')
-rw-r--r-- | libibex/index.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/libibex/index.c b/libibex/index.c deleted file mode 100644 index aef891182e..0000000000 --- a/libibex/index.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright 2000 Helix Code Inc. -*/ -/* index.c: high-level indexing ops */ - -#include <errno.h> -#include <fcntl.h> -#include <string.h> -#include <sys/stat.h> -#include <unistd.h> - -#include "ibex_internal.h" - -/* Index a file, given its name. (Replace any previously indexed contents - * of this file with the new contents.) - */ -int -ibex_index_file(ibex *ib, char *filename) -{ - int fd; - int status; - struct stat st; - - fd = open(filename, O_RDONLY); - if (fd < 0) - return -1; - - if (fstat(fd, &st) == -1) - { - close(fd); - return -1; - } - if (!S_ISREG(st.st_mode)) - { - close(fd); - errno = EINVAL; - return -1; - } - - ibex_unindex(ib, filename); - status = ibex_index_fd(ib, filename, fd, st.st_size); - close(fd); - return status; -} - -/* Given a file descriptor and a name to refer to it by, index LEN - * bytes of data from it. - */ -int -ibex_index_fd(ibex *ib, char *name, int fd, size_t len) -{ - char *buf; - int off = 0, nread, status; - - buf = g_malloc(len); - do - { - nread = read(fd, buf + off, len - off); - if (nread == -1) - { - g_free(buf); - return -1; - } - off += nread; - } - while (off != len); - - status = ibex_index_buffer(ib, name, buf, len, NULL); - g_free(buf); - - return status; -} - -void -ibex_unindex(ibex *ib, char *name) -{ - ibex_file *ibf; - - ibf = g_tree_lookup(ib->files, name); - if (ibf) - { - ibf->index = -1; - g_tree_remove(ib->files, name); - g_ptr_array_add(ib->oldfiles, ibf); - } -} - -void -ibex_rename(ibex *ib, char *oldname, char *newname) -{ - ibex_file *ibf; - - ibf = g_tree_lookup(ib->files, oldname); - if (ibf) - { - g_tree_remove(ib->files, oldname); - g_free(ibf->name); - ibf->name = g_strdup(newname); - g_tree_insert(ib->files, ibf->name, ibf); - } -} |