[squeak-dev] File creation time wrong on Mac

stephane ducasse stephane.ducasse at free.fr
Tue Jul 29 16:08:00 UTC 2008


Hi john

This is strange because I have some old pictures and I want to rename  
them based on their creation
time and not modification time. So I was really paying attention  
because I really do not want to
lose such information before my renaming (you know young kids....).
I will check with the latest mac VM.

John do you know if we can set also such information. So far I only  
find read only version
and I have pictures with no creation time but I know it and I would  
like to treat all my photos
to be independent of iPhoto metadata crap.

On Jul 28, 2008, at 11:31 PM, John M McIntosh wrote:

> Check the call where the primitive primitiveDirectoryLookup   
> (FileDirectory default directoryContentsFor: )
> is called that invokes the platform specific code in  
> sqMacUnixFileInterface.c which has the code below
>
> sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt  
> index,
> /* outputs: */  char *name, sqInt *nameLength, sqInt *creationDate,  
> sqInt *modificationDate,
> 		sqInt *isDirectory, squeakFileOffsetType *sizeIfFile)
>
> ...
> /* last change time */
> *creationDate= convertToSqueakTime(statBuf.st_ctime);
> /* modification time */
> *modificationDate= convertToSqueakTime(statBuf.st_mtime);
> ...
>
> where
> /*
> * [XSI] This structure is used as the second parameter to the fstat(),
> * lstat(), and stat() functions.
> */
> struct stat {
> 	dev_t	 	st_dev;		/* [XSI] ID of device containing file */
> 	ino_t	  	st_ino;		/* [XSI] File serial number */
> 	mode_t	 	st_mode;	/* [XSI] Mode of file (see below) */
> 	nlink_t		st_nlink;	/* [XSI] Number of hard links */
> 	uid_t		st_uid;		/* [XSI] User ID of the file */
> 	gid_t		st_gid;		/* [XSI] Group ID of the file */
> 	dev_t		st_rdev;	/* [XSI] Device ID */
> #ifndef _POSIX_C_SOURCE
> 	struct	timespec st_atimespec;	/* time of last access */
> 	struct	timespec st_mtimespec;	/* time of last data modification */
> 	struct	timespec st_ctimespec;	/* time of last status change */
> #else
> 	time_t		st_atime;	/* [XSI] Time of last access */
> 	long		st_atimensec;	/* nsec of last access */
> 	time_t		st_mtime;	/* [XSI] Last data modification time */
> 	long		st_mtimensec;	/* last data modification nsec */
> 	time_t		st_ctime;	/* [XSI] Time of last status change */
> 	long		st_ctimensec;	/* nsec of last status change */
> #endif
> 	off_t		st_size;	/* [XSI] file size, in bytes */
> 	blkcnt_t	st_blocks;	/* [XSI] blocks allocated for file */
> 	blksize_t	st_blksize;	/* [XSI] optimal blocksize for I/O */
> 	__uint32_t	st_flags;	/* user defined flags for file */
> 	__uint32_t	st_gen;		/* file generation number */
> 	__int32_t	st_lspare;	/* RESERVED: DO NOT USE! */
> 	__int64_t	st_qspare[2];	/* RESERVED: DO NOT USE! */
> };
>
> The iPhone and new OSX version has
>
> 	*creationDate = convertToSqueakTime([fileAttributes objectForKey:  
> NSFileCreationDate ]);
> 	*modificationDate = convertToSqueakTime([fileAttributes  
> objectForKey: NSFileModificationDate]);
>
>
> These seem correct but I don't have a test case handy.
>
>
> On Jul 28, 2008, at 3:32 PM, stephane ducasse wrote:
>
>> Hi all
>>
>> Is it a well-known bug that the creation time is incorrectly  
>> reported on Mac?
>>
>>
>> Time dateAndTimeFromSeconds: 	
>> (FileDirectory default
>> 	directoryEntryFor: 'ESUG2008.txt') creationTime
>>
>> It seems to be confused and return the last opened or last modified  
>> date.
>>
>> Then is there a way to modify the creationTime and other  
>> characteristic of a file?
>>
>> Stef
>>
>
> --
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> John M. McIntosh <johnmci at smalltalkconsulting.com>
> Corporate Smalltalk Consulting Ltd.  http:// 
> www.smalltalkconsulting.com
> = 
> = 
> = 
> = 
> = 
> ======================================================================
>
>
>
>




More information about the Squeak-dev mailing list