summaryrefslogtreecommitdiffstats
path: root/contrib/diff/lib/dirname.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2007-07-19 06:57:46 +0000
committerdelphij <delphij@FreeBSD.org>2007-07-19 06:57:46 +0000
commit5c37d64eb9f644e21bb827ae0193405732267cdb (patch)
treeea2f720013cfb7b4608331e30d2c5561f90198c5 /contrib/diff/lib/dirname.c
parenta9b127823d6e6c663ac10c1f52bf7636233d8eb0 (diff)
downloadFreeBSD-src-5c37d64eb9f644e21bb827ae0193405732267cdb.zip
FreeBSD-src-5c37d64eb9f644e21bb827ae0193405732267cdb.tar.gz
This commit was generated by cvs2svn to compensate for changes in r171490,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/diff/lib/dirname.c')
-rw-r--r--contrib/diff/lib/dirname.c119
1 files changed, 0 insertions, 119 deletions
diff --git a/contrib/diff/lib/dirname.c b/contrib/diff/lib/dirname.c
deleted file mode 100644
index 815192a..0000000
--- a/contrib/diff/lib/dirname.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* dirname.c -- return all but the last element in a path
- Copyright (C) 1990, 1998, 2000, 2001, 2003 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. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "dirname.h"
-
-#include <string.h>
-#include "xalloc.h"
-
-/* Return the length of `dirname (PATH)', or zero if PATH is
- in the working directory. Works properly even if
- there are trailing slashes (by effectively ignoring them). */
-size_t
-dir_len (char const *path)
-{
- size_t prefix_length = FILESYSTEM_PREFIX_LEN (path);
- size_t length;
-
- /* Strip the basename and any redundant slashes before it. */
- for (length = base_name (path) - path; prefix_length < length; length--)
- if (! ISSLASH (path[length - 1]))
- return length;
-
- /* But don't strip the only slash from "/". */
- return prefix_length + ISSLASH (path[prefix_length]);
-}
-
-/* Return the leading directories part of PATH,
- allocated with xmalloc.
- Works properly even if there are trailing slashes
- (by effectively ignoring them). */
-
-char *
-dir_name (char const *path)
-{
- size_t length = dir_len (path);
- int append_dot = (length == FILESYSTEM_PREFIX_LEN (path));
- char *newpath = xmalloc (length + append_dot + 1);
- memcpy (newpath, path, length);
- if (append_dot)
- newpath[length++] = '.';
- newpath[length] = 0;
- return newpath;
-}
-
-#ifdef TEST_DIRNAME
-/*
-
-Run the test like this (expect no output):
- gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall \
- basename.c dirname.c xmalloc.c error.c
- sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
-
-If it's been built on a DOS or Windows platforms, run another test like
-this (again, expect no output):
- sed -n '/^BEGIN-DOS-DATA$/,/^END-DOS-DATA$/p' dirname.c|grep -v DATA|./a.out
-
-BEGIN-DATA
-foo//// .
-bar/foo//// bar
-foo/ .
-/ /
-. .
-a .
-END-DATA
-
-BEGIN-DOS-DATA
-c:///// c:/
-c:/ c:/
-c:/. c:/
-c:foo c:.
-c:foo/bar c:foo
-END-DOS-DATA
-
-*/
-
-# define MAX_BUFF_LEN 1024
-# include <stdio.h>
-
-char *program_name;
-
-int
-main (int argc, char *argv[])
-{
- char buff[MAX_BUFF_LEN + 1];
-
- program_name = argv[0];
-
- buff[MAX_BUFF_LEN] = 0;
- while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
- {
- char path[MAX_BUFF_LEN];
- char expected_result[MAX_BUFF_LEN];
- char const *result;
- sscanf (buff, "%s %s", path, expected_result);
- result = dir_name (path);
- if (strcmp (result, expected_result))
- printf ("%s: got %s, expected %s\n", path, result, expected_result);
- }
- return 0;
-}
-#endif
OpenPOWER on IntegriCloud