{ Read messages backwards }

{ This program is for low-level maintenance only }

%include "News_S:News.Inc"

%external %string (80) Copyright %alias "NEWS_BACK_(C)_FDC_85" = -
   "Copyright (C) 1985 Frank D. Cringle"

%begin
   %string (255) topic
   %integer number, l, c

   %on %event 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 %start
      Close News File      { Safe, even if not open }
      Disconnect Host (News Host)
      Select Host (Home Host)
      Newline
      Print String ("Screwed up at line: ")
      Write (Event_Line, 0)
      Newline
      Signal (Event_Sub << 4 + Event_Event)      { Not literal indeed ! }
   %finish

   Topic = Cliparam
   Home Host = Current Host
   News Host = Connect to Host(News Server)
   %if %not Open News File(topic, 0) %start
      Newline
      PrintString(Topic." in use")
   %else
      %begin
         %label eof

         %on %event 9 %start
            -> eof
         %finish

         Select Host(Home Host)
         Write(Last Message, 0)
         Print String(" messages in topic ".topic)
         Newline
         Number = Last Message + 1
         %while Number > 1 %cycle
            l = Move to Message(Number, backwards)
            Select Host(Home Host)
            Write(Number, 4)
            Print String(": ")
            %while l > 0 %cycle
               Select Host(News Host)
               Select Input(News Stream)
               Read Symbol(c)
               Select Host(Home Host)
               %exit %if c = nl
               Print Symbol(c)
               l = l - 1
            %repeat
            Newline
         %repeat
         %cycle
            Select Host(Home Host)
            Select Input(0)
            Prompt("Which message? ")
            Read(Number)
            l = Move to Message(number, 0)
            %if l = 0 %start
               Print String("Doesn't exist")
            %else
               %while l > 0 %cycle
                  Select Host(News Host)
                  Select Input(News Stream)
                  Read Symbol(c)
                  Select Host(Home Host)
                  Print Symbol(c)
                  l = l - 1
               %repeat
            %finish
            Newline
         %repeat
         eof:
         Close News File
      %end
   %finish
   Select Output(0)
   Newline
%end
