Remove some files we don't need from CVS's sources
authorSimon Schubert <corecode@dragonflybsd.org>
Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)
committerSimon Schubert <corecode@dragonflybsd.org>
Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)
contrib/cvs-1.12.12/lib/chdir-long.c [deleted file]
contrib/cvs-1.12.12/lib/chdir-long.h [deleted file]
contrib/cvs-1.12.12/lib/getcwd.c [deleted file]
contrib/cvs-1.12.12/lib/getcwd.h [deleted file]
contrib/cvs-1.12.12/lib/openat.c [deleted file]
contrib/cvs-1.12.12/lib/openat.h [deleted file]
gnu/usr.bin/cvs/lib/Makefile
gnu/usr.bin/cvs/lib/save-cwd.c.patch [new file with mode: 0644]
gnu/usr.bin/cvs/lib/xgetcwd.c.patch [new file with mode: 0644]

diff --git a/contrib/cvs-1.12.12/lib/chdir-long.c b/contrib/cvs-1.12.12/lib/chdir-long.c
deleted file mode 100644 (file)
index 4702432..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/* provide a chdir function that tries not to fail due to ENAMETOOLONG
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* written by Jim Meyering */
-
-#include <config.h>
-
-#include "chdir-long.h"
-
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdio.h>
-#include <assert.h>
-#include <limits.h>
-
-#include "memrchr.h"
-#include "openat.h"
-
-#ifndef O_DIRECTORY
-# define O_DIRECTORY 0
-#endif
-
-#ifndef PATH_MAX
-# error "compile this file only if your system defines PATH_MAX"
-#endif
-
-struct cd_buf
-{
-  int fd;
-};
-
-static inline void
-cdb_init (struct cd_buf *cdb)
-{
-  cdb->fd = AT_FDCWD;
-}
-
-static inline int
-cdb_fchdir (struct cd_buf const *cdb)
-{
-  return fchdir (cdb->fd);
-}
-
-static inline void
-cdb_free (struct cd_buf const *cdb)
-{
-  if (0 <= cdb->fd)
-    {
-      bool close_fail = close (cdb->fd);
-      assert (! close_fail);
-    }
-}
-
-/* Given a file descriptor of an open directory (or AT_FDCWD), CDB->fd,
-   try to open the CDB->fd-relative directory, DIR.  If the open succeeds,
-   update CDB->fd with the resulting descriptor, close the incoming file
-   descriptor, and return zero.  Upon failure, return -1 and set errno.  */
-static int
-cdb_advance_fd (struct cd_buf *cdb, char const *dir)
-{
-  int new_fd = openat (cdb->fd, dir, O_RDONLY | O_DIRECTORY);
-  if (new_fd < 0)
-    {
-      new_fd = openat (cdb->fd, dir, O_WRONLY | O_DIRECTORY);
-      if (new_fd < 0)
-       return -1;
-    }
-
-  cdb_free (cdb);
-  cdb->fd = new_fd;
-
-  return 0;
-}
-
-/* Return a pointer to the first non-slash in S.  */
-static inline char *
-find_non_slash (char const *s)
-{
-  size_t n_slash = strspn (s, "/");
-  return (char *) s + n_slash;
-}
-
-/* This is a function much like chdir, but without the PATH_MAX limitation
-   on the length of the directory name.  A significant difference is that
-   it must be able to modify (albeit only temporarily) the directory
-   name.  It handles an arbitrarily long directory name by operating
-   on manageable portions of the name.  On systems without the openat
-   syscall, this means changing the working directory to more and more
-   `distant' points along the long directory name and then restoring
-   the working directory.  If any of those attempts to save or restore
-   the working directory fails, this function exits nonzero.
-
-   Note that this function may still fail with errno == ENAMETOOLONG, but
-   only if the specified directory name contains a component that is long
-   enough to provoke such a failure all by itself (e.g. if the component
-   has length PATH_MAX or greater on systems that define PATH_MAX).  */
-
-int
-chdir_long (char *dir)
-{
-  int e = chdir (dir);
-  if (e == 0 || errno != ENAMETOOLONG)
-    return e;
-
-  {
-    size_t len = strlen (dir);
-    char *dir_end = dir + len;
-    struct cd_buf cdb;
-    size_t n_leading_slash;
-
-    cdb_init (&cdb);
-
-    /* If DIR is the empty string, then the chdir above
-       must have failed and set errno to ENOENT.  */
-    assert (0 < len);
-    assert (PATH_MAX <= len);
-
-    /* Count leading slashes.  */
-    n_leading_slash = strspn (dir, "/");
-
-    /* Handle any leading slashes as well as any name that matches
-       the regular expression, m!^//hostname[/]*! .  Handling this
-       prefix separately usually results in a single additional
-       cdb_advance_fd call, but it's worthwhile, since it makes the
-       code in the following loop cleaner.  */
-    if (n_leading_slash == 2)
-      {
-       int err;
-       /* Find next slash.
-          We already know that dir[2] is neither a slash nor '\0'.  */
-       char *slash = memchr (dir + 3, '/', dir_end - (dir + 3));
-       if (slash == NULL)
-         {
-           errno = ENAMETOOLONG;
-           return -1;
-         }
-       *slash = '\0';
-       err = cdb_advance_fd (&cdb, dir);
-       *slash = '/';
-       if (err != 0)
-         goto Fail;
-       dir = find_non_slash (slash + 1);
-      }
-    else if (n_leading_slash)
-      {
-       if (cdb_advance_fd (&cdb, "/") != 0)
-         goto Fail;
-       dir += n_leading_slash;
-      }
-
-    assert (*dir != '/');
-    assert (dir <= dir_end);
-
-    while (PATH_MAX <= dir_end - dir)
-      {
-       int err;
-       /* Find a slash that is PATH_MAX or fewer bytes away from dir.
-          I.e. see if there is a slash that will give us a name of
-          length PATH_MAX-1 or less.  */
-       char *slash = memrchr (dir, '/', PATH_MAX);
-       if (slash == NULL)
-         {
-           errno = ENAMETOOLONG;
-           return -1;
-         }
-
-       *slash = '\0';
-       assert (slash - dir < PATH_MAX);
-       err = cdb_advance_fd (&cdb, dir);
-       *slash = '/';
-       if (err != 0)
-         goto Fail;
-
-       dir = find_non_slash (slash + 1);
-      }
-
-    if (dir < dir_end)
-      {
-       if (cdb_advance_fd (&cdb, dir) != 0)
-         goto Fail;
-      }
-
-    if (cdb_fchdir (&cdb) != 0)
-      goto Fail;
-
-    cdb_free (&cdb);
-    return 0;
-
-   Fail:
-    {
-      int saved_errno = errno;
-      cdb_free (&cdb);
-      errno = saved_errno;
-      return -1;
-    }
-  }
-}
-
-#if TEST_CHDIR
-
-# include <stdio.h>
-# include "closeout.h"
-# include "error.h"
-
-char *program_name;
-
-int
-main (int argc, char *argv[])
-{
-  char *line = NULL;
-  size_t n = 0;
-  int len;
-
-  program_name = argv[0];
-  atexit (close_stdout);
-
-  len = getline (&line, &n, stdin);
-  if (len < 0)
-    {
-      int saved_errno = errno;
-      if (feof (stdin))
-       exit (0);
-
-      error (EXIT_FAILURE, saved_errno,
-            "reading standard input");
-    }
-  else if (len == 0)
-    exit (0);
-
-  if (line[len-1] == '\n')
-    line[len-1] = '\0';
-
-  if (chdir_long (line) != 0)
-    error (EXIT_FAILURE, errno,
-          "chdir_long failed: %s", line);
-
-  if (argc <= 1)
-    {
-      /* Using `pwd' here makes sense only if it is a robust implementation,
-        like the one in coreutils after the 2004-04-19 changes.  */
-      char const *cmd = "pwd";
-      execlp (cmd, (char *) NULL);
-      error (EXIT_FAILURE, errno, "%s", cmd);
-    }
-
-  fclose (stdin);
-  fclose (stderr);
-
-  exit (EXIT_SUCCESS);
-}
-#endif
-
-/*
-Local Variables:
-compile-command: "gcc -DTEST_CHDIR=1 -DHAVE_CONFIG_H -I.. -g -O -W -Wall chdir-long.c libfetish.a"
-End:
-*/
diff --git a/contrib/cvs-1.12.12/lib/chdir-long.h b/contrib/cvs-1.12.12/lib/chdir-long.h
deleted file mode 100644 (file)
index 56c7bfd..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* provide a chdir function that tries not to fail due to ENAMETOOLONG
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* Written by Jim Meyering.  */
-
-#include <unistd.h>
-#include <limits.h>
-
-#ifndef PATH_MAX
-# ifdef        MAXPATHLEN
-#  define PATH_MAX MAXPATHLEN
-# endif
-#endif
-
-/* On systems without PATH_MAX, presume that chdir accepts
-   arbitrarily long directory names.  */
-#ifndef PATH_MAX
-# define chdir_long(Dir) chdir (Dir)
-#else
-int chdir_long (char *dir);
-#endif
diff --git a/contrib/cvs-1.12.12/lib/getcwd.c b/contrib/cvs-1.12.12/lib/getcwd.c
deleted file mode 100644 (file)
index 9990b50..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98,99,2004 Free Software Foundation,
-   Inc.
-   This file is part of the GNU C Library.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#if !_LIBC
-# include "getcwd.h"
-#endif
-
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdbool.h>
-#include <stddef.h>
-
-#if HAVE_FCNTL_H
-# include <fcntl.h> /* For AT_FDCWD on Solaris 9.  */
-#endif
-
-#ifndef __set_errno
-# define __set_errno(val) (errno = (val))
-#endif
-
-#if HAVE_DIRENT_H || _LIBC
-# include <dirent.h>
-# ifndef _D_EXACT_NAMLEN
-#  define _D_EXACT_NAMLEN(d) strlen ((d)->d_name)
-# endif
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
-#ifndef _D_EXACT_NAMLEN
-# define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
-#endif
-#ifndef _D_ALLOC_NAMLEN
-# define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
-#endif
-
-#if HAVE_UNISTD_H || _LIBC
-# include <unistd.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#if _LIBC
-# ifndef mempcpy
-#  define mempcpy __mempcpy
-# endif
-#else
-# include "mempcpy.h"
-#endif
-
-#include <limits.h>
-
-#ifdef ENAMETOOLONG
-# define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
-#else
-# define is_ENAMETOOLONG(x) 0
-#endif
-
-#ifndef MAX
-# define MAX(a, b) ((a) < (b) ? (b) : (a))
-#endif
-#ifndef MIN
-# define MIN(a, b) ((a) < (b) ? (a) : (b))
-#endif
-
-#ifndef PATH_MAX
-# ifdef        MAXPATHLEN
-#  define PATH_MAX MAXPATHLEN
-# else
-#  define PATH_MAX 1024
-# endif
-#endif
-
-#if D_INO_IN_DIRENT
-# define MATCHING_INO(dp, ino) ((dp)->d_ino == (ino))
-#else
-# define MATCHING_INO(dp, ino) true
-#endif
-
-#if !_LIBC
-# define __getcwd getcwd
-# define __lstat lstat
-# define __closedir closedir
-# define __opendir opendir
-# define __readdir readdir
-#endif
-\f
-/* Get the pathname of the current working directory, and put it in SIZE
-   bytes of BUF.  Returns NULL if the directory couldn't be determined or
-   SIZE was too small.  If successful, returns BUF.  In GNU, if BUF is
-   NULL, an array is allocated with `malloc'; the array is SIZE bytes long,
-   unless SIZE == 0, in which case it is as big as necessary.  */
-
-char *
-__getcwd (char *buf, size_t size)
-{
-  /* Lengths of big file name components and entire file names, and a
-     deep level of file name nesting.  These numbers are not upper
-     bounds; they are merely large values suitable for initial
-     allocations, designed to be large enough for most real-world
-     uses.  */
-  enum
-    {
-      BIG_FILE_NAME_COMPONENT_LENGTH = 255,
-      BIG_FILE_NAME_LENGTH = MIN (4095, PATH_MAX - 1),
-      DEEP_NESTING = 100
-    };
-
-#ifdef AT_FDCWD
-  int fd = AT_FDCWD;
-  bool fd_needs_closing = false;
-#else
-  char dots[DEEP_NESTING * sizeof ".." + BIG_FILE_NAME_COMPONENT_LENGTH + 1];
-  char *dotlist = dots;
-  size_t dotsize = sizeof dots;
-  size_t dotlen = 0;
-#endif
-  DIR *dirstream = NULL;
-  dev_t rootdev, thisdev;
-  ino_t rootino, thisino;
-  char *path;
-  register char *pathp;
-  struct stat st;
-  size_t allocated = size;
-  size_t used;
-
-#if HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD
-  /* The system getcwd works, except it sometimes fails when it
-     shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.  If
-     AT_FDCWD is not defined, the algorithm below is O(N**2) and this
-     is much slower than the system getcwd (at least on GNU/Linux).
-     So trust the system getcwd's results unless they look
-     suspicious.  */
-# undef getcwd
-  path = getcwd (buf, size);
-  if (path || (errno != ERANGE && !is_ENAMETOOLONG (errno) && errno != ENOENT))
-    return path;
-#endif
-
-  if (size == 0)
-    {
-      if (buf != NULL)
-       {
-         __set_errno (EINVAL);
-         return NULL;
-       }
-
-      allocated = BIG_FILE_NAME_LENGTH + 1;
-    }
-
-  if (buf == NULL)
-    {
-      path = malloc (allocated);
-      if (path == NULL)
-       return NULL;
-    }
-  else
-    path = buf;
-
-  pathp = path + allocated;
-  *--pathp = '\0';
-
-  if (__lstat (".", &st) < 0)
-    goto lose;
-  thisdev = st.st_dev;
-  thisino = st.st_ino;
-
-  if (__lstat ("/", &st) < 0)
-    goto lose;
-  rootdev = st.st_dev;
-  rootino = st.st_ino;
-
-  while (!(thisdev == rootdev && thisino == rootino))
-    {
-      struct dirent *d;
-      dev_t dotdev;
-      ino_t dotino;
-      bool mount_point;
-      int parent_status;
-
-      /* Look at the parent directory.  */
-#ifdef AT_FDCWD
-      fd = openat (fd, "..", O_RDONLY);
-      if (fd < 0)
-       goto lose;
-      fd_needs_closing = true;
-      parent_status = fstat (fd, &st);
-#else
-      dotlist[dotlen++] = '.';
-      dotlist[dotlen++] = '.';
-      dotlist[dotlen] = '\0';
-      parent_status = __lstat (dotlist, &st);
-#endif
-      if (parent_status != 0)
-       goto lose;
-
-      if (dirstream && __closedir (dirstream) != 0)
-       {
-         dirstream = NULL;
-         goto lose;
-       }
-
-      /* Figure out if this directory is a mount point.  */
-      dotdev = st.st_dev;
-      dotino = st.st_ino;
-      mount_point = dotdev != thisdev;
-
-      /* Search for the last directory.  */
-#ifdef AT_FDCWD
-      dirstream = fdopendir (fd);
-      if (dirstream == NULL)
-       goto lose;
-      fd_needs_closing = false;
-#else
-      dirstream = __opendir (dotlist);
-      if (dirstream == NULL)
-       goto lose;
-      dotlist[dotlen++] = '/';
-#endif
-      /* Clear errno to distinguish EOF from error if readdir returns
-        NULL.  */
-      __set_errno (0);
-      while ((d = __readdir (dirstream)) != NULL)
-       {
-         if (d->d_name[0] == '.' &&
-             (d->d_name[1] == '\0' ||
-              (d->d_name[1] == '.' && d->d_name[2] == '\0')))
-           continue;
-         if (MATCHING_INO (d, thisino) || mount_point)
-           {
-             int entry_status;
-#ifdef AT_FDCWD
-             entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
-#else
-             /* Compute size needed for this file name, or for the file
-                name ".." in the same directory, whichever is larger.
-                Room for ".." might be needed the next time through
-                the outer loop.  */
-             size_t name_alloc = _D_ALLOC_NAMLEN (d);
-             size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
-
-             if (filesize < dotlen)
-               goto memory_exhausted;
-
-             if (dotsize < filesize)
-               {
-                 /* My, what a deep directory tree you have, Grandma.  */
-                 size_t newsize = MAX (filesize, dotsize * 2);
-                 size_t i;
-                 if (newsize < dotsize)
-                   goto memory_exhausted;
-                 if (dotlist != dots)
-                   free (dotlist);
-                 dotlist = malloc (newsize);
-                 if (dotlist == NULL)
-                   goto lose;
-                 dotsize = newsize;
-
-                 i = 0;
-                 do
-                   {
-                     dotlist[i++] = '.';
-                     dotlist[i++] = '.';
-                     dotlist[i++] = '/';
-                   }
-                 while (i < dotlen);
-               }
-
-             strcpy (dotlist + dotlen, d->d_name);
-             entry_status = __lstat (dotlist, &st);
-#endif
-             /* We don't fail here if we cannot stat() a directory entry.
-                This can happen when (network) file systems fail.  If this
-                entry is in fact the one we are looking for we will find
-                out soon as we reach the end of the directory without
-                having found anything.  */
-             if (entry_status == 0 && S_ISDIR (st.st_mode)
-                 && st.st_dev == thisdev && st.st_ino == thisino)
-               break;
-           }
-       }
-      if (d == NULL)
-       {
-         if (errno == 0)
-           /* EOF on dirstream, which means that the current directory
-              has been removed.  */
-           __set_errno (ENOENT);
-         goto lose;
-       }
-      else
-       {
-         size_t pathroom = pathp - path;
-         size_t namlen = _D_EXACT_NAMLEN (d);
-
-         if (pathroom <= namlen)
-           {
-             if (size != 0)
-               {
-                 __set_errno (ERANGE);
-                 goto lose;
-               }
-             else
-               {
-                 char *tmp;
-                 size_t oldsize = allocated;
-
-                 allocated += MAX (allocated, namlen);
-                 if (allocated < oldsize
-                     || ! (tmp = realloc (path, allocated)))
-                   goto memory_exhausted;
-
-                 /* Move current contents up to the end of the buffer.
-                    This is guaranteed to be non-overlapping.  */
-                 pathp = memcpy (tmp + allocated - (oldsize - pathroom),
-                                 tmp + pathroom,
-                                 oldsize - pathroom);
-                 path = tmp;
-               }
-           }
-         pathp -= namlen;
-         memcpy (pathp, d->d_name, namlen);
-         *--pathp = '/';
-       }
-
-      thisdev = dotdev;
-      thisino = dotino;
-    }
-
-  if (dirstream && __closedir (dirstream) != 0)
-    {
-      dirstream = NULL;
-      goto lose;
-    }
-
-  if (pathp == &path[allocated - 1])
-    *--pathp = '/';
-
-#ifndef AT_FDCWD
-  if (dotlist != dots)
-    free (dotlist);
-#endif
-
-  used = path + allocated - pathp;
-  memmove (path, pathp, used);
-
-  if (buf == NULL && size == 0)
-    /* Ensure that the buffer is only as large as necessary.  */
-    buf = realloc (path, used);
-
-  if (buf == NULL)
-    /* Either buf was NULL all along, or `realloc' failed but
-       we still have the original string.  */
-    buf = path;
-
-  return buf;
-
- memory_exhausted:
-  __set_errno (ENOMEM);
- lose:
-  {
-    int save = errno;
-    if (dirstream)
-      __closedir (dirstream);
-#ifdef AT_FDCWD
-    if (fd_needs_closing)
-      close (fd);
-#else
-    if (dotlist != dots)
-      free (dotlist);
-#endif
-    if (buf == NULL)
-      free (path);
-    __set_errno (save);
-  }
-  return NULL;
-}
-
-#ifdef weak_alias
-weak_alias (__getcwd, getcwd)
-#endif
diff --git a/contrib/cvs-1.12.12/lib/getcwd.h b/contrib/cvs-1.12.12/lib/getcwd.h
deleted file mode 100644 (file)
index 9487ab9..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Get the working directory, compatibly with the GNU C Library.
-
-   Copyright (C) 2004 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* Written by Paul Eggert.  */
-
-/* Include the headers that might declare getcwd so that they will not
-   cause confusion if included after this file.  */
-
-#include <stdlib.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-/* If necessary, systematically rename identifiers so that they do not
-   collide with the system function.  Renaming avoids problems with
-   some compilers and linkers.  */
-
-#ifdef __GETCWD_PREFIX
-# undef getcwd
-# define __GETCWD_CONCAT(x, y) x ## y
-# define __GETCWD_XCONCAT(x, y) __GETCWD_CONCAT (x, y)
-# define __GETCWD_ID(y) __GETCWD_XCONCAT (__GETCWD_PREFIX, y)
-# define getcwd __GETCWD_ID (getcwd)
-char *getcwd (char *, size_t);
-#endif
diff --git a/contrib/cvs-1.12.12/lib/openat.c b/contrib/cvs-1.12.12/lib/openat.c
deleted file mode 100644 (file)
index 14d138c..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* provide a replacement openat function
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* written by Jim Meyering */
-
-#include <config.h>
-
-#include "openat.h"
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-
-#include "error.h"
-#include "exitfail.h"
-#include "save-cwd.h"
-
-#include "gettext.h"
-#define _(msgid) gettext (msgid)
-
-/* Replacement for Solaris' openat function.
-   <http://www.google.com/search?q=openat+site:docs.sun.com>
-   Simulate it by doing save_cwd/fchdir/open/restore_cwd.
-   If either the save_cwd or the restore_cwd fails (relatively unlikely,
-   and usually indicative of a problem that deserves close attention),
-   then give a diagnostic and exit nonzero.
-   Otherwise, upon failure, set errno and return -1, as openat does.
-   Upon successful completion, return a file descriptor.  */
-int
-rpl_openat (int fd, char const *filename, int flags, ...)
-{
-  struct saved_cwd saved_cwd;
-  int saved_errno;
-  int new_fd;
-  mode_t mode = 0;
-
-  if (flags & O_CREAT)
-    {
-      va_list arg;
-      va_start (arg, flags);
-
-      /* Assume that mode_t is passed compatibly with mode_t's type
-        after argument promotion.  */
-      mode = va_arg (arg, mode_t);
-
-      va_end (arg);
-    }
-
-  if (fd == AT_FDCWD || *filename == '/')
-    return open (filename, flags, mode);
-
-  if (save_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("openat: unable to record current working directory"));
-
-  if (fchdir (fd) != 0)
-    {
-      saved_errno = errno;
-      free_cwd (&saved_cwd);
-      errno = saved_errno;
-      return -1;
-    }
-
-  new_fd = open (filename, flags, mode);
-  saved_errno = errno;
-
-  if (restore_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("openat: unable to restore working directory"));
-
-  free_cwd (&saved_cwd);
-
-  errno = saved_errno;
-  return new_fd;
-}
-
-/* Replacement for Solaris' function by the same name.
-   <http://www.google.com/search?q=fdopendir+site:docs.sun.com>
-   Simulate it by doing save_cwd/fchdir/opendir(".")/restore_cwd.
-   If either the save_cwd or the restore_cwd fails (relatively unlikely,
-   and usually indicative of a problem that deserves close attention),
-   then give a diagnostic and exit nonzero.
-   Otherwise, this function works just like Solaris' fdopendir.  */
-DIR *
-fdopendir (int fd)
-{
-  struct saved_cwd saved_cwd;
-  int saved_errno;
-  DIR *dir;
-
-  if (fd == AT_FDCWD)
-    return opendir (".");
-
-  if (save_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("fdopendir: unable to record current working directory"));
-
-  if (fchdir (fd) != 0)
-    {
-      saved_errno = errno;
-      free_cwd (&saved_cwd);
-      errno = saved_errno;
-      return NULL;
-    }
-
-  dir = opendir (".");
-  saved_errno = errno;
-
-  if (restore_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("fdopendir: unable to restore working directory"));
-
-  free_cwd (&saved_cwd);
-
-  errno = saved_errno;
-  return dir;
-}
-
-/* Replacement for Solaris' function by the same name.
-   <http://www.google.com/search?q=fstatat+site:docs.sun.com>
-   Simulate it by doing save_cwd/fchdir/(stat|lstat)/restore_cwd.
-   If either the save_cwd or the restore_cwd fails (relatively unlikely,
-   and usually indicative of a problem that deserves close attention),
-   then give a diagnostic and exit nonzero.
-   Otherwise, this function works just like Solaris' fstatat.  */
-int
-fstatat (int fd, char const *filename, struct stat *st, int flag)
-{
-  struct saved_cwd saved_cwd;
-  int saved_errno;
-  int err;
-
-  if (fd == AT_FDCWD)
-    return (flag == AT_SYMLINK_NOFOLLOW
-           ? lstat (filename, st)
-           : stat (filename, st));
-
-  if (save_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("fstatat: unable to record current working directory"));
-
-  if (fchdir (fd) != 0)
-    {
-      saved_errno = errno;
-      free_cwd (&saved_cwd);
-      errno = saved_errno;
-      return -1;
-    }
-
-  err = (flag == AT_SYMLINK_NOFOLLOW
-        ? lstat (filename, st)
-        : stat (filename, st));
-  saved_errno = errno;
-
-  if (restore_cwd (&saved_cwd) != 0)
-    error (exit_failure, errno,
-          _("fstatat: unable to restore working directory"));
-
-  free_cwd (&saved_cwd);
-
-  errno = saved_errno;
-  return err;
-}
diff --git a/contrib/cvs-1.12.12/lib/openat.h b/contrib/cvs-1.12.12/lib/openat.h
deleted file mode 100644 (file)
index 2c93663..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* provide a replacement openat function
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* written by Jim Meyering */
-
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <unistd.h>
-
-#ifndef AT_FDCWD
-# define AT_FDCWD (-3041965) /* same value as Solaris 9 */
-# define AT_SYMLINK_NOFOLLOW 4096 /* same value as Solaris 9 */
-
-# ifdef __OPENAT_PREFIX
-#  undef openat
-#  define __OPENAT_CONCAT(x, y) x ## y
-#  define __OPENAT_XCONCAT(x, y) __OPENAT_CONCAT (x, y)
-#  define __OPENAT_ID(y) __OPENAT_XCONCAT (__OPENAT_PREFIX, y)
-#  define openat __OPENAT_ID (openat)
-int openat (int fd, char const *filename, int flags, /* mode_t mode */ ...);
-#  define fdopendir __OPENAT_ID (fdopendir)
-DIR *fdopendir (int fd);
-#  define fstatat __OPENAT_ID (fstatat)
-int fstatat (int fd, char const *filename, struct stat *st, int flag);
-# endif
-
-#endif
index 74a7918..8b38f1f 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/gnu/usr.bin/cvs/lib/Makefile,v 1.19.2.4 2003/01/21 23:06:52 peter Exp $
-# $DragonFly: src/gnu/usr.bin/cvs/lib/Makefile,v 1.12 2005/07/23 20:23:06 joerg Exp $
+# $DragonFly: src/gnu/usr.bin/cvs/lib/Makefile,v 1.13 2005/12/03 12:11:44 corecode Exp $
 
 .include "${.CURDIR}/../Makefile.inc"
 
@@ -30,8 +30,9 @@ SRCS= config.h \
        xgetcwd.c xgethostname.c xreadlink.c yesno.c \
        pagealign_alloc.c getline.c getndelim2.c mktime.c \
        getpass.c rpmatch.c vasnprintf.c printf-args.c printf-parse.c \
-       asnprintf.c getcwd.c closeout.c chdir-long.c quotearg.c \
-       memrchr.c openat.c
+       asnprintf.c closeout.c quotearg.c memrchr.c
+
+SRCS+= save-cwd.c.patch xgetcwd.c.patch
 
 config.h: config.h.proto
        sed -e "s,@VERSION@,${VERSION}-DragonFly,g" \
diff --git a/gnu/usr.bin/cvs/lib/save-cwd.c.patch b/gnu/usr.bin/cvs/lib/save-cwd.c.patch
new file mode 100644 (file)
index 0000000..0aa7d33
--- /dev/null
@@ -0,0 +1,25 @@
+$DragonFly: src/gnu/usr.bin/cvs/lib/Attic/save-cwd.c.patch,v 1.1 2005/12/03 12:11:44 corecode Exp $
+Index: save-cwd.c
+===================================================================
+RCS file: /space/cvs/dragonfly/src/contrib/cvs-1.12.12/lib/save-cwd.c,v
+retrieving revision 1.1
+diff -u -r1.1 save-cwd.c
+--- save-cwd.c 21 Apr 2005 06:33:15 -0000      1.1
++++ save-cwd.c 16 Oct 2005 10:16:48 -0000
+@@ -41,7 +41,6 @@
+ #include <errno.h>
+-#include "chdir-long.h"
+ #include "xgetcwd.h"
+ /* On systems without the fchdir function (WOE), pretend that open
+@@ -105,7 +104,7 @@
+   if (0 <= cwd->desc)
+     return fchdir (cwd->desc);
+   else
+-    return chdir_long (cwd->name);
++    return -1;
+ }
+ void
diff --git a/gnu/usr.bin/cvs/lib/xgetcwd.c.patch b/gnu/usr.bin/cvs/lib/xgetcwd.c.patch
new file mode 100644 (file)
index 0000000..66c2bf2
--- /dev/null
@@ -0,0 +1,18 @@
+$DragonFly: src/gnu/usr.bin/cvs/lib/Attic/xgetcwd.c.patch,v 1.1 2005/12/03 12:11:44 corecode Exp $
+Index: xgetcwd.c
+===================================================================
+RCS file: /space/cvs/dragonfly/src/contrib/cvs-1.12.12/lib/xgetcwd.c,v
+retrieving revision 1.1
+diff -u -r1.1 xgetcwd.c
+--- xgetcwd.c  21 Apr 2005 06:33:15 -0000      1.1
++++ xgetcwd.c  16 Oct 2005 10:18:28 -0000
+@@ -25,8 +25,8 @@
+ #include "xgetcwd.h"
+ #include <errno.h>
++#include <unistd.h>
+-#include "getcwd.h"
+ #include "xalloc.h"
+ /* Return the current directory, newly allocated.