Seeking confirmation of a bug...

Richard Gaskin ambassador at fourthworld.com
Thu May 16 13:30:22 EDT 2019


Paul Dupuis wrote:

 > I just filed a serious bug for LC904 that is only under OSX. When
 > using 'asnwer file <prompt> with type <typelist>' the selected type is
 > supposed to be returned in 'the result'. This works as expected under
 > Windows, but under OSX using LC904 STABLE, 'the result' is the same as
 > the 'it', both contain the file path selected.
 >
 > Please see https://quality.livecode.com/show_bug.cgi?id=22070

While it will be useful to have this fixed, the current state of macOS 
should provide a mildly-tedious-but-not-difficult workaround:

The older Finder type codes (the four-character identifiers hidden away 
in the file's metadata) are long deprecated, and for more than a decade 
macOS relies on file extensions to determine type.

Since the range of type options is limited to types you set, a few 
minutes writing a function to match the file extension with the type 
categories you provided should at least get you going while waiting for 
an engine fix.

In the odd case where you may encounter a very old (or misnamed) file 
that has no type extension in its name, you could extend the function to 
see if the old Finder type is included in info provided with "the 
detailed files".

If you were super-thorough, you might even provide another check of file 
contents to confirm type.  Image formats have magic numbers, and text 
formats have patterns identifiable within a reasonably small number of 
bytes.  A short read can confirm the type of misnamed files even beyond 
what can be expected with "answer file".


Psuedocode:

   getFileNameExtension(fileName)
   if absent
      getDetailedFilesInfo
      convertFourCharTypetoExtensionString
   end if
   switch fileType
      case "png"
      case "jpg"
      case "jpeg"
         return "image"
         break
      case "text"
      case "rtf"
         return "text"
         break
    end switch
    -- bonus:
    confirmTypeByReadingSomeContent


The case block for your supported types is likely still in your code 
base.  Copying it to a new function and adding the earlier step of 
handling missing types by Finder code (if not already there) will make 
short work of this.

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com




More information about the use-livecode mailing list