예제 #1
0
파일: alloc.c 프로젝트: malclocke/amanda
/*
 * newstralloc - free existing string and then stralloc a new one.
 */
char *
debug_newstralloc(
    const char *file,
    int		line,
    char *	oldstr,
    const char *newstr)
{
    char *addr;

    addr = debug_stralloc(file, line, newstr);
    amfree(oldstr);
    return (addr);
}
예제 #2
0
파일: debug_node.c 프로젝트: rsenn/shish
void debug_node(union node *node, int depth) {
    debug_unquoted("type", debug_nodes[node->id], depth);
    debug_space(depth);

    switch(node->id) {
    case N_SIMPLECMD:
        debug_ulong("bngd", node->ncmd.bgnd, depth);
        debug_space(depth);
        debug_sublist("rdir", node->ncmd.rdir, depth);
        debug_space(depth);
        debug_sublist("args", node->ncmd.args, depth);
        debug_space(depth);
        debug_sublist("vars", node->ncmd.vars, depth);
        break;

    case N_PIPELINE:
        debug_ulong("bgnd", node->npipe.bgnd, depth);
        debug_space(depth);
        debug_sublist("cmds", node->npipe.cmds, depth);
        debug_space(depth);
        debug_ulong("ncmd", node->npipe.ncmd, depth);
        break;

    case N_AND:
    case N_OR:
        debug_ulong("bgnd", node->nandor.bgnd, depth);
        debug_space(depth);
        debug_subnode("cmd0", node->nandor.cmd0, depth);
        debug_space(depth);
        debug_subnode("cmd1", node->nandor.cmd1, depth);
        break;

    case N_SUBSHELL:
    case N_CMDLIST:
        debug_sublist("rdir", node->ngrp.rdir, depth);
        debug_space(depth);
        debug_sublist("cmds", node->ngrp.cmds, depth);
        break;

    case N_FOR:
        debug_str("varn", node->nfor.varn, depth);
        debug_space(depth);
        debug_sublist("cmds", node->nfor.cmds, depth);
        debug_space(depth);
        debug_sublist("args", node->nfor.args, depth);
        break;

    case N_CASE:
        debug_ulong("bgnd", node->ncase.bgnd, depth);
        debug_space(depth);
        debug_sublist("rdir", node->ncase.rdir, depth);
        debug_space(depth);
        debug_sublist("list", node->ncase.list, depth);
        debug_space(depth);
        debug_sublist("word", node->ncase.word, depth);
        break;

    case N_CASENODE:
        debug_sublist("pats", node->ncasenode.pats, depth);
        debug_space(depth);
        debug_sublist("cmds", node->ncasenode.cmds, depth);
        break;

    case N_IF:
        debug_ulong("bgnd", node->nif.bgnd, depth);
        debug_space(depth);
        debug_sublist("rdir", node->nif.rdir, depth);
        debug_space(depth);
        debug_sublist("cmd0", node->nif.cmd0, depth);
        debug_space(depth);
        debug_sublist("cmd1", node->nif.cmd1, depth);
        debug_space(depth);
        debug_subnode("test", node->nif.test, depth);
        break;

    case N_WHILE:
    case N_UNTIL:
        debug_ulong("bgnd", node->nloop.bgnd, depth);
        debug_space(depth);
        debug_sublist("rdir", node->nif.rdir, depth);
        debug_space(depth);
        debug_sublist("cmds", node->nloop.test, depth);
        debug_space(depth);
        debug_subnode("test", node->nloop.test, depth);
        break;

    case N_FUNCTION:
        debug_sublist("cmds", node->nfunc.cmds, depth);
        debug_space(depth);
        debug_str("name", node->nfunc.name, depth);
        break;

    case N_ASSIGN:

    case N_ARG:
        debug_subst("flag", node->narg.flag, depth);
        debug_space(depth);
        debug_stralloc("stra", &node->narg.stra, depth);
        debug_space(depth);
        debug_sublist("list", node->narg.list, depth);
        break;

    case N_REDIR:
        debug_redir("flag", node->nredir.flag, depth);
        debug_space(depth);
        debug_sublist("list", node->nredir.list, depth);
        debug_space(depth);
        debug_sublist("data", node->nredir.data, depth);
        debug_space(depth);
        debug_ulong("fdes", node->nredir.fdes, depth);
        break;

    case N_ARGSTR:
        debug_subst("flag", node->nargstr.flag, depth);
        debug_space(depth);
        debug_stralloc("stra", &node->nargstr.stra, depth);
        break;

    case N_ARGPARAM:
        debug_subst("flag", node->nargparam.flag, depth);
        debug_space(depth);
        debug_str("name", node->nargparam.name, depth);
        debug_space(depth);
        debug_sublist("word", node->nargparam.word, depth);
        debug_space(depth);
        debug_ulong("numb", node->nargparam.numb, depth);
        break;

    case N_ARGCMD:
    case N_ARGARITH:
        debug_subst("flag", node->nargcmd.flag, depth);
        debug_space(depth);
        debug_sublist("list", node->nargcmd.list, depth);
        break;

    case N_NOT:
        debug_sublist("cmds", node->nandor.cmd0, depth);
        break;
    }
}