Index: trunk/src/board.c =================================================================== --- trunk/src/board.c (revision 5862) +++ trunk/src/board.c (revision 5863) @@ -120,7 +120,7 @@ dpcb = -1; pcb_io_err_inhibit_inc(); - conf_list_foreach_path_first(dpcb, &conf_core.rc.default_pcb_file, pcb_load_pcb(__path__, NULL, pcb_false, 1)); + conf_list_foreach_path_first(dpcb, &conf_core.rc.default_pcb_file, pcb_load_pcb(__path__, NULL, pcb_false, 1 | 0x10)); pcb_io_err_inhibit_dec(); if (dpcb == 0) { Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 5862) +++ trunk/src/buffer.c (revision 5863) @@ -204,7 +204,7 @@ pcb_board_t *newPCB = pcb_board_new(); /* new data isn't added to the undo list */ - if (!pcb_parse_pcb(newPCB, Filename, fmt, CFR_invalid)) { + if (!pcb_parse_pcb(newPCB, Filename, fmt, CFR_invalid, 0)) { /* clear data area and replace pointer */ pcb_buffer_clear(Buffer); free(Buffer->Data); Index: trunk/src/plug_io.c =================================================================== --- trunk/src/plug_io.c (revision 5862) +++ trunk/src/plug_io.c (revision 5863) @@ -103,7 +103,7 @@ } } -int pcb_parse_pcb(pcb_board_t *Ptr, const char *Filename, const char *fmt, int load_settings) +int pcb_parse_pcb(pcb_board_t *Ptr, const char *Filename, const char *fmt, int load_settings, int ignore_missing) { int res = -1, len, n; pcb_find_io_t available[PCB_IO_MAX_FORMATS]; @@ -113,7 +113,8 @@ ft = fopen(Filename, "r"); if (ft == NULL) { - pcb_message(PCB_MSG_ERROR, "Error: can't open %s for reading (format is %s)\n", Filename, fmt); + if (!ignore_missing) + pcb_message(PCB_MSG_ERROR, "Error: can't open %s for reading (format is %s)\n", Filename, fmt); return -1; } @@ -348,7 +349,7 @@ /* mark the default font invalid to know if the file has one */ newPCB->Font.Valid = pcb_false; - switch(how) { + switch(how & 0x0F) { case 0: settings_dest = CFR_DESIGN; break; case 1: settings_dest = CFR_DEFAULTPCB; break; case 2: settings_dest = CFR_invalid; break; @@ -356,7 +357,7 @@ } /* new data isn't added to the undo list */ - if (!pcb_parse_pcb(PCB, new_filename, fmt, settings_dest)) { + if (!pcb_parse_pcb(PCB, new_filename, fmt, settings_dest, how & 0x10)) { pcb_board_remove(oldPCB); pcb_board_new_postproc(PCB, 0); @@ -624,7 +625,7 @@ */ int pcb_revert_pcb(void) { - return real_load_pcb(PCB->Filename, NULL, pcb_true, pcb_true, pcb_true); + return real_load_pcb(PCB->Filename, NULL, pcb_true, pcb_true, 1); } /* --------------------------------------------------------------------------- Index: trunk/src/plug_io.h =================================================================== --- trunk/src/plug_io.h (revision 5862) +++ trunk/src/plug_io.h (revision 5863) @@ -102,7 +102,7 @@ /********** hook wrappers **********/ -int pcb_parse_pcb(pcb_board_t *Ptr, const char *Filename, const char *fmt, int load_settings); +int pcb_parse_pcb(pcb_board_t *Ptr, const char *Filename, const char *fmt, int load_settings, int ignore_missing); int pcb_parse_element(pcb_data_t *Ptr, const char *name); int pcb_parse_font(pcb_font_t *Ptr, char *Filename); int pcb_write_buffer(FILE *f, pcb_buffer_t *buff, const char *fmt); @@ -112,7 +112,7 @@ FILE *pcb_check_and_open_file(const char *, pcb_bool, pcb_bool, pcb_bool *, pcb_bool *); FILE *pcb_open_connection_file(void); int pcb_save_pcb(const char *, const char *fmt); -int pcb_load_pcb(const char *name, const char *fmt, pcb_bool, int how); /* how: 0=normal pcb; 1=default.pcb, 2=misc (do not load settings) */ +int pcb_load_pcb(const char *name, const char *fmt, pcb_bool, int how); /* how: 0=normal pcb; 1=default.pcb, 2=misc (do not load settings) | 0x10: ignore missing file */ void pcb_enable_autosave(void); void pcb_backup(void); void pcb_save_in_tmp(void);