Main Page Cookbook/Overview ImageMeister the jcprops file Licensing Please Vote! Binary Installation & Configuration [ Win · Mac · Nix ] Changes Public API Source Code Main Page Java [ Common · Win · Mac · Nix ] Native Code [ Common · Win · Mac · Nix ] Manifest Native Code Overviews [ Common · Win · Mac · Nix · Strings ] Macros [ General · Native Macros ] Walkthroughs [ Java only · Java and native ] Building [ Win · Mac · Nix ] Distribution Issues

# Changes from v2.1.0 to v2.1.1

## API Changes

> 1. changed the getReferenceNumber method to return a long instead of an int in the following: DiskVolume, DiskVolumeMRJ, DiskVolumeNix, DiskVolumeMSVM
> 2. Added the getReferenceNumber method to the FileSystem interface

## Source Code/Build Changes

## Implementation Changes

> 1. Fixed a bug in the AppUtilsMSVM.getVolumeReferenceNumber method
> 2. Modified the FileSystemNix.getCapacity method to: use the block size specified by the call to fstatfs (instead of the previous hardcoded 1024) and use the bavail value instead of bfree value. The latter change means that this method returns the free space available just to the current user, and not that which is available to the superuser as before.
> 3. Added the JUtils.intsToLong method

## Configuration Changes

# Changes from v2.0.0 to v2.1.0

## API Changes

> 1. Added new file attribute constants (FILE_READONLY, etc.) to DiskFile.java
> 2. Added the setFlags() and getSetFlagsMask() methods to DiskObject. However, these methods are currently only implemented in the Win and Mac versions.

>    For linux/nix, getSetFlagsMask() always returns 0, and setFlags() throws an UnimplementedException

>    For more information on these flags on Mac, see:

>        http://developer.apple.com/technotes/tb/tb_09.html
>        http://developer.apple.com/techpubs/mac/Toolbox/Toolbox-455.html#MARKER-9-356

> 3. Added the com.tolstoy.testjc.FileAttributesTest class

## Source Code/Build Changes

> 1. Removed an illegal character which had snuck into MyFindIconMacros.h

## Implementation Changes

> 1. Changed setFlags() and getSetFlagsMask() in mac.DiskVolumeMRJ and mac.DiskFileMRJ to throw an OSException instead of returning an error code. These methods had not previously been part of the DiskObject interface, so this shouldn't cause client code to be changed.
> 2. Changed getFlags() and getGetFlagsMask() in win.DiskFileMSVM to throw an OSException if an error occurs.
> 3. Changed the implementation of the getDiskFileFlags() and setDiskFileFlags() methods in mac/sfiles/SFlags.cpp, and added the isShared() method.
> 4. Added file attribute constants (kFileAttributes_FILE_READONLY, etc.) to mac/sfiles/SFlags.h and win/SFileInfo.h to match the new constants in DiskFile.java
> 5. Now using WinAPI GetDiskFreeSpaceEx() to get the free space/capacity of a volume. If that's not available, calls WinAPI GetDiskFreeSpace(). This was done by adding XGetDiskFreeSpace2() to XToolkit.cpp. XToolkit::XGetDiskFreeSpace() is still there but no longer used.
> 6. Added XGetFileAttributes2(), isGetFileAttributesExAvailable(), and XSetFileAttributes() to XToolkit
> 7. The AppUtilsMSVM.getVolumeCapInfo() method now takes a long array with four elements. The additonal two elements have the user-specific free space and capacity. The AppUtilsMSVM.kVolumeCapInfoLen constant was changed from 2 to 4, and AppUtilsMSVM.kVolumeCapInfoCapacityToUserOffset and AppUtilsMSVM.kVolumeCapInfoFreeSpaceToUserOffset were added.
> 8. SVolumes::iGetVolumeCapInfo() was changed to reflect the previous two changes.
> 9. Changed MonitorPlain.getDepth() to just return 0. In the last version, it had thrown an UnimplementedException
> 10. Removed the getCreationDate, getLastAccessDate, and getModificationDate methods from various implementations of DiskObject

## Configuration Changes

# Changes from v1.2.5 to v2.0.0

## API Changes

> 1. The main JConfig classes are now in the package `com.jconfig...` instead of the previous `com.tolstoy.jconfig...`
> 2. There is no longer a separate upper-case version (`COM.tolstoy.jconfig...`)
>    There is only one JConfig version, which uses lower-case 'com' as the first part of the package name.
> 3. replaced return kParamErr with throw new IllegalArgumentException()
> 4. replaced return kUninitializedErr with throw new com.jconfig.UnitializedException()
> 5. replaced return kUnimplementedErr with throw new com.jconfig.UnimplementedException()
> 6. FinderInfo: now implements Cloneable; added setter methods for all fields; added 2 new int fields: attributes and flags; removed array constants from DiskFile, put into this class; added array constructor and toArray() method
> 7. DiskFile.getFinderInfo/setFinderInfo: instead of arrays, these now take and return FinderInfo objects
> 8. FileExtension: now implements Cloneable
> 9. MIMEType: now implements Cloneable
> 10. There is now just one test class, Tester.java; TesterW has been removed
> 11. Created package com.tolstoy.testjc to hold testing classes
> 12. Removed the following methods from com.jconfig.DiskObject: getCreationDate, getLastAccessDate, and getModificationDate. These had previously been deprecated. Use getDateBundle instead.
> 13. Added the setDateBundle method to com.jconfig.DiskObject.
> 14. Added toArray() and createFromArray() to DateBundle
> 15. Added the new class OSException.
> 16. Added the PlatformInfoI interface and the PlatformInfoPlain, PlatformInfoMSVM, PlatformInfoNix, and PlatformInfoMRJ classes. Added the FileRegistry.getPlatformInfo() method, and changed FileRegistryI, etc. accordingly.
> 17. jcprops.txt: property names were changed:

>         old values:
>           com.tolstoy.jconfig.FileRegistryFactoryMac.findExtensions
>           com.tolstoy.jconfig.FileRegistryFactoryMac.findFinderInfo
>           com.tolstoy.jconfig.FileRegistryFactoryMac.getApps
>           com.tolstoy.jconfig.FileRegistryFactoryMac.iterate
>           com.tolstoy.jconfig.FileRegistryFactoryMac.launchURL
>           com.tolstoy.jconfig.mac.FileUtilsClassName
>         new values:
>           com.jconfig.mac.FileRegistryFactoryMac.findExtensions
>           com.jconfig.mac.FileRegistryFactoryMac.findFinderInfo
>           com.jconfig.mac.FileRegistryFactoryMac.getApps
>           com.jconfig.mac.FileRegistryFactoryMac.iterate
>           com.jconfig.mac.FileRegistryFactoryMac.launchURL
>           com.jconfig.mac.FileRegistryMRJ.FileUtilsClassName

> 18. The following constant's names were changed. None of their functionality or values were changed, they were just converted to uppercase to make this more palatable to a certain corp. ;) For instance, AppFile.kDontSwitchLayer was changed to AppFile.AF_NO_LAYER_SWITCH

>         private static final String changes[][] = {

>         			//	AppFile
>         	{ "kDontSwitchLayer", "AF_NO_LAYER_SWITCH" },
>         	{ "kDisplayManagerAware", "AF_DISPLAYMANAGER" },
>         	{ "kUseTextEditServices", "AF_USE_TES" },
>         	{ "kStationeryAware", "AF_STAT_AWARE" },
>         	{ "kLocalAndRemoteHLEvents", "AF_LOCAL_REMOTE_EVENTS" },
>         	{ "kHighLevelEventAware", "AF_HLE_AWARE" },
>         	{ "k32BitCompatible", "AF_32" },
>         	{ "kGetAppDiedMsg", "AF_APP_DIED_MSG" },
>         	{ "kGetFrontClicks", "AF_FRONT_CLICKS" },
>         	{ "kOnlyBackground", "AF_APPE" },
>         	{ "kDoesActivateOnFGSwitch", "AF_ACTIVATE_FG" },
>         	{ "kCanBackground", "AF_CAN_BG" },
>         	{ "kNeedSuspendResume", "AF_SUSPEND_RESUME" },
>         	{ "kMultiLaunch", "AF_MULTILAUNCH" },
>         	{ "kDeskAccessory", "AF_DESKACC" },
>         	{ "kWin32Exe", "AF_W32" },
>         	{ "kDOSExe", "AF_DOS" },
>         	{ "kWOWExe", "AF_WOW" },
>         	{ "kPIFExe", "AF_PIF" },
>         	{ "kPOSIXExe", "AF_POSIX" },
>         	{ "kOS216Exe", "AF_OS216" },
>         	{ "kPEFExe", "AF_PEF" },
>         	{ "kCFM68Exe", "AF_CFM68" },
>         	{ "k68kExe", "AF_68K" },
>         	{ "kUnknownExe", "AF_UNKNOWN" },

>         			//	AppProcess
>         	{ "kMoveToFront", "APP_MOVE_TOFRONT" },
>         	{ "kMoveToBack", "APP_MOVE_TOBACK" },
>         	{ "kMinimize", "APP_MOVE_MINIMIZE" },
>         	{ "kMaximize", "APP_MOVE_MAXIMIZE" },

>         			//	DateBundle
>         	{ "kModificationDate", "DATE_MOD" },
>         	{ "kCreationDate", "DATE_CRE" },
>         	{ "kBackupDate", "DATE_BKUP" },
>         	{ "kAccessDate", "DATE_ACC" },

>         			//	DiskAlias
>         	{ "kToVolume", "ALIAS_VOL" },
>         	{ "kToDirectory", "ALIAS_DIR" },
>         	{ "kToFile", "ALIAS_FILE" },
>         	{ "kToOther", "ALIAS_OTHER" },
>         	{ "kNoLongerAlias", "ALIAS_NOLONGER" },

>         			//	DiskFile
>         	{ "kIsExecutable", "FILE_EXECUTABLE" },
>         	{ "kIsDirectory", "FILE_DIR" },
>         	{ "kIsHidden", "FILE_HIDDEN" },
>         	{ "kIsStationery", "FILE_STAT" },
>         	{ "kIsNameLocked", "FILE_NAME_LOCKED" },
>         	{ "kHasCustomIcon", "FILE_CUSTOM_ICON" },

>         			//	DiskFilter
>         	{ "kIgnoreHidden", "IGNORE_HIDDEN" },
>         	{ "kIgnoreFolders", "IGNORE_FOLDERS" },
>         	{ "kIgnoreFiles", "IGNORE_FILES" },
>         	{ "kIgnoreAliases", "IGNORE_ALIASES" },
>         	{ "kIgnoreNameLocked", "IGNORE_NAME_LOCKED" },

>         			//	FinderInfo
>         	{ "kFInfoLen", "FI_ARRAYLEN" },
>         	{ "kFInfoCreatorOffset", "FI_OFFS_CRE" },
>         	{ "kFInfoTypeOffset", "FI_OFFS_TYPE" },
>         	{ "kFInfoFlagsOffset", "FI_OFFS_FLAGS" },
>         	{ "kFInfoAttribOffset", "FI_OFFS_ATTRIBUTES" },

>         			//	DiskObject
>         	{ "kCreateFile", "DO_CREATEFILE" },
>         	{ "kCreateFolder", "DO_CREATEDIR" },

>         			//	ErrCodes
>         	{ "kNoErr", "ERROR_NONE" },
>         	{ "kParamErr", "ERROR_PARAM" },
>         	{ "kUnimplementedErr", "ERROR_UNIMPLEMENTED" },
>         	{ "kUninitializedErr", "ERROR_UNINITIALIZED" },

>         			//	FileRegistry
>         	{ "kGetProcessesIgnoreSystem", "GETPROCESSES_IGNORE_SYSTEM" },
>         	{ "kGetProcessesIgnoreHidden", "GETPROCESSES_IGNORE_HIDDEN" },

>         			//	FileRegistry/FileRegistryI
>         	{ "kInOnly", "IN_ONLY" },
>         	{ "kOutOnly", "OUT_ONLY" },
>         	{ "kInAndOutOnly", "INANDOUT_ONLY" },
>         	{ "kResolveAliasNoUI", "ALIAS_NOUI" },
>         	{ "kResolveAliasUI", "ALIAS_UI" },
>         	{ "kGetAppsSearchLevel1", "GETAPPS_SEARCH1" },
>         	{ "kGetAppsSearchLevel2", "GETAPPS_SEARCH2" },
>         	{ "kGetAppsSearchLevel3", "GETAPPS_SEARCH3" },

>         			//	DiskVolume
>         	{ "kCaseIsPreserved", "VOL_CASE_PRESERVED" },
>         	{ "kCaseSensitive", "VOL_CASE_SENSITIVE" },
>         	{ "kUnicodeSupported", "VOL_UNICODE" },
>         	{ "kFilesCompressed", "VOL_FILES_COMPRESSED" },
>         	{ "kVolumeCompressed", "VOL_VOL_COMPRESSED" },
>         	{ "kRemovable", "VOL_REMOVABLE" },
>         	{ "kFixed", "VOL_FIXED" },
>         	{ "kRemote", "VOL_REMOTE" },
>         	{ "kCDROM", "VOL_CDROM" },
>         	{ "kRAM", "VOL_RAM" },
>         	{ "kSystem", "VOL_SYSTEM" },

>         			//	FileSystem
>         	{ "kGetCapLength", "FS_GETCAP_LENGTH" },
>         	{ "kGetCapCapacityOffset", "FS_GETCAP_CAP_OFFSET" },
>         	{ "kGetCapFreeSpaceOffset", "FS_GETCAP_FREESPACE_OFFSET" },

>         			//	FileType
>         	{ "kCreatedFromExt", "CREATED_FROM_EXT" },
>         	{ "kCreatedFromFTAC", "CREATED_FROM_FTAC" },
>         	{ "kCreatedFromMIME", "CREATED_FROM_MIME" },

>         			//	FinderInfo
>         	{ "kAPPLType", "APPLICATION_TYPE" },

>         			//	IconBundle
>         	{ "kLargeIcon", "ICON_LARGE" },
>         	{ "kSmallIcon", "ICON_SMALL" },
>         	{ "kAlignNone", "ICON_ALIGN_NONE" },
>         	{ "kAlignVerticalCenter", "ICON_ALIGN_VCENTER" },
>         	{ "kAlignTop", "ICON_ALIGN_TOP" },
>         	{ "kAlignBottom", "ICON_ALIGN_BOTTOM" },
>         	{ "kAlignHorizontalCenter", "ICON_ALIGN_HCENTER" },
>         	{ "kAlignLeft", "ICON_ALIGN_LEFT" },
>         	{ "kAlignRight", "ICON_ALIGN_RIGHT" },
>         	{ "kXformNone", "ICON_CHANGE_NONE" },
>         	{ "kXformDisabled", "ICON_CHANGE_DISABLED" },
>         	{ "kXformOffline", "ICON_CHANGE_OFFLINE" },
>         	{ "kXformOpen", "ICON_CHANGE_OPEN" },
>         	{ "kXformLabel1", "ICON_CHANGE_LABEL1" },
>         	{ "kXformLabel2", "ICON_CHANGE_LABEL2" },
>         	{ "kXformLabel3", "ICON_CHANGE_LABEL3" },
>         	{ "kXformLabel4", "ICON_CHANGE_LABEL4" },
>         	{ "kXformLabel5", "ICON_CHANGE_LABEL5" },
>         	{ "kXformLabel6", "ICON_CHANGE_LABEL6" },
>         	{ "kXformLabel7", "ICON_CHANGE_LABEL7" },
>         	{ "kXformSelected", "ICON_CHANGE_SELECTED" },

>         			//	Monitor
>         	{ "kTestOnlyMask", "TEST_ONLY_MASK" },

>         			//	ResourceFork
>         	{ "kOpenExisting", "RESFORK_OPENEXISTING" },
>         	{ "kReadOnly", "RESFORK_READONLY" },

>         			//	Tester/TesterW/TestResFork
>         	{ "kMySignature", "MY_SIGNATURE" },

>         			//	Trace
>         	{ "kSystemOut", "TRACE_SYSOUT" },
>         	{ "kFile", "TRACE_FILE" },
>         	{ "kNull", "TRACE_NULL" }
>         };

## Source Code/Build Changes

> 1. removed the file iscomlowercase.h which was used to switch between the upper and lower-case versions.
> 2. removed references to the USING_LOWER_CASE_com constant which had been defined in iscomlowercase.h
> 3. removed the native header files which ended in _lower and _upper, and are now just using the lower one For instance, the new file 'JNI_AppUtilsMSVM.h' is just the previous 'JNI_AppUtilsMSVM_lower.h' The file 'JNI_AppUtilsMSVM.h' was removed, and 'AppUtilsMSVM.h' was changed to include the correct header based only on the native architecture being compiled (JNI,etc.), rather than the previous functionality which also took the USING_LOWER_CASE_com constant into account as well.

## Implementation Changes

> 1. The getDateBundle methods now throw an OSException instead of returning null if an error occurs.

## Configuration Changes

> 1. Changed the various batch files and shell scripts to reflect the inclusion of the 'source' directory inside the main folder.

# Changes from v1.2.2 to v1.2.3

## API Changes

> Added the Trace class, used to output tracing and debugging messages.

## Implementation Changes

> Updated to use the latest version of Find_icon (Mac)
> Fixed some WinNT problems

# Changes from v1.2.1 to v1.2.2

## Implementation Changes

> Changed the implementation of the launchURL method.

# Changes from v1.2 to v1.2.1

## Implementation Changes

> See the 'WINDOWS NOTE' section in the first part of the documentation of the AppCommand interface.

# Changes from v1.1 to v1.2

## API Changes

> 1. The following methods are deprecated:

>         DiskObject.getCreationDate()
>         DiskObject.getLastAccessDate()
>         DiskObject.getModificationDate()

> These methods still work, however, they will be removed in a future version. These have been replaced with the following method:

>         DiskObject.getDateBundle()

> This method returns a 'DateBundle' object, which is used to hold zero or more 'RawDate' objects. Both of these classes are new in this version. The RawDate class holds the year, month, day, hour, minute, and second, but has no conversion or other routines. You can use the JUtils.rawDateToJDate() method to convert a RawDate into a java.util.Date object, however, if you're running on a 1.1.x system, you might want to write a method to convert a RawDate into a Calendar or other class.

> 2. A new interface has been added, named 'FileSystem'. See the overview.html 'Working with Files' section for more information.

## Configuration Changes

> With JConfig v1.1 and before, the directory passed to the FileRegistry.initialize() method was required to contain a file named 'jconfig.cfg'.

> This is still true, however, with this version this directory must contain an additional file named 'jcfactrz.txt'.

> Both of these files are included with this distribution, and you can provide your own versions of either file in order to customize JConfig. This is described in the overview.html 'Customizing JConfig' section,

> If JConfig cannot find either of these files, it will output warning messages, and will use default values stored internally. See the first section of 'overview.html' for more information.

Main Page · JConfig · ImageMeister · System Properties Repository · Native Macros · Free Samples · WordMeister · Java Freeware · Links · Contact Us

Copyright (c) 1997,1998,1999,2000 Samizdat Productions. All Rights Reserved.
JConfig and ImageMeister are trademarks of Samizdat Productions. Other trademarks are the property of their respective owners.
samizdat@tolstoy.com