Index: modules/m4.c =================================================================== RCS file: /sources/m4/m4/modules/m4.c,v retrieving revision 1.106 diff -u -r1.106 m4.c --- modules/m4.c 3 Apr 2007 21:06:16 -0000 1.106 +++ modules/m4.c 21 May 2007 06:18:07 -0000 @@ -70,7 +70,7 @@ BUILTIN (decr, false, true, true, 1, 1 ) \ BUILTIN (define, true, true, false, 1, 2 ) \ BUILTIN (defn, false, true, false, 1, -1 ) \ - BUILTIN (divert, false, false, false, 0, 1 ) \ + BUILTIN (divert, false, false, false, 0, 2 ) \ BUILTIN (divnum, false, false, false, 0, 0 ) \ BUILTIN (dnl, false, false, false, 0, 0 ) \ BUILTIN (dumpdef, false, false, false, 0, -1 ) \ @@ -587,11 +587,24 @@ M4BUILTIN_HANDLER (divert) { int i = 0; + int prevdiv; + const char *text; if (argc >= 2 && !m4_numeric_arg (context, argc, argv, 1, &i)) return; + prevdiv = m4_get_current_diversion (context); + m4_make_diversion (context, i); + + if (argc == 2) + return; + + text = M4ARG (2); + + m4_shipout_text (context, NULL, text, strlen (text)); + + m4_make_diversion (context, prevdiv); } /* Expand to the current diversion number. */