~luke-jr/moo/unknown_bifuncs

« back to all changes in this revision

Viewing changes to server.c

  • Committer: Luke Dashjr
  • Date: 2009-04-04 06:25:55 UTC
  • Revision ID: luke+bzr@dashjr.org-20090404062555-9rsl5g8orqz304p2
Preserve unknown built-in function calls

https://sourceforge.net/tracker/download.php?group_id=3692&atid=303692&file_id=80808&aid=920399
https://sourceforge.net/tracker/?func=detail&aid=920399&group_id=3692&atid=303692

Show diffs side-by-side

added added

removed removed

Lines of Context:
681
681
        if (!line)
682
682
            start_ok = 0;       /* treat EOF as "quit" */
683
683
        else if (*line == ';') {        /* eval command */
684
 
            Var code, errors;
 
684
            Var code, errors, warnings;
685
685
            Program *program;
686
686
            Var str;
 
687
                int i;
687
688
 
688
689
            str.type = TYPE_STR;
689
690
            code = new_list(0);
717
718
            str.v.str = str_dup(";");
718
719
            code = listappend(code, str);
719
720
 
720
 
            program = parse_list_as_program(code, &errors);
 
721
            program = parse_list_as_program(code, &errors, &warnings);
721
722
            free_var(code);
722
 
            if (program) {
 
723
                
 
724
                if (warnings.v.list[0].v.num) {
 
725
                printf("** %d warnings during parsing:\n",
 
726
                                                        warnings.v.list[0].v.num);
 
727
                        for (i = 1; i <= warnings.v.list[0].v.num; i++)
 
728
                                printf("  %s\n", warnings.v.list[i].v.str);
 
729
                }
 
730
                
 
731
                if (program) {
723
732
                Var result;
724
733
 
725
734
                switch (run_server_program_task(NOTHING, "emergency_mode",
740
749
                }
741
750
                free_program(program);
742
751
            } else {
743
 
                int i;
744
 
 
745
752
                printf("** %d errors during parsing:\n",
746
753
                       errors.v.list[0].v.num);
747
754
                for (i = 1; i <= errors.v.list[0].v.num; i++)
766
773
                                              &message, &vname);
767
774
                printf("%s\n", message);
768
775
                if (h.ptr) {
769
 
                    Var code, str, errors;
 
776
                    Var code, str, errors, warnings;
770
777
                    char *line;
771
778
                    Program *program;
 
779
                        int i;
772
780
 
773
781
                    code = new_list(0);
774
782
                    str.type = TYPE_STR;
778
786
                        code = listappend(code, str);
779
787
                    }
780
788
 
781
 
                    program = parse_list_as_program(code, &errors);
782
 
                    if (program) {
 
789
                    program = parse_list_as_program(code, &errors, &warnings);
 
790
                
 
791
                        if (warnings.v.list[0].v.num) {
 
792
                                printf("** %d warnings during parsing:\n",
 
793
                                                                        warnings.v.list[0].v.num);
 
794
                                for (i = 1; i <= warnings.v.list[0].v.num; i++)
 
795
                                        printf("  %s\n", warnings.v.list[i].v.str);
 
796
                        }
 
797
                    
 
798
                        if (program) {
783
799
                        db_set_verb_program(h, program);
784
800
                        printf("Verb programmed.\n");
785
801
                    } else {
786
 
                        int i;
787
 
 
788
802
                        printf("** %d errors during parsing:\n",
789
803
                               errors.v.list[0].v.num);
790
804
                        for (i = 1; i <= errors.v.list[0].v.num; i++)