GetOsInfo

From Pickwiki
Revision as of 23:48, 26 February 2015 by Conversion script (talk) (link fix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Note that this routine is not fast.

For pure speed you're probably better off running shell commands to parse the directory information you are looking for. This works well for a generic utility that you can use in UniData to take a quick look at the directories or grab item information.

SUBROUTINE GET.OS.INFO(RTN.INFO,CURRENT.ID,TYPE)
*
* Colin Alfke
*
COMMON [[/OS]].INFO/ VOC, PATH
IF UNASSIGNED(PATH) THEN PATH = ''
*
CMND = @COMMAND
PLATFORM = OCONV(SYSTEM(33),'MCU')
IF PLATFORM = "UNIX" THEN DELIM = "/" ELSE DELIM = "\"
FN = FIELD(CMND,' ',2)
*
* Get the full path from the VOC
*
FILE.PATH = ''
IF PATH # @PATH OR NOT(FILEINFO(VOC,0)) THEN
  OPEN 'VOC' TO VOC THEN
    READV FILE.PATH FROM VOC, FN, 2 ELSE FILE.PATH = ''
  END
  PATH = @PATH
END
*
* Convert any environment variables to the full path
*
CONVERT DELIM TO @VM IN FILE.PATH
NUM.PATH = DCOUNT(FILE.PATH<1>,@VM)
FOR NP = 1 TO NUM.PATH
  IF FILE.PATH<1,NP>[1,1] = "@" THEN
    FILE.PATH<1,NP> = GETENV(FILE.PATH<1,NP>[2,999])
  END
NEXT NP
CONVERT @VM TO DELIM IN FILE.PATH
*
* Get the info
*
FP = FILE.PATH:DELIM:CURRENT.ID
BEGIN CASE
  CASE TYPE = 'S'                   ;* Size
    RTN.INFO = DIR(FP)<1>
  CASE TYPE = 'D'                   ;* Date
    RTN.INFO = DIR(FP)<2>
  CASE TYPE = 'T'                   ;* Time
    RTN.INFO = DIR(FP)<3>
  CASE TYPE = 'P'                   ;* Privileges
    RTN.INFO = DIR(FP)<4>
  CASE 1                            ;* Date and Time
    TEMP = DIR(FP)
    RTN.INFO = OCONV(TEMP<2>,'D4'):"  ":OCONV(TEMP<3>,'MTS')
END CASE
RETURN




Here are some dictionaries that you can use to call this routine (I keep them in the VOC so I can run them on any file):

OS.DATE:
IReturn Operating System date on the file
SUBR("GET.OS.INFO",@ID,'D')
D4
    OS Date
11R
S


OS.TIME:
IReturn Operating System time on the file
SUBR("GET.OS.INFO",@ID,'T')
MTS
 OS Time
8R
S


OS.PRIV:
IReturn Operating System priveleges on the file
SUBR("GET.OS.INFO",@ID,'P')
 
OS Priv
5L
S


OS.SIZE:
IReturn Operating System size on the file
SUBR("GET.OS.INFO",@ID,'S')

        OS Size
15R
S


OS.INFO:
IReturn Operating System Info
SUBR("GET.OS.INFO",@ID,'')

    OS Info
21L
S