1/* Work around the bug in some systems whereby rename fails when the source
2   path has a trailing slash.  The rename functions of SunOS 4.1.1_U1 and
3   mips-dec-ultrix4.4 have this bug.
4   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software Foundation,
18   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19
20/* written by Volker Borchert */
21
22#include <config.h>
23#include <stdio.h>
24#if HAVE_STDLIB_H
25# include <stdlib.h>
26#endif
27
28#if HAVE_STRING_H
29# include <string.h>
30#else
31# include <strings.h>
32#endif
33
34#include "dirname.h"
35#include "xalloc.h"
36
37#ifndef HAVE_DECL_FREE
38"this configure-time declaration test was not run"
39#endif
40#if !HAVE_DECL_FREE
41void free ();
42#endif
43
44/* Rename the file SRC_PATH to DST_PATH, removing any trailing
45   slashes from SRC_PATH.  Needed for SunOS 4.1.1_U1.  */
46
47int
48rpl_rename (const char *src_path, const char *dst_path)
49{
50  char *src_temp;
51  int ret_val;
52  size_t s_len = strlen (src_path);
53
54  if (s_len && src_path[s_len - 1] == '/')
55    {
56      src_temp = xstrdup (src_path);
57      strip_trailing_slashes (src_temp);
58    }
59  else
60    src_temp = (char *) src_path;
61
62  ret_val = rename (src_temp, dst_path);
63
64  if (src_temp != src_path)
65    free (src_temp);
66
67  return ret_val;
68}
69