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