#!/bin/sh
# Extract all examples from the manual source.
# Copyright (C) 1992 Free Software Foundation, Inc.

# This script is for use with GNU awk.

FILE=${1-/dev/null}

$AWK '

BEGIN {
  node = "";
  seq = -1;
  count = 0;
  file = "NONE";
}

/^@node / {
  if (seq > 0)
    printf(" --  %d file%s", seq, seq == 1 ? "" : "s");
  if (seq >= 0)
    printf("\n");

  split($0, tmp, ",");
  node = substr(tmp[1], 7);
  if (length(node) > 11)
    printf("Node: %s - truncated", node);
  else
    printf("Node: %s ", node);
  gsub(" ", "_", node);
  node = tolower(substr(node, 1, 11));
  seq = 0;
}

/^@comment ignore$/ {
  getline;
  next;
}

/^@example$/, /^@end example$/ {
  if (seq < 0)
    next;
  if ($0 ~ /^@example$/) {
    if (count > 0)
      close (file);
    seq++;
    count++;
    file = sprintf("%02d.%s", count, node);
    printf("dnl %s:%d: Origin of test\n", FILENAME, NR) > file;
    next;
  }
  if ($0 ~ /^@end example$/) {
    next;
  }
  if ($0 ~ /^\^D$/)
    next;
  if ($0 ~ /^@result\{\}/ || $0 ~ /^@error\{\}/)
    prefix = "dnl ";
  else
    prefix = "";
  gsub("@@", "@", $0);
  printf("%s%s\n", prefix, $0) >> file;
}

END {
  printf("\n");
}
' $FILE
