Linux Today: Linux News On Internet Time.

More on LinuxToday

Release Digest: GNU, March 1, 2004

Mar 02, 2004, 05:00 (0 Talkback[s])

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. :-)