Directory information (file version information on MacOS)
Jan Decroos
jan.decroos at groepvanroey.be
Mon Mar 3 03:28:02 EST 2003
This covers only the request for file version information :
You can set or get a file's version (MacOS) by next DoVersion function
- To *get* the version, let pVersion empty (give an empty string (mouseUp
handler) when asking for the version string).
- there is a bug in the engine when *creating* a new vers resource (file has no
res.fork) : this will be solved in the 2.0 version. (the file looses it's type
and creator)
- Doversion is a function, also for setting the version of a file (returns
empty)
on mouseUp
answer file "Give file:"
if it is empty then exit to top
put it into lFile
-- 'version' :
-- set : sets both long and short versions
-- get : gets the long version
answer "'Long version', 'short version' or 'version' ?" with "Long version"
or "short version" or "version"
put it into lOption
ask "Give version (leave blank to get version):"
put it into lVersion
answer Doversion(lOption, lFile, lVersion)
end mouseUp
function DoVersion pOption, pFile, pVersion
if the platform <> "MacOS" then
answer "Error DoVersion : can only get/set versions on MacOS !!"
exit to top
end if
if pOption is not among the items of "version,short version,long version" then
answer "Error DoVersion : 1st argument must be 'version','short version'
or 'long version' !!"
exit to top
end if
if the number of lines of pFile <> 1 or pFile is empty then
answer "Error DoVersion : 2nd argument must be one line and <> empty !!"
exit to top
end if
if there is not a file pFile then
answer "Error DoVersion : File not found !!"
exit to top
end if
put pVersion is not empty into lSetting -- lSetting (setting the version) is
true when pVersion is not empty
put empty into lResult
if pOption = "short version" then
put false into lisLVers
put true into lisSVers
else if pOption = "long version" then
put true into lisLVers
put false into lisSVers
else
put true into lisLVers
put lSetting into lisSVers
end if
if there is a file pFile then
put getResource(pFile, "vers", 1) into lVersResource
if lSetting then
put "" into lSVers
put "" into lLVers
if lVersResource = "" then
-- 1 : relase, 0 (2nd and 3rd part of release), 32 : development, 0 :
non-release, 0 & 0 : Country Code (US : 0 & 0, France : 0 & 1, ...)
repeat for each item litem in "1,0,32,0,0,0"
put numtochar(litem) after lVersResource
end repeat
else
put chartonum(char 7 of lVersResource) into lSVersLength
put (char 8 to (8+lSVersLength-1) of lVersResource) into lSVers
put (char (8+lSVersLength+1) to -1 of lVersResource) into lLVers
end if
if lisSVers then put line 1 of pVersion into lSVers
if lisLVers then put line 1 of pVersion into lLVers
put (char 1 to 6 of
lVersResource)&(numtochar(length(lSVers)))&lSVers&(numtochar(length(lLVers)))&lLVers
into lVersResource
-- setResource(<path>, <type>, <id>, <name>, <flags>, <data>)
get setResource(pFile,"vers",1,"version","",lVersResource)
else
if lVersResource <> "" then
put chartonum(char 7 of lVersResource) into lSVersLength
if lisSVers then
put (char 8 to (8+lSVersLength-1) of lVersResource) into lResult
else
put (char (8+lSVersLength+1) to -1 of lVersResource) into lResult
end if
end if
end if
end if
return (lResult)
end DoVersion
More information about the use-livecode
mailing list