#ifndef lint
static char copyright[] =
-"$Id: tree.c,v 1.50 1999/09/22 17:27:01 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium. All rights reserved.\n";
+"$Id: tree.c,v 1.51 1999/09/24 19:04:30 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
concat_again:
col = write_expression (file, e -> data.concat [0],
col, scol);
+ if (!e -> data.concat [1])
+ goto no_concat_cdr;
col = token_print_indent (file, col, scol, "", " ", ",");
if (e -> data.concat [1] -> op == expr_concat) {
e = e -> data.concat [1];
}
col = write_expression (file, e -> data.concat [1],
col, scol);
+ no_concat_cdr:
col = token_print_indent (file, col, indent, "", "", ")");
break;
col = write_expression (file,
e -> data.pick_first_value.car,
col, scol);
+ /* We're being very lisp-like right now - instead of
+ representing this expression as (first middle . last) we're
+ representing it as (first middle last), which means that the
+ tail cdr is always nil. Apologies to non-wisp-lizards - may
+ this obscure way of describing the problem motivate you to
+ learn more about the one true computing language. */
+ if (!e -> data.pick_first_value.cdr)
+ goto no_pick_cdr;
col = token_print_indent (file, col, scol, "", " ",
",");
if (e -> data.pick_first_value.cdr -> op ==
col = write_expression (file,
e -> data.pick_first_value.cdr,
col, scol);
+ no_pick_cdr:
col = token_print_indent (file, col, indent, "", "",
")");
break;