MCPcopy Create free account
hub / github.com/F-Stack/f-stack / db_fncall

Function db_fncall

freebsd/ddb/db_command.c:615–660  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

613}
614
615static void
616db_fncall(db_expr_t dummy1, bool dummy2, db_expr_t dummy3, char *dummy4)
617{
618 db_expr_t fn_addr;
619 db_expr_t args[DB_MAXARGS];
620 int nargs = 0;
621 db_expr_t retval;
622 int t;
623
624 if (!db_expression(&fn_addr)) {
625 db_printf("Bad function\n");
626 db_flush_lex();
627 return;
628 }
629
630 t = db_read_token();
631 if (t == tLPAREN) {
632 if (db_expression(&args[0])) {
633 nargs++;
634 while ((t = db_read_token()) == tCOMMA) {
635 if (nargs == DB_MAXARGS) {
636 db_printf("Too many arguments (max %d)\n", DB_MAXARGS);
637 db_flush_lex();
638 return;
639 }
640 if (!db_expression(&args[nargs])) {
641 db_printf("Argument missing\n");
642 db_flush_lex();
643 return;
644 }
645 nargs++;
646 }
647 db_unread_token(t);
648 }
649 if (db_read_token() != tRPAREN) {
650 db_printf("Mismatched parens\n");
651 db_flush_lex();
652 return;
653 }
654 }
655 db_skip_to_eol();
656 db_disable_pager();
657
658 if (DB_CALL(fn_addr, &retval, nargs, args))
659 db_printf("= %#lr\n", (long)retval);
660}
661
662static void
663db_halt(db_expr_t dummy, bool dummy2, db_expr_t dummy3, char *dummy4)

Callers 1

db_commandFunction · 0.85

Calls 7

db_expressionFunction · 0.85
db_printfFunction · 0.85
db_flush_lexFunction · 0.85
db_read_tokenFunction · 0.85
db_unread_tokenFunction · 0.85
db_skip_to_eolFunction · 0.85
db_disable_pagerFunction · 0.85

Tested by

no test coverage detected