Admin Panel

/* proc_args

   print program arguments
   first by calling GetArgStr()
   and then by reading Input() until newline
*/

#include <dos/dos.h>
#include <proto/dos.h>

static void print_args(STRPTR topic, STRPTR line)
{
  BPTR out = Output();

  PutStr(topic);

  if(line == NULL) {
    PutStr("NULL\n");
  } else {
    PutStr("\"");
    while(TRUE) {
      ULONG ch = *line++;
      if(ch == 0) {
        break;
      }
      else if(ch == '\n') {
        PutStr("\\n");
      }
      else if(ch == '\"') {
        PutStr("\\\"");
      }
      else if(ch < 32) {
        Printf("\\x%02lx", ch);
      }
      else if(ch == '\\') {
        PutStr("\\\\");
      }
      else {
        FPutC(out, ch);
      }
    }
    PutStr("\"\n");
  }
}

int main(int argc, char *argv[])
{
  UBYTE buf[256];
  STRPTR arg_str;
  STRPTR in_str;

  arg_str = GetArgStr();
  print_args("a0:", arg_str);

  in_str = FGets(Input(), buf, 255UL);
  print_args("in:", in_str);

  return 0;
}