|
i |
|
Announcement for October, 2006
5.8.6
AutoOpts Option Naming Conflicts
- A new program attribute guard-option-names has been added to ensure that if
there are any conflicts, then the conflicting define will be #undef-ed.
If you specify this attribute and if there are conflicting #define-s
on a particular platform, a #warn-ing will be issued.
That warning can be suppressed by adding -DNO_OPTION_NAME_WARNINGS
to the compile command.
- version-compare
- Debugging output was left in the released product.
The binary equivalent of a version number is now printed only if the tracing level is at "expression" or higher.
- addons
- I've started a separate hierarchy for various AutoGen add-on's,
instead of trying to list them all on the top page.
This got triggered by my adding a mechansim for dispatching named commands.
See the add-on page, please. :)
- stricter aliasing
- Andreas Schwab very kindly pointed out places where strict aliasing rules
were violated and suggested many of the fixes. Most importantly from a user's
point of view is that the emitted AutoOpts macros now use a union to access
a multi-purpose field in the option description structure. Old code should
still work because there is a #define that maps the old field name
pzLastArg to the equivalent new name, optArg.argString
- sys/mman.h
- This header is now included conditionally.
Announcement for August, 2006
5.8.5
- ag-fprintf
- This function will allow you to format and emit text into a suspended
output stream. If the first argument is an integer, then the output stream
that many entries back into the output stack will be used (see out-push-new and out-pop). If the first argument is a string, it must name a suspended
output stream (see out-suspend and out-resume).
- string tables
- Sometimes, it is really handy to be able to stuff strings into a
const character array and know the byte offset to the start of that
string. For example, it took a few minutes to produce this from
the string, "that was the week that was":
static const char scribble[18] =
"that\0" "was\0" "the\0" "week\0";
#define STRING_CT 6
const char *ap[7] = {
scribble + 0,
scribble + 5,
scribble + 9,
scribble + 13,
scribble + 0,
scribble + 5,
NULL };
notice that duplicates have been removed.
- (version-compare opcode autogen-version "5.8.5")
- You can now compare version strings in your template and definitions files.
- the #assert directive
- This directive has been activated. If the text after the assert
keyword is either a backquoted shell script or a scheme expression, it will
be evaluated. If the result is an empty string, a zero or text that starts
with 'N' (no) or 'F' (false), the autogen will abort.
- pseudo macro suffix specifications
- have been enhanced. You may now use a Scheme expression to construct
the formatting string. e.g., this:
h=(begin
(define f-name (string-append (getenv "incdir") "/%s-hdr.%s"))
(shellf
"d=`dirname %s`
test -d ${d} || mkdir -p $d || die cannot mkdir $d"
f-name)
f-name
)
will get the value of "incdir" from the environment and append the
string "/%s-hdr.%s" to construct the output file name format for the
"h" suffix. If the environment variable contained, for example,
"my-include", the above would ensure that the directory
"my-include" pre-existed and the suffix formatting string would be
"my-include/%s-hdr.%s".
- AutoFSM has been released
- It includes a new template, att-fsm.tpl that will produce
FSM diagrams using the
AT&T Research
FSM tools.
- Sometimes DOS cannot rename a file
- The testing depended upon being able to remove or rename directories
that it created. This is a problem on DOS. So, the tests will now
empty a directory if it cannot be removed or renamed.
- bare Windows
- NTP is migrating to using AutoOpts. However, they run on bare windows without
Cygwin. That means some of the features
of AutoOpts must be suppressed in the libopts library (viz., running usage text through a pager and
emitting help text into shell script option processing code).
These features are suppressed if _WIN32 is defined during
the compilation of libopts.
|