replaced enter_fixnum by enter_integer in really_stat so files may be bigger than 5 GB and it works with the inode numbers in my afs.
This commit is contained in:
		
							parent
							
								
									f021f13b26
								
							
						
					
					
						commit
						cc385802be
					
				|  | @ -31,8 +31,9 @@ | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <utime.h> | #include <utime.h> | ||||||
| //#include <crypt.h>          TODO: adapt configure to figure out if needed
 | #ifdef HAVE_CRYPT_H | ||||||
| 
 | #include <crypt.h>  | ||||||
|  | #endif | ||||||
| #include "cstuff.h" | #include "cstuff.h" | ||||||
| #include "machine/stdio_dep.h" | #include "machine/stdio_dep.h" | ||||||
| 
 | 
 | ||||||
|  | @ -309,18 +310,6 @@ ssize_t write_fdes_substring(s48_value buf, size_t start, size_t end, int fd) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /*
 |  | ||||||
| ** Stat hackery |  | ||||||
| ******************************************************************************* |  | ||||||
| ** DANGER, WILL ROBINSON: It's not necessarily true that all these  |  | ||||||
| ** stat fields will fit into a fixnum. |  | ||||||
| ** In fact, S48's 30 bit fixnums are almost certainly good enough |  | ||||||
| ** for everything but times. 30 signed bits ran out in 1987. |  | ||||||
| ** So the time fields are split, low 24, high everything else. |  | ||||||
| ** I haven't bothered w/anything else, since the only other real limit |  | ||||||
| ** is size -- files can't be bigger than .5Gb.  |  | ||||||
| */ |  | ||||||
| // JMG: removed time_hacks
 |  | ||||||
| 
 | 
 | ||||||
| /* S_ISSOCK(mode) and S_ISLNK(mode) are not POSIX. You lose on a NeXT. Ugh. */ | /* S_ISSOCK(mode) and S_ISLNK(mode) are not POSIX. You lose on a NeXT. Ugh. */ | ||||||
| #ifndef S_ISSOCK | #ifndef S_ISSOCK | ||||||
|  | @ -343,7 +332,7 @@ static int really_stat(int retval, struct stat *s, s48_value vec) | ||||||
| { | { | ||||||
|   int modes, typecode = -1; |   int modes, typecode = -1; | ||||||
|   S48_DECLARE_GC_PROTECT(1); |   S48_DECLARE_GC_PROTECT(1); | ||||||
|    if( 11 != S48_VECTOR_LENGTH(vec) ) return -1; |   if( 11 != S48_VECTOR_LENGTH(vec) ) return -1; | ||||||
|   if( retval < 0 ) return errno; |   if( retval < 0 ) return errno; | ||||||
|   |   | ||||||
|   S48_GC_PROTECT_1(vec); |   S48_GC_PROTECT_1(vec); | ||||||
|  | @ -356,15 +345,15 @@ static int really_stat(int retval, struct stat *s, s48_value vec) | ||||||
|   else if( S_ISREG(modes) )  typecode = 4; |   else if( S_ISREG(modes) )  typecode = 4; | ||||||
|   else if( S_ISSOCK(modes) ) typecode = 5; |   else if( S_ISSOCK(modes) ) typecode = 5; | ||||||
|   else if( S_ISLNK(modes) )  typecode = 6; |   else if( S_ISLNK(modes) )  typecode = 6; | ||||||
|      |    | ||||||
|   S48_VECTOR_SET(vec,0,s48_enter_fixnum(typecode)); |   S48_VECTOR_SET(vec,0,s48_enter_fixnum(typecode)); | ||||||
|   S48_VECTOR_SET(vec,1, s48_enter_fixnum(s->st_dev)); |   S48_VECTOR_SET(vec,1, s48_enter_integer(s->st_dev)); | ||||||
|   S48_VECTOR_SET(vec,2, s48_enter_fixnum(s->st_ino)); |   S48_VECTOR_SET(vec,2, s48_enter_integer(s->st_ino)); | ||||||
|   S48_VECTOR_SET(vec,3, s48_enter_fixnum(s->st_mode)); |   S48_VECTOR_SET(vec,3, s48_enter_integer(s->st_mode)); | ||||||
|   S48_VECTOR_SET(vec,4, s48_enter_fixnum(s->st_nlink)); |   S48_VECTOR_SET(vec,4, s48_enter_integer(s->st_nlink)); | ||||||
|   S48_VECTOR_SET(vec,5, s48_enter_fixnum(s->st_uid)); |   S48_VECTOR_SET(vec,5, s48_enter_integer(s->st_uid)); | ||||||
|   S48_VECTOR_SET(vec,6, s48_enter_fixnum(s->st_gid)); |   S48_VECTOR_SET(vec,6, s48_enter_integer(s->st_gid)); | ||||||
|   S48_VECTOR_SET(vec,7, s48_enter_fixnum(s->st_size)); |   S48_VECTOR_SET(vec,7, s48_enter_integer(s->st_size)); | ||||||
|   S48_VECTOR_SET(vec,8, s48_enter_integer(s->st_atime)); |   S48_VECTOR_SET(vec,8, s48_enter_integer(s->st_atime)); | ||||||
|   S48_VECTOR_SET(vec,9, s48_enter_integer(s->st_mtime)); |   S48_VECTOR_SET(vec,9, s48_enter_integer(s->st_mtime)); | ||||||
|   S48_VECTOR_SET(vec,10, s48_enter_integer(s->st_ctime)); |   S48_VECTOR_SET(vec,10, s48_enter_integer(s->st_ctime)); | ||||||
|  | @ -509,15 +498,19 @@ int envvec_setenv(s48_value scheme_name, s48_value entry){ | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char** scm_envvec(int *len)	/* Returns environ c-vector & its length. */ | //char** scm_envvec(int *len)	/* Returns environ c-vector & its length. */
 | ||||||
| { | //{
 | ||||||
|   char **ptr=environ; | // char **ptr=environ;
 | ||||||
|   while( *ptr ) ptr++; | // while( *ptr ) ptr++;
 | ||||||
|   *len = ptr-environ; | // *len = ptr-environ;
 | ||||||
|  | //  return(environ);
 | ||||||
|  | //}
 | ||||||
| 
 | 
 | ||||||
|   return(environ); | s48_value scm_envvec(){ | ||||||
|  |   return char_pp_2_string_list(environ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |      | ||||||
| /* Load the (Scheme) strings in the (Scheme) vector VEC into environ.
 | /* Load the (Scheme) strings in the (Scheme) vector VEC into environ.
 | ||||||
| ** Somewhat wasteful of memory: we do not free any of the memory | ** Somewhat wasteful of memory: we do not free any of the memory | ||||||
| ** in the old environ -- don't know if it is being shared elsewhere. | ** in the old environ -- don't know if it is being shared elsewhere. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 marting
						marting