---

Release Digest: GNU, March 1, 2004

GNU AutoGen 5.6

AutoGen is a tool designed to simplify the creation and
maintenance of programs that contain large amounts of repetitious
text. It is especially valuable in programs that have several
blocks of text that must be kept synchronized.

One common example is the problem of maintaining the code
required for processing program options. Processing options
requires a minimum of four different constructs be kept in proper
order generally in different places in your program. You need at
least:

  1. The flag character in the flag string,
  2. code to process the flag when it is encountered,
  3. a global state variable or two, and
  4. a line in the usage text.

AutoGen provides a general framework for handling this and
similar programming tasks.

Noteworthy changes since the last info-gnu announcement:

  • “fmemopen” is now used for anonymous file output (aka an M4
    type “diversion”). This functions on systems that support either
    “fopencookie(3GNU)” or “funopen(3BSD)”.
  • The Guile/Scheme function “(chdir “xxx”)” is wrapped. AutoGen
    needs to know if the current directory has changed.
  • The definitions parser was rewritten as a FSM parser. This
    removes the limitation of several hundred definitions of the same
    name (i.e. an array of values was limited to several hundred
    entries).
  • The AutoOpts code now produces internationalizable output. This
    means your long option names and usage text may be localized. If
    you localize the program name, that will _also_ get printed
    localized.
  • There is now an AutoOpts template for producing code that uses
    either getopt(3C) or getopt_long(3GNU). AutoOpts features that
    depend upon libopts will not work, but your generated code would
    not depend upon the libopts external library either. You still get
    generated man pages and texinfo “invoking” chapters. See: http://www.gnu.org/software/autogen/compare.html
    and
    http://www.gnu.org/software/autogen/manual/html_node/autogen_254.html#SEC254

    (the latter works until section numbers change in my doc)
  • Lots of obscure polishing. 🙂

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis