Пример #1
0
// Process a text line in 'line_buf'.
static void proc_text(void)
{
    static int blank_lines = 0; // Consecutive blank lines so far.

    switch(line_type[0])
    {
    case 'a':
        if (blank_join > 1)
        {
            if (line_buf.length > 1 || ++blank_lines == blank_join)
            {
                print_lineno();
                blank_lines = 0;
            }
            else
                fputs(print_no_line_fmt, stdout);
        }
        else
            print_lineno();
        break;
    case 't':
        if(line_buf.length > 1)
            print_lineno();
        else
            fputs(print_no_line_fmt, stdout);
        break;
    case 'n':
        fputs(print_no_line_fmt, stdout);
        break;
    case 'p':
        switch(regexec(&line_regex, line_buf.buffer, 0, NULL, 0))
        {
        case 0:
            print_lineno();
            break;
        case REG_NOMATCH:
            fputs(print_no_line_fmt, stdout);
            break;
        default:
            //regerror(); //TODO
            //fprintf(stderr, "error in regular expression search.\n");
            perror("error in regular expression search.");
            exit(EXIT_FAILURE);
            break;
        }
    }

    //line_buf.buffer[line_buf.length] = '\0';
    //fputs(line_buf.buffer, stdout);
    fwrite(line_buf.buffer, sizeof(char), line_buf.length, stdout);
}
Пример #2
0
void
report1_format(const BiTreeNode *node) {

	printf("%s\t\t",
			(char *)((TNode *)((AvlNode *)
			bitree_data(node))->data)->vname);
	print_nodechildren(node);
	print_lineno((List *)((TNode *)((AvlNode *)
			bitree_data(node))->data)->appear);
	return;
};