DIRECTORY Ascii USING [Lower], BasicTime USING [GMT, Pack, Unpacked], FSRemoteFile, Rope USING [Fetch, ROPE]; FSTimeImpl: CEDAR MONITOR IMPORTS Ascii, BasicTime, Rope EXPORTS FSRemoteFile = BEGIN FTPTimeToGMT: PUBLIC PROC [t: Rope.ROPE] RETURNS [BasicTime.GMT] = BEGIN Digit: PROC [index: INT] RETURNS [CARDINAL] = BEGIN c: CHAR = Char[index]; RETURN [ IF c = ' THEN 0 ELSE c - '0 ]; END; Char: PROC [index: INT] RETURNS [CHAR] = BEGIN RETURN [ Ascii.Lower[ Rope.Fetch[t, index] ] ]; END; uT: BasicTime.Unpacked; uT.day _ Digit[0]*10 + Digit[1]; uT.year _ Digit[7]*10 + Digit[8] + 1900; IF uT.year <= 1950 THEN uT.year _ uT.year + 1000; uT.hour _ Digit[10]*10 + Digit[11]; uT.minute _ Digit[13]*10 + Digit[14]; uT.second _ Digit[16]*10 + Digit[17]; uT.month _ SELECT Char[3] FROM 'j => IF Char[4] = 'a THEN January ELSE IF Char[5] = 'n THEN June ELSE July, 'f => February, 'm => IF Char[5] = 'r THEN March ELSE May, 'a => IF Char[4] = 'p THEN April ELSE August, 's => September, 'o => October, 'n => November, 'd => December, ENDCASE => ERROR; uT.zone _ 60 * ( SELECT Char[19] FROM 'e => 5, 'c => 6, 'm => 7, 'p => 8, '+ => Digit[20], '- => - Digit[20], ENDCASE => ERROR ) ; uT.dst _ IF (Char[20] = 'd) THEN yes ELSE no; RETURN [BasicTime.Pack[uT]]; END; END. όFSTimeImpl.mesa Last Edited by: Schroeder, November 15, 1983 1:37 pm Last Edited by: Levin, August 9, 1983 11:36 am Time format is DD-MMM-YYbHH:MM:SSbZZT Note that the leading digit in DD and HH may be replaced with a b Exported to FSRemoteFile Κf– "Cedar" style˜Icode2šœ™K™4K™.code1šΟk ˜ Lšœœ ˜Lšœ œœ˜&Lšœ ˜ Lšœœ œ˜—šœ œ˜Lšœ˜Lšœ ˜Lšœœ˜—K™%K™A™š Οn œœœ œœ œ˜BKš˜š žœœ œœœ˜-Kš˜Kšœœ˜Kšœœœœ ˜(Kšœ˜—š žœœ œœœ˜(Kš˜Kšœ)˜/Kšœ˜—Kšœ˜Kšœ ˜ Kšœ(˜(Kšœœ˜1Kšœ#˜#Kšœ%˜%Kšœ%˜%šœ œ ˜šœœœ˜"Kšœœ œœ˜)—K˜Kšœœ œœ˜*Kšœœ œœ˜-K˜K˜K˜K˜Kšœœ˜—šœœ ˜%Kšœ ˜ Kšœ˜K˜Kšœ ˜ K˜K˜Kšœœ˜—Kšœ œœœ˜-Kšœ˜Kšœ˜——Kšœ˜—…—ςT