summaryrefslogtreecommitdiffstats
path: root/Utilities/cmtar/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmtar/util.c')
-rw-r--r--Utilities/cmtar/util.c186
1 files changed, 0 insertions, 186 deletions
diff --git a/Utilities/cmtar/util.c b/Utilities/cmtar/util.c
deleted file mode 100644
index 0e23a05..0000000
--- a/Utilities/cmtar/util.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-** Copyright 1998-2003 University of Illinois Board of Trustees
-** Copyright 1998-2003 Mark D. Roth
-** All rights reserved.
-**
-** util.c - miscellaneous utility code for libtar
-**
-** Mark D. Roth <roth@uiuc.edu>
-** Campus Information Technologies and Educational Services
-** University of Illinois at Urbana-Champaign
-*/
-
-#include <libtarint/internal.h>
-
-#include <stdio.h>
-#include <libtar/compat.h>
-#include <errno.h>
-
-#ifdef STDC_HEADERS
-# include <string.h>
-#endif
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#include <direct.h>
-#else
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# endif
-#endif
-
-/* hashing function for pathnames */
-int
-path_hashfunc(char *key, int numbuckets)
-{
- char buf[TAR_MAXPATHLEN];
- char *p;
-
- strcpy(buf, key);
- p = basename(buf);
-
- return (((unsigned int)p[0]) % numbuckets);
-}
-
-
-/* matching function for dev_t's */
-int
-dev_match(dev_t *dev1, dev_t *dev2)
-{
- return !memcmp(dev1, dev2, sizeof(dev_t));
-}
-
-
-/* matching function for ino_t's */
-int
-ino_match(ino_t *ino1, ino_t *ino2)
-{
- return !memcmp(ino1, ino2, sizeof(ino_t));
-}
-
-
-/* hashing function for dev_t's */
-int
-dev_hash(dev_t *dev)
-{
- return *dev % 16;
-}
-
-
-/* hashing function for ino_t's */
-int
-ino_hash(ino_t *inode)
-{
- return *inode % 256;
-}
-
-
-/*
-** mkdirhier() - create all directories in a given path
-** returns:
-** 0 success
-** 1 all directories already exist
-** -1 (and sets errno) error
-*/
-int
-mkdirhier(char *path)
-{
- char src[TAR_MAXPATHLEN], dst[TAR_MAXPATHLEN] = "";
- char *dirp, *nextp = src;
- int retval = 1;
-
- if (strlcpy(src, path, sizeof(src)) > sizeof(src))
- {
- errno = ENAMETOOLONG;
- return -1;
- }
-
- if (path[0] == '/')
- strcpy(dst, "/");
-
- while ((dirp = strsep(&nextp, "/")) != NULL)
- {
- if (*dirp == '\0')
- continue;
-
- /*
- * Don't try to build current or parent dir. It doesn't make sense anyhow,
- * but it also returns EINVAL instead of EEXIST on BeOS!
- */
- if ((strcmp(dirp, ".") == 0) || (strcmp(dirp, "..") == 0))
- continue;
-
- if (dst[0] != '\0')
- strcat(dst, "/");
- strcat(dst, dirp);
-
-#if defined(_WIN32)
- /* On some Windows machine, trying to mkdir("C:") would fail miserably */
- if (dst[strlen(dst) - 1] == ':')
- continue;
-#endif
-
- if (
-#if defined(_WIN32) && !defined(__CYGWIN__)
- mkdir(dst) == -1
-#else
- mkdir(dst, 0777) == -1
-#endif
- )
- {
-#ifdef __BORLANDC__
- /* There is a bug in the Borland Run time library which makes MKDIR
- return EACCES when it should return EEXIST
- if it is some other error besides directory exists
- then return false */
- if ( errno == EACCES)
- {
- errno = EEXIST;
- }
-#endif
- if (errno != EEXIST)
- return -1;
- }
- else
- retval = 0;
- }
-
- return retval;
-}
-
-
-/* calculate header checksum */
-int
-th_crc_calc(TAR *t)
-{
- int i, sum = 0;
-
- for (i = 0; i < T_BLOCKSIZE; i++)
- sum += ((unsigned char *)(&(t->th_buf)))[i];
- for (i = 0; i < 8; i++)
- sum += (' ' - (unsigned char)t->th_buf.chksum[i]);
-
- return sum;
-}
-
-
-/* string-octal to integer conversion */
-int
-oct_to_int(char *oct)
-{
- int i;
-
- sscanf(oct, "%o", &i);
-
- return i;
-}
-
-
-/* integer to string-octal conversion, no NULL */
-void
-int_to_oct_nonull(int num, char *oct, size_t octlen)
-{
- snprintf(oct, octlen, "%*lo", (int)(octlen-1), (unsigned long)num);
- oct[octlen - 1] = ' ';
-}
-
-