Imported from ../bash-2.05b.tar.gz.
This commit is contained in:
		
					parent
					
						
							
								f73dda092b
							
						
					
				
			
			
				commit
				
					
						7117c2d221
					
				
			
		
					 362 changed files with 34387 additions and 15063 deletions
				
			
		|  | @ -25,21 +25,52 @@ | |||
| #if !defined (HAVE_RENAME) | ||||
| 
 | ||||
| #include <bashtypes.h> | ||||
| #include <posixstat.h> | ||||
| 
 | ||||
| #if defined (HAVE_UNISTD_H) | ||||
| #  include <unistd.h> | ||||
| #endif | ||||
| #include <errno.h> | ||||
| 
 | ||||
| #include <stdc.h> | ||||
| 
 | ||||
| #ifndef errno | ||||
| extern int errno; | ||||
| #endif | ||||
| 
 | ||||
| int | ||||
| rename (from, to) | ||||
|      const char *from, *to; | ||||
| { | ||||
|   unlink (to); | ||||
|   struct stat fb, tb; | ||||
| 
 | ||||
|   if (stat (from, &fb) < 0) | ||||
|     return -1;   | ||||
| 
 | ||||
|   if (stat (to, &tb) < 0) | ||||
|     { | ||||
|       if (errno != ENOENT) | ||||
| 	return -1; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if (fb.st_dev == tb.st_dev && fb.st_ino == tb.st_ino) | ||||
|         return 0;		/* same file */ | ||||
|       if (unlink (to) < 0 && errno != ENOENT) | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|   if (link (from, to) < 0) | ||||
|     return (-1); | ||||
|   unlink (from); | ||||
| 
 | ||||
|   if (unlink (from) < 0 && errno != ENOENT) | ||||
|     { | ||||
|       int e = errno; | ||||
|       unlink (to); | ||||
|       errno = e; | ||||
|       return (-1); | ||||
|     } | ||||
| 
 | ||||
|   return (0); | ||||
| } | ||||
| #endif /* !HAVE_RENAME */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jari Aalto
				Jari Aalto