[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: gaf.git: branch: master updated (1.5.2-20090328-159-gdf06479)



The branch, master has been updated
       via  df0647951dc79fe2c8d2f881031e749f8e3e8c4d (commit)
       via  3584484c16a4c0fd15a55e109befc8633f14f698 (commit)
       via  803b0190f3a3d72bffe181f74c6269fa01950500 (commit)
       via  2992b190679b4d351b7990717cc8dc1407c01ec7 (commit)
       via  fc2b205314545d92ea2a7e8f40a7a4c7d5af893d (commit)
       via  590b18a2111b8d86d2962b25f306c88105f06106 (commit)
       via  77d96e9154d9cfc81b25353ef99b8f8f42999bfb (commit)
       via  09fcc6d689defb8f43bfc27aac87ee4ac34ce66a (commit)
       via  433c672579aabb282999377139c9242b319ba044 (commit)
       via  ed7134fd403b9f1dc0a75d50e4e7bcfb2fd95cb8 (commit)
       via  b3e125c3d814f1b4461a85ed2230aac517784477 (commit)
       via  095c1c7dc49321f094bb6aa8c91630673fb826f9 (commit)
       via  d117ca9718e4e5229f37983d9e08a584deb5550b (commit)
       via  df0adced878c8528d14a19fc45c5f8d3bd67ea10 (commit)
       via  a3386972e29cad042a9875743df8d4331b7d9d08 (commit)
       via  a4f28a7217f117b1601561b31c9bf8d1096da25f (commit)
       via  c9dda500098db72d9d0c2dfc984dd543b7cab943 (commit)
       via  75e35a9265199e310e4778773b0b3341659ff4a5 (commit)
       via  03943792b7606534fba0fd4e158dc6ff8d6adb97 (commit)
       via  e55e9e247eb33c4a5be56687b4610c6649ef74d7 (commit)
       via  50854a890f67baa5194b470b14f7ee17051d0393 (commit)
       via  3a4df8fece7656480ebacfa32a08886b0638c826 (commit)
       via  fd9b5bd2f1e99f006bbad9db6d64c29547a5f70c (commit)
       via  7f6a4497b66d7ae8e47089a6a09287d112ac2587 (commit)
       via  8af5fba2ec0248331ceb5d2746771e70b2813004 (commit)
       via  89684e7fb17efa69e0fa897de31219e5a82ba414 (commit)
      from  f23c623d63138a29ef849666942837d42ed3c9dc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 gattrib/.gitignore => .gitignore                   |   24 +-
 gschem/AUTHORS => AUTHORS                          |   38 +-
 utils/gxyrs/COPYING => COPYING                     |    0 
 ChangeLog                                          |   13 +
 Makefile                                           |  851 ---
 Makefile.am                                        |   52 +
 NEWS                                               |  198 +
 README                                             |  235 +-
 autogen.sh                                         |  210 +
 build-tools/.gitignore                             |   10 +
 {gattrib => build-tools}/desktop-i18n              |    9 +-
 {gattrib => build-tools}/icon-theme-installer      |    0 
 configure.ac                                       |  289 +
 docs/.gitignore                                    |    1 +
 docs/AUTHORS                                       |   10 -
 docs/COPYING                                       |  340 -
 docs/ChangeLog                                     |  296 -
 docs/Makefile.am                                   |   17 +-
 docs/README                                        |   37 -
 docs/autogen.sh                                    |  132 -
 docs/configure.ac                                  |   95 -
 docs/scripts/populatemkfiles.sh                    |    2 +-
 docs/toplevel/Makefile.am                          |    2 +-
 docs/wiki/Makefile.am                              |    2 +-
 docs/wiki/_detail/Makefile.am                      |    2 +-
 docs/wiki/_media/Makefile.am                       |    2 +-
 docs/wiki/lib/Makefile.am                          |    2 +-
 docs/wiki/lib/exe/Makefile.am                      |    2 +-
 docs/wiki/lib/images/Makefile.am                   |    2 +-
 docs/wiki/lib/images/fileicons/Makefile.am         |    2 +-
 docs/wiki/lib/images/interwiki/Makefile.am         |    2 +-
 docs/wiki/lib/images/smileys/Makefile.am           |    2 +-
 docs/wiki/lib/plugins/Makefile.am                  |    2 +-
 docs/wiki/lib/plugins/definitionlist/Makefile.am   |    2 +-
 .../lib/plugins/definitionlist/images/Makefile.am  |    2 +-
 docs/wiki/lib/plugins/note/Makefile.am             |    2 +-
 docs/wiki/lib/plugins/note/images/Makefile.am      |    2 +-
 docs/wiki/lib/tpl/Makefile.am                      |    2 +-
 docs/wiki/lib/tpl/geda/Makefile.am                 |    2 +-
 docs/wiki/lib/tpl/geda/images/Makefile.am          |    2 +-
 examples/.gitignore                                |    1 +
 examples/AUTHORS                                   |   12 -
 examples/COPYING                                   |  340 -
 examples/ChangeLog                                 |  267 -
 examples/Makefile.am                               |   20 +-
 examples/RF_Amp/Makefile.am                        |    5 +-
 examples/RF_Amp/model/Makefile.am                  |    2 +-
 examples/RF_Amp/sym/Makefile.am                    |    2 +-
 examples/TwoStageAmp/Makefile.am                   |   12 +-
 examples/TwoStageAmp/models/Makefile.am            |   12 -
 examples/TwoStageAmp/sym/Makefile.am               |   12 -
 examples/autogen.sh                                |  132 -
 examples/configure.ac                              |   52 -
 examples/gTAG/.gitignore                           |    1 +
 examples/gTAG/ChangeLog                            |  147 -
 examples/gTAG/Makefile.am                          |   14 +-
 examples/lightning_detector/Makefile.am            |   12 +-
 examples/lightning_detector/sym/Makefile.am        |   12 -
 gattrib/.gitignore                                 |   19 +-
 gattrib/AUTHORS                                    |   17 -
 gattrib/COPYING                                    |  340 -
 gattrib/ChangeLog                                  | 1419 ----
 gattrib/Makefile.am                                |   26 +-
 gattrib/NEWS                                       |    1 -
 gattrib/autogen.sh                                 |  142 -
 gattrib/configure.ac                               |  436 --
 gattrib/data/Makefile.am                           |    8 +-
 gattrib/design/Makefile.am                         |    2 +-
 gattrib/docs/Makefile.am                           |    4 +-
 gattrib/include/Makefile.am                        |    4 +-
 gattrib/lib/Makefile.am                            |    4 +-
 gattrib/po/Makevars                                |    6 +-
 gattrib/po/POTFILES.in                             |    2 +-
 gattrib/po/de.po                                   |    6 +-
 gattrib/po/es.po                                   |    6 +-
 gattrib/po/nl.po                                   |    6 +-
 gattrib/src/Makefile.am                            |   24 +-
 gattrib/src/g_rc.c                                 |    7 +-
 gattrib/src/gattrib.c                              |    3 +-
 gattrib/src/x_dialog.c                             |    5 +-
 gnetlist/.gitignore                                |    1 +
 gnetlist/AUTHORS                                   |   10 -
 gnetlist/COPYING                                   |  340 -
 gnetlist/ChangeLog                                 | 1721 -----
 gnetlist/Makefile.am                               |   22 +-
 gnetlist/NEWS                                      |    1 -
 gnetlist/README                                    |   54 -
 gnetlist/acinclude.m4                              |   83 -
 gnetlist/autogen.sh                                |  132 -
 gnetlist/configure.ac                              |  437 --
 gnetlist/docs/Makefile.am                          |    7 +-
 gnetlist/docs/vams/Makefile.am                     |    2 +-
 gnetlist/src/Makefile.am                           |   46 +-
 gnetlist/src/g_rc.c                                |    6 +-
 gnetlist/src/gnetlist.c                            |    3 +-
 gnetlist/src/i_vars.c                              |   36 +-
 gnetlist/tests/Makefile.am                         |   10 +-
 gnetlist/tests/common/Makefile.am                  |    4 +-
 gnetlist/tests/common/inputs/gafrc                 |    5 +
 gnetlist/tests/common/run_backend_tests.sh         |   16 +-
 gnetlist/tests/drc2/Makefile.am                    |   20 +-
 gnetlist/tests/drc2/gnetlistrc.drc2                |    5 +-
 gnetlist/tests/gnetlistrc                          |    8 +
 gnetlist/tests/hierarchy/Makefile.am               |   14 +-
 gnetlist/tests/hierarchy/gnetlistrc.hierarchy      |    4 +
 gnetlist/tests/hierarchy2/Makefile.am              |   16 +-
 gnetlist/tests/hierarchy2/gafrc.hierarchy2         |   26 -
 .../gnetlistrc.hierarchy2}                         |    4 +
 gnetlist/tests/runtest.sh                          |    3 +
 gnetlist/utils/Makefile.am                         |    9 +-
 gschem/.gitignore                                  |    1 +
 gschem/COPYING                                     |  340 -
 gschem/ChangeLog                                   | 7094 --------------------
 gschem/Makefile.am                                 |   31 +-
 gschem/README                                      |   54 -
 gschem/autogen.sh                                  |  189 -
 gschem/bitmap/Makefile.am                          |    6 +-
 gschem/configure.ac                                |  532 --
 gschem/data/Makefile.am                            |    6 +-
 gschem/desktop-i18n                                |  538 --
 gschem/docs/Makefile.am                            |    6 +-
 gschem/examples/Makefile.am                        |    7 +-
 gschem/include/Makefile.am                         |    5 +-
 gschem/lib/Makefile.am                             |    6 +-
 gschem/m4/geda-desktop-i18n.m4                     |   78 -
 gschem/po/Makevars                                 |    6 +-
 gschem/po/POTFILES.in                              |  120 +-
 gschem/po/af.po                                    | 1143 ++--
 gschem/po/de.po                                    | 1143 ++--
 gschem/po/en_GB.po                                 | 1143 ++--
 gschem/po/es.po                                    | 1143 ++--
 gschem/po/fr.po                                    | 1143 ++--
 gschem/po/it.po                                    | 1143 ++--
 gschem/po/ja.po                                    | 1143 ++--
 gschem/po/nl.po                                    | 1143 ++--
 gschem/po/pt_BR.po                                 | 1143 ++--
 gschem/po/ru.po                                    | 1143 ++--
 gschem/scheme/Makefile.am                          |    9 +-
 gschem/scripts/.gitignore                          |    1 +
 gschem/scripts/ChangeLog                           |  137 -
 gschem/scripts/Makefile.am                         |   24 +-
 gschem/scripts/config.sh.in                        |   23 -
 gschem/scripts/gschemdoc.sh                        |    5 +
 gschem/src/Makefile.am                             |   52 +-
 gschem/src/create_proto                            |   13 -
 gschem/src/g_rc.c                                  |    6 +-
 gschem/src/gschem.c                                |   11 +-
 gschem/src/i_basic.c                               |    2 +-
 gschem/src/i_vars.c                                |    2 +-
 gschem/src/x_dialog.c                              |    5 +-
 gschem/src/x_event.c                               |   16 +-
 gschem/src/x_stroke.c                              |    4 +-
 gschem/src/x_window.c                              |    2 +-
 gschem/tests/Makefile.am                           |    4 +-
 gsymcheck/.gitignore                               |   24 +-
 gsymcheck/AUTHORS                                  |   10 -
 gsymcheck/COPYING                                  |  340 -
 gsymcheck/ChangeLog                                |  921 ---
 gsymcheck/Makefile.am                              |   22 +-
 gsymcheck/README                                   |   56 -
 gsymcheck/autogen.sh                               |  132 -
 gsymcheck/configure.ac                             |  274 -
 gsymcheck/docs/Makefile.am                         |   27 +-
 gsymcheck/examples/.gitignore                      |    3 -
 gsymcheck/examples/Makefile.am                     |   11 -
 gsymcheck/include/Makefile.am                      |    5 +-
 gsymcheck/lib/Makefile.am                          |    6 +-
 gsymcheck/scheme/.gitignore                        |    3 -
 gsymcheck/scheme/Makefile.am                       |    7 -
 gsymcheck/src/Makefile.am                          |   12 +-
 gsymcheck/src/g_rc.c                               |    5 +-
 gsymcheck/src/gsymcheck.c                          |    1 +
 gsymcheck/tests/Makefile.am                        |    5 +-
 libgeda/.gitignore                                 |   22 +-
 libgeda/AUTHORS                                    |   11 -
 libgeda/COPYING                                    |  340 -
 libgeda/ChangeLog                                  | 5156 --------------
 libgeda/Makefile.am                                |   25 +-
 libgeda/README                                     |   73 -
 libgeda/acinclude.m4                               |   18 -
 libgeda/autogen.sh                                 |  189 -
 libgeda/configure.ac                               |  471 --
 libgeda/data/Makefile.am                           |   21 +-
 libgeda/desktop-i18n                               |  538 --
 libgeda/docs/Makefile.am                           |    4 +-
 libgeda/icon-theme-installer                       |  183 -
 libgeda/include/Makefile.am                        |    4 +-
 libgeda/include/gettext_priv.h                     |    2 +-
 libgeda/lib/Makefile.am                            |    2 +-
 libgeda/lib/system-gafrc                           |    2 +-
 libgeda/m4/geda-desktop-i18n.m4                    |   78 -
 libgeda/po/Makevars                                |    4 +-
 libgeda/po/POTFILES.in                             |   56 +-
 libgeda/po/de.po                                   |  299 +-
 libgeda/po/domain.mak.in                           |    2 +-
 libgeda/po/en_GB.po                                |  295 +-
 libgeda/po/es.po                                   |  299 +-
 libgeda/po/nl.po                                   |  297 +-
 libgeda/scheme/Makefile.am                         |    4 +-
 libgeda/share/Makefile.am                          |    2 +-
 libgeda/src/Makefile.am                            |   48 +-
 libgeda/src/a_basic.c                              |    4 +-
 libgeda/src/create_proto                           |   12 -
 libgeda/src/f_print.c                              |    3 +-
 libgeda/src/libgeda.c                              |    4 +-
 libgeda/src/o_text_basic.c                         |  120 +-
 libgeda/src/s_basic.c                              |   14 +-
 {libgeda/m4 => m4}/.gitignore                      |   18 +-
 m4/geda-assert.m4                                  |   39 +
 m4/geda-awk.m4                                     |   82 +
 m4/geda-data-dirs.m4                               |   74 +
 {gattrib/m4 => m4}/geda-desktop-i18n.m4            |    6 +-
 m4/geda-desktop.m4                                 |  123 +
 m4/geda-doxygen.m4                                 |   64 +
 m4/geda-gcc-flags.m4                               |   32 +
 m4/geda-git-version.m4                             |   69 +
 m4/geda-git.m4                                     |   47 +
 m4/geda-groff.m4                                   |   29 +
 m4/geda-libgeda.m4                                 |   39 +
 m4/geda-stroke.m4                                  |   89 +
 m4/pcb-data-dirs.m4                                |   78 +
 symbols/.gitignore                                 |    1 +
 symbols/COPYING                                    |  340 -
 symbols/ChangeLog                                  |  605 --
 symbols/Makefile.am                                |   26 +-
 symbols/autogen.sh                                 |  132 -
 symbols/configure.ac                               |  125 -
 symbols/documentation/Makefile.am                  |   16 +-
 symbols/font/.gitignore                            |    1 +
 symbols/font/ChangeLog                             |  122 -
 update-changelogs.sh                               |   42 -
 utils/.gitignore                                   |    1 +
 utils/COPYING                                      |  340 -
 utils/ChangeLog                                    | 1067 ---
 utils/Makefile.am                                  |   19 +-
 utils/autogen.sh                                   |  132 -
 utils/configure.ac                                 |  430 --
 utils/docs/Makefile.am                             |    2 +-
 utils/gschlas/Makefile.am                          |   48 +-
 utils/gschlas/g_rc.c                               |    6 +-
 utils/src/Makefile.am                              |   37 +-
 utils/src/grenum.c                                 |    4 +-
 utils/src/gsch2pcb.c                               |   21 +-
 utils/tests/gxyrs/Makefile.am                      |    2 +-
 utils/tests/gxyrs/outputs/Makefile.am              |  400 +-
 ...nits_2mm_6col_tab_notit-protel_example1_mil.txt |   37 -
 ...change_units_bad_column_number1-pcb_example1.xy |   43 -
 ...change_units_bad_column_number2-pcb_example1.xy |   43 -
 ...ge_units_column_number_too_high-pcb_example1.xy |   43 -
 ...ange_units_done_notitle-protel_example1_mil.txt |   37 -
 ...ge_units_negative_column_number-pcb_example1.xy |   43 -
 .../outputs/change_units_no_units-pcb_example1.xy  |   43 -
 ...hange_units_to_mm-protel_example1_mil.txt-error |    4 -
 ...ge_units_to_mm_6col_tab-protel_example1_mil.txt |   37 -
 ...ge_units_to_mm_no_title-protel_example1_mil.txt |   37 -
 ...its_units_not_supported-protel_example1_mil.txt |   37 -
 ...its_2mm_6col_tab_notit-protel_example1_mil.txt} |    0 
 ...mm_6col_tab_notit-protel_example1_mil.txt-error |    0 
 ...> chunits_already_done-protel_example1_mil.txt} |    0 
 ...its_already_done-protel_example1_mil.txt-error} |    0 
 .../chunits_bad_col_num1-pcb_example1.xy}          |    0 
 ... => chunits_bad_col_num1-pcb_example1.xy-error} |    0 
 .../chunits_bad_col_num2-pcb_example1.xy}          |    0 
 ... => chunits_bad_col_num2-pcb_example1.xy-error} |    0 
 .../chunits_col_num_too_high-pcb_example1.xy}      |    0 
 ...chunits_col_num_too_high-pcb_example1.xy-error} |    0 
 ...> chunits_done_notitle-protel_example1_mil.txt} |    0 
 ...nits_done_notitle-protel_example1_mil.txt-error |    0 
 .../chunits_negative_col_num-pcb_example1.xy}      |    0 
 ...chunits_negative_col_num-pcb_example1.xy-error} |    0 
 .../chunits_no_units-pcb_example1.xy}              |    0 
 ...rror => chunits_no_units-pcb_example1.xy-error} |    0 
 ...m.txt => chunits_to_mil-protel_example1_mm.txt} |    0 
 .../chunits_to_mil-protel_example1_mm.txt-error    |    0 
 ...=> chunits_to_mil_2cols-protel_example1_mm.txt} |    0 
 ...units_to_mil_2cols-protel_example1_mm.txt-error |    0 
 ...l.txt => chunits_to_mm-protel_example1_mil.txt} |    0 
 ...=> chunits_to_mm-protel_example1_mil.txt-error} |    0 
 ...=> chunits_to_mm_2cols-protel_example1_mil.txt} |    0 
 ...units_to_mm_2cols-protel_example1_mil.txt-error |    0 
 ...chunits_to_mm_6col_tab-protel_example1_mil.txt} |    0 
 ...s_to_mm_6col_tab-protel_example1_mil.txt-error} |    0 
 ...chunits_to_mm_no_title-protel_example1_mil.txt} |    0 
 ...ts_to_mm_no_title-protel_example1_mil.txt-error |    0 
 ...ts_units_not_supported-protel_example1_mil.txt} |    0 
 ...ts_not_supported-protel_example1_mil.txt-error} |    0 
 ...xample1.xy => del_case_insens1-pcb_example1.xy} |    0 
 .../outputs/del_case_insens1-pcb_example1.xy-error |    0 
 ...xample1.xy => del_case_insens2-pcb_example2.xy} |    0 
 .../outputs/del_case_insens2-pcb_example2.xy-error |    0 
 .../outputs/del_case_insensitive2-pcb_example2.xy  |   32 -
 ..._example1.xy => del_case_sens1-pcb_example1.xy} |    0 
 .../outputs/del_case_sens1-pcb_example1.xy-error   |    0 
 .../del_case_sens2-pcb_example2.xy}                |    0 
 .../outputs/del_case_sens2-pcb_example2.xy-error   |    0 
 .../del_case_sens3-pcb_example1.xy}                |    0 
 .../outputs/del_case_sens3-pcb_example1.xy-error   |    0 
 ..._example1.xy => del_case_sens4-pcb_example2.xy} |    0 
 .../outputs/del_case_sens4-pcb_example2.xy-error   |    0 
 .../outputs/del_case_sensitive1-pcb_example1.xy    |   32 -
 .../outputs/del_case_sensitive2-pcb_example2.xy    |   43 -
 .../outputs/del_case_sensitive3-pcb_example1.xy    |   43 -
 .../outputs/del_case_sensitive4-pcb_example2.xy    |   32 -
 .../del_check_cols_no_match-pcb_example1.xy}       |    0 
 .../del_check_cols_no_match-pcb_example1.xy-error  |    0 
 .../del_check_cols_return_minus1-pcb_example1.xy}  |    0 
 ...check_cols_return_minus1-pcb_example1.xy-error} |    0 
 .../del_check_columns_no_match-pcb_example1.xy     |   43 -
 ...del_check_columns_return_minus1-pcb_example1.xy |   43 -
 .../insert_col_bad_col_num1-pcb_example1.xy}       |    0 
 ... insert_col_bad_col_num1-pcb_example1.xy-error} |    0 
 .../insert_col_bad_col_num2-pcb_example1.xy}       |    0 
 ... insert_col_bad_col_num2-pcb_example1.xy-error} |    0 
 .../insert_col_col_num_too_high-pcb_example1.xy}   |    0 
 ...ert_col_col_num_too_high-pcb_example1.xy-error} |    0 
 ...le1.xy => insert_col_first_pos-pcb_example1.xy} |    0 
 .../insert_col_first_pos-pcb_example1.xy-error     |    0 
 .../insert_col_negative_col_num-pcb_example1.xy}   |    0 
 ...ert_col_negative_col_num-pcb_example1.xy-error} |    0 
 ...e1.xy => insert_col_second_pos-pcb_example1.xy} |    0 
 .../insert_col_second_pos-pcb_example1.xy-error    |    0 
 ...nsert_column_bad_column_number1-pcb_example1.xy |   43 -
 ...nsert_column_bad_column_number2-pcb_example1.xy |   43 -
 ...t_column_column_number_too_high-pcb_example1.xy |   43 -
 ...t_column_negative_column_number-pcb_example1.xy |   43 -
 .../match_col_insens1-pcb_example2.xy}             |    0 
 .../match_col_insens1-pcb_example2.xy-error        |    0 
 .../match_col_insens2-pcb_example2.xy}             |    0 
 .../match_col_insens2-pcb_example2.xy-error        |    0 
 .../match_col_insens3-pcb_example1.xy}             |    0 
 .../match_col_insens3-pcb_example1.xy-error        |    0 
 .../match_col_insens4-pcb_example1.xy}             |    0 
 .../match_col_insens4-pcb_example1.xy-error        |    0 
 .../match_col_is_negative-pcb_example1.xy}         |    0 
 ...=> match_col_is_negative-pcb_example1.xy-error} |    0 
 .../match_col_is_not_num-pcb_example1.xy}          |    0 
 ... => match_col_is_not_num-pcb_example1.xy-error} |    0 
 .../match_col_is_not_num2-pcb_example1.xy}         |    0 
 ...=> match_col_is_not_num2-pcb_example1.xy-error} |    0 
 .../match_col_is_real-pcb_example1.xy}             |    0 
 ...ror => match_col_is_real-pcb_example1.xy-error} |    0 
 .../match_col_is_too_high-pcb_example1.xy}         |    0 
 ...=> match_col_is_too_high-pcb_example1.xy-error} |    0 
 .../match_col_sens1-pcb_example1.xy}               |    0 
 .../outputs/match_col_sens1-pcb_example1.xy-error  |    0 
 .../match_col_sens2-pcb_example1.xy}               |    0 
 .../outputs/match_col_sens2-pcb_example1.xy-error  |    0 
 .../match_col_sens3-pcb_example2.xy}               |    0 
 .../outputs/match_col_sens3-pcb_example2.xy-error  |    0 
 .../match_col_sens4-pcb_example2.xy}               |    0 
 .../outputs/match_col_sens4-pcb_example2.xy-error  |    0 
 .../match_column_insensitive1-pcb_example2.xy      |   43 -
 .../match_column_insensitive2-pcb_example2.xy      |   43 -
 .../match_column_insensitive3-pcb_example1.xy      |   43 -
 .../match_column_insensitive4-pcb_example1.xy      |   43 -
 .../match_column_is_negative-pcb_example1.xy       |   43 -
 .../match_column_is_negative-pcb_example1.xy-error |   70 -
 .../match_column_is_not_number-pcb_example1.xy     |   43 -
 .../match_column_is_not_number2-pcb_example1.xy    |   43 -
 .../outputs/match_column_is_real-pcb_example1.xy   |   43 -
 .../match_column_is_too_high-pcb_example1.xy       |   43 -
 .../match_column_sensitive1-pcb_example1.xy        |   43 -
 .../match_column_sensitive2-pcb_example1.xy        |   43 -
 .../match_column_sensitive3-pcb_example2.xy        |   43 -
 .../match_column_sensitive4-pcb_example2.xy        |   43 -
 .../multiply_bad_col_num1-pcb_example1.xy}         |    0 
 ...=> multiply_bad_col_num1-pcb_example1.xy-error} |    0 
 .../multiply_bad_col_num2-pcb_example1.xy}         |    0 
 ...=> multiply_bad_col_num2-pcb_example1.xy-error} |    0 
 .../multiply_bad_column_number1-pcb_example1.xy    |   43 -
 .../multiply_bad_column_number2-pcb_example1.xy    |   43 -
 .../multiply_col_num_too_high-pcb_example1.xy}     |    0 
 ...ultiply_col_num_too_high-pcb_example1.xy-error} |    0 
 ...multiply_column_number_too_high-pcb_example1.xy |   43 -
 .../multiply_negative_col_num-pcb_example1.xy}     |    0 
 ...ultiply_negative_col_num-pcb_example1.xy-error} |    0 
 ...multiply_negative_column_number-pcb_example1.xy |   43 -
 .../offset_bad_col_num1-pcb_example1.xy}           |    0 
 ...r => offset_bad_col_num1-pcb_example1.xy-error} |    0 
 .../offset_bad_col_num2-pcb_example1.xy}           |    0 
 ...r => offset_bad_col_num2-pcb_example1.xy-error} |    0 
 .../offset_bad_column_number1-pcb_example1.xy      |   43 -
 .../offset_bad_column_number2-pcb_example1.xy      |   43 -
 ....xy => offset_check_cols_match-pcb_example1.xy} |    0 
 .../offset_check_cols_match-pcb_example1.xy-error  |    0 
 .../offset_check_cols_no_match-pcb_example1.xy}    |    0 
 ...ffset_check_cols_no_match-pcb_example1.xy-error |    0 
 ...ffset_check_cols_return_minus1-pcb_example1.xy} |    0 
 ...check_cols_return_minus1-pcb_example1.xy-error} |    0 
 .../offset_check_columns_no_match-pcb_example1.xy  |   43 -
 ...set_check_columns_return_minus1-pcb_example1.xy |   43 -
 ...eck_columns_return_minus1-pcb_example1.xy-error |   70 -
 .../offset_col_num_too_high-pcb_example1.xy}       |    0 
 ... offset_col_num_too_high-pcb_example1.xy-error} |    0 
 .../offset_column_number_too_high-pcb_example1.xy  |   43 -
 .../offset_negative_col_num-pcb_example1.xy}       |    0 
 ... offset_negative_col_num-pcb_example1.xy-error} |    0 
 .../offset_negative_column_number-pcb_example1.xy  |   43 -
 .../panelize_bad_ref_col_num1-pcb_example1.xy}     |    0 
 ...anelize_bad_ref_col_num1-pcb_example1.xy-error} |    0 
 .../panelize_bad_ref_col_num2-pcb_example1.xy}     |    0 
 ...anelize_bad_ref_col_num2-pcb_example1.xy-error} |    0 
 ...panelize_bad_ref_column_number1-pcb_example1.xy |   43 -
 ...panelize_bad_ref_column_number2-pcb_example1.xy |   43 -
 .../panelize_bad_x_col_num1-pcb_example1.xy}       |    0 
 ... panelize_bad_x_col_num1-pcb_example1.xy-error} |    0 
 .../panelize_bad_x_col_num2-pcb_example1.xy}       |    0 
 ... panelize_bad_x_col_num2-pcb_example1.xy-error} |    0 
 .../panelize_bad_x_column_number1-pcb_example1.xy  |   43 -
 ...lize_bad_x_column_number1-pcb_example1.xy-error |   70 -
 .../panelize_bad_x_column_number2-pcb_example1.xy  |   43 -
 ...lize_bad_x_column_number2-pcb_example1.xy-error |   70 -
 .../panelize_bad_y_col_num1-pcb_example1.xy}       |    0 
 ... panelize_bad_y_col_num1-pcb_example1.xy-error} |    0 
 .../panelize_bad_y_col_num2-pcb_example1.xy}       |    0 
 ... panelize_bad_y_col_num2-pcb_example1.xy-error} |    0 
 .../panelize_bad_y_column_number1-pcb_example1.xy  |   43 -
 ...lize_bad_y_column_number1-pcb_example1.xy-error |   70 -
 .../panelize_bad_y_column_number2-pcb_example1.xy  |   43 -
 ...lize_bad_y_column_number2-pcb_example1.xy-error |   70 -
 .../panelize_negative_ref_col_num-pcb_example1.xy} |    0 
 ...ize_negative_ref_col_num-pcb_example1.xy-error} |    0 
 ...lize_negative_ref_column_number-pcb_example1.xy |   43 -
 .../panelize_negative_x_col_num-pcb_example1.xy}   |    0 
 ...elize_negative_x_col_num-pcb_example1.xy-error} |    0 
 ...nelize_negative_x_column_number-pcb_example1.xy |   43 -
 ..._negative_x_column_number-pcb_example1.xy-error |   70 -
 .../panelize_negative_y_col_num-pcb_example1.xy}   |    0 
 ...elize_negative_y_col_num-pcb_example1.xy-error} |    0 
 ...nelize_negative_y_column_number-pcb_example1.xy |   43 -
 ..._negative_y_column_number-pcb_example1.xy-error |   70 -
 .../panelize_ref_col_num_too_high-pcb_example1.xy} |    0 
 ...ize_ref_col_num_too_high-pcb_example1.xy-error} |    0 
 ...lize_ref_column_number_too_high-pcb_example1.xy |   43 -
 .../panelize_x_col_num_too_high-pcb_example1.xy}   |    0 
 ...elize_x_col_num_too_high-pcb_example1.xy-error} |    0 
 ...nelize_x_column_number_too_high-pcb_example1.xy |   43 -
 ..._x_column_number_too_high-pcb_example1.xy-error |   70 -
 .../panelize_y_col_num_too_high-pcb_example1.xy}   |    0 
 ...elize_y_col_num_too_high-pcb_example1.xy-error} |    0 
 ...nelize_y_column_number_too_high-pcb_example1.xy |   43 -
 ..._y_column_number_too_high-pcb_example1.xy-error |   70 -
 .../rotate_bad_col_num1-pcb_example1.xy}           |    0 
 ...r => rotate_bad_col_num1-pcb_example1.xy-error} |    0 
 .../rotate_bad_col_num2-pcb_example1.xy}           |    0 
 ...r => rotate_bad_col_num2-pcb_example1.xy-error} |    0 
 .../rotate_bad_column_number1-pcb_example1.xy      |   43 -
 .../rotate_bad_column_number2-pcb_example1.xy      |   43 -
 ...mple1.xy => rotate_case_insens-pcb_example1.xy} |    0 
 .../rotate_case_insens-pcb_example1.xy-error       |    0 
 ...xample1.xy => rotate_case_sens-pcb_example1.xy} |    0 
 .../outputs/rotate_case_sens-pcb_example1.xy-error |    0 
 .../outputs/rotate_case_sensitive-pcb_example1.xy  |   43 -
 .../rotate_check_cols_no_match-pcb_example1.xy}    |    0 
 ...otate_check_cols_no_match-pcb_example1.xy-error |    0 
 ...otate_check_cols_return_minus1-pcb_example1.xy} |    0 
 ...check_cols_return_minus1-pcb_example1.xy-error} |    0 
 .../rotate_check_columns_no_match-pcb_example1.xy  |   43 -
 ...ate_check_columns_return_minus1-pcb_example1.xy |   43 -
 ...eck_columns_return_minus1-pcb_example1.xy-error |   70 -
 .../rotate_col_num_too_high-pcb_example1.xy}       |    0 
 ... rotate_col_num_too_high-pcb_example1.xy-error} |    0 
 .../rotate_column_number_too_high-pcb_example1.xy  |   43 -
 .../rotate_negative_col_num-pcb_example1.xy}       |    0 
 ... rotate_negative_col_num-pcb_example1.xy-error} |    0 
 .../rotate_negative_column_number-pcb_example1.xy  |   43 -
 .../subst_bad_col_num1-pcb_example1.xy}            |    0 
 ...or => subst_bad_col_num1-pcb_example1.xy-error} |    0 
 .../subst_bad_col_num2-pcb_example1.xy}            |    0 
 ...or => subst_bad_col_num2-pcb_example1.xy-error} |    0 
 .../subst_bad_column_number1-pcb_example1.xy       |   43 -
 .../subst_bad_column_number2-pcb_example1.xy       |   43 -
 ...1.xy => subst_check_cols_match-pcb_example1.xy} |    0 
 .../subst_check_cols_match-pcb_example1.xy-error   |    0 
 .../subst_check_cols_no_match-pcb_example1.xy}     |    0 
 ...subst_check_cols_no_match-pcb_example1.xy-error |    0 
 ...subst_check_cols_return_minus1-pcb_example1.xy} |    0 
 ...check_cols_return_minus1-pcb_example1.xy-error} |    0 
 .../subst_check_columns_no_match-pcb_example1.xy   |   43 -
 ...bst_check_columns_return_minus1-pcb_example1.xy |   43 -
 ...eck_columns_return_minus1-pcb_example1.xy-error |   70 -
 .../subst_col_num_too_high-pcb_example1.xy}        |    0 
 ...> subst_col_num_too_high-pcb_example1.xy-error} |    0 
 .../subst_column_number_too_high-pcb_example1.xy   |   43 -
 .../subst_negative_col_num-pcb_example1.xy}        |    0 
 ...> subst_negative_col_num-pcb_example1.xy-error} |    0 
 .../subst_negative_column_number-pcb_example1.xy   |   43 -
 .../swap_cols_bad_col1_num1-pcb_example1.xy}       |    0 
 ... swap_cols_bad_col1_num1-pcb_example1.xy-error} |    0 
 .../swap_cols_bad_col1_num2-pcb_example1.xy}       |    0 
 ... swap_cols_bad_col1_num2-pcb_example1.xy-error} |    0 
 .../swap_cols_bad_col2_num1-pcb_example1.xy}       |    0 
 ... swap_cols_bad_col2_num1-pcb_example1.xy-error} |    0 
 .../swap_cols_bad_col2_num2-pcb_example1.xy}       |    0 
 ... swap_cols_bad_col2_num2-pcb_example1.xy-error} |    0 
 .../swap_cols_col1_num_too_high-pcb_example1.xy}   |    0 
 ...p_cols_col1_num_too_high-pcb_example1.xy-error} |    0 
 .../swap_cols_col2_num_too_high-pcb_example1.xy}   |    0 
 ...p_cols_col2_num_too_high-pcb_example1.xy-error} |    0 
 .../swap_cols_negative_col1_num-pcb_example1.xy}   |    0 
 ...p_cols_negative_col1_num-pcb_example1.xy-error} |    0 
 .../swap_cols_negative_col2_num-pcb_example1.xy}   |    0 
 ...p_cols_negative_col2_num-pcb_example1.xy-error} |    0 
 .../swap_cols_no_match-pcb_example1.xy}            |    0 
 .../swap_cols_no_match-pcb_example1.xy-error       |    0 
 ...1.xy => swap_cols_no_matchlist-pcb_example1.xy} |    0 
 .../swap_cols_no_matchlist-pcb_example1.xy-error   |    0 
 ...le1.xy => swap_cols_with_match-pcb_example1.xy} |    0 
 .../swap_cols_with_match-pcb_example1.xy-error     |    0 
 ...wap_columns_bad_column1_number1-pcb_example1.xy |   43 -
 ...wap_columns_bad_column1_number2-pcb_example1.xy |   43 -
 ...wap_columns_bad_column2_number1-pcb_example1.xy |   43 -
 ...lumns_bad_column2_number1-pcb_example1.xy-error |   70 -
 ...wap_columns_bad_column2_number2-pcb_example1.xy |   43 -
 ...lumns_bad_column2_number2-pcb_example1.xy-error |   70 -
 ...columns_column1_number_too_high-pcb_example1.xy |   43 -
 ...columns_column2_number_too_high-pcb_example1.xy |   43 -
 ...s_column2_number_too_high-pcb_example1.xy-error |   70 -
 ...columns_negative_column1_number-pcb_example1.xy |   43 -
 ...columns_negative_column2_number-pcb_example1.xy |   43 -
 ...s_negative_column2_number-pcb_example1.xy-error |   70 -
 .../outputs/swap_columns_no_match-pcb_example1.xy  |   43 -
 .../translate_bad_col_num1-pcb_example1.xy}        |    0 
 ...> translate_bad_col_num1-pcb_example1.xy-error} |    0 
 .../translate_bad_col_num2-pcb_example1.xy}        |    0 
 ...> translate_bad_col_num2-pcb_example1.xy-error} |    0 
 .../translate_bad_column_number1-pcb_example1.xy   |   43 -
 .../translate_bad_column_number2-pcb_example1.xy   |   43 -
 ...late_col_R10_value_case_insens-pcb_example1.xy} |    0 
 ...col_R10_value_case_insens-pcb_example1.xy-error |    0 
 ...translate_col_change_R10_value-pcb_example1.xy} |    0 
 ...late_col_change_R10_value-pcb_example1.xy-error |    0 
 ...te_col_change_all_value_plus_k-pcb_example1.xy} |    0 
 ...l_change_all_value_plus_k-pcb_example1.xy-error |    0 
 .../translate_col_no_match1-pcb_example1.xy}       |    0 
 .../translate_col_no_match1-pcb_example1.xy-error  |    0 
 .../translate_col_no_match2-pcb_example1.xy}       |    0 
 .../translate_col_no_match2-pcb_example1.xy-error  |    0 
 .../translate_col_num_too_high-pcb_example1.xy}    |    0 
 ...anslate_col_num_too_high-pcb_example1.xy-error} |    0 
 .../translate_column_no_match1-pcb_example1.xy     |   43 -
 .../translate_column_no_match2-pcb_example1.xy     |   43 -
 ...ranslate_column_number_too_high-pcb_example1.xy |   43 -
 .../translate_negative_col_num-pcb_example1.xy}    |    0 
 ...anslate_negative_col_num-pcb_example1.xy-error} |    0 
 ...ranslate_negative_column_number-pcb_example1.xy |   43 -
 utils/tests/gxyrs/tests.list                       |  200 +-
 utils/tests/refdes_renum/Makefile.am               |    2 +-
 version.h.in                                       |   11 +
 549 files changed, 9217 insertions(+), 41090 deletions(-)
 copy gattrib/.gitignore => .gitignore (55%)
 rename gschem/AUTHORS => AUTHORS (75%)
 copy utils/gxyrs/COPYING => COPYING (100%)
 create mode 100644 ChangeLog
 delete mode 100644 Makefile
 create mode 100644 Makefile.am
 create mode 100644 NEWS
 create mode 100755 autogen.sh
 create mode 100644 build-tools/.gitignore
 rename {gattrib => build-tools}/desktop-i18n (99%)
 rename {gattrib => build-tools}/icon-theme-installer (100%)
 create mode 100644 configure.ac
 delete mode 100644 docs/AUTHORS
 delete mode 100644 docs/COPYING
 delete mode 100644 docs/ChangeLog
 delete mode 100644 docs/README
 delete mode 100755 docs/autogen.sh
 delete mode 100644 docs/configure.ac
 delete mode 100644 examples/AUTHORS
 delete mode 100644 examples/COPYING
 delete mode 100644 examples/ChangeLog
 delete mode 100644 examples/NEWS
 delete mode 100644 examples/TwoStageAmp/models/Makefile.am
 delete mode 100644 examples/TwoStageAmp/sym/Makefile.am
 delete mode 100755 examples/autogen.sh
 delete mode 100644 examples/configure.ac
 delete mode 100644 examples/gTAG/ChangeLog
 delete mode 100644 examples/lightning_detector/sym/Makefile.am
 delete mode 100644 gattrib/AUTHORS
 delete mode 100644 gattrib/COPYING
 delete mode 100644 gattrib/ChangeLog
 delete mode 100644 gattrib/NEWS
 delete mode 100755 gattrib/autogen.sh
 delete mode 100644 gattrib/configure.ac
 delete mode 100644 gnetlist/AUTHORS
 delete mode 100644 gnetlist/COPYING
 delete mode 100644 gnetlist/ChangeLog
 delete mode 100644 gnetlist/NEWS
 delete mode 100644 gnetlist/README
 delete mode 100644 gnetlist/acinclude.m4
 delete mode 100755 gnetlist/autogen.sh
 delete mode 100644 gnetlist/configure.ac
 create mode 100644 gnetlist/tests/gnetlistrc
 delete mode 100644 gnetlist/tests/hierarchy2/gafrc.hierarchy2
 copy gnetlist/tests/{hierarchy/gnetlistrc.hierarchy => hierarchy2/gnetlistrc.hierarchy2} (79%)
 delete mode 100644 gschem/COPYING
 delete mode 100644 gschem/ChangeLog
 delete mode 100644 gschem/NEWS
 delete mode 100644 gschem/README
 delete mode 100755 gschem/autogen.sh
 delete mode 100644 gschem/configure.ac
 delete mode 100755 gschem/desktop-i18n
 delete mode 100644 gschem/m4/geda-desktop-i18n.m4
 delete mode 100644 gschem/scripts/ChangeLog
 delete mode 100644 gschem/scripts/config.sh.in
 delete mode 100755 gschem/src/create_proto
 delete mode 100644 gsymcheck/AUTHORS
 delete mode 100644 gsymcheck/COPYING
 delete mode 100644 gsymcheck/ChangeLog
 delete mode 100644 gsymcheck/NEWS
 delete mode 100644 gsymcheck/README
 delete mode 100755 gsymcheck/autogen.sh
 delete mode 100644 gsymcheck/configure.ac
 delete mode 100644 gsymcheck/examples/.gitignore
 delete mode 100644 gsymcheck/examples/Makefile.am
 delete mode 100644 gsymcheck/scheme/.gitignore
 delete mode 100644 gsymcheck/scheme/Makefile.am
 delete mode 100644 libgeda/AUTHORS
 delete mode 100644 libgeda/COPYING
 delete mode 100644 libgeda/ChangeLog
 delete mode 100644 libgeda/NEWS
 delete mode 100644 libgeda/README
 delete mode 100644 libgeda/acinclude.m4
 delete mode 100755 libgeda/autogen.sh
 delete mode 100644 libgeda/configure.ac
 delete mode 100755 libgeda/desktop-i18n
 delete mode 100755 libgeda/icon-theme-installer
 delete mode 100644 libgeda/m4/geda-desktop-i18n.m4
 delete mode 100755 libgeda/src/create_proto
 copy {libgeda/m4 => m4}/.gitignore (100%)
 create mode 100644 m4/geda-assert.m4
 create mode 100644 m4/geda-awk.m4
 create mode 100644 m4/geda-data-dirs.m4
 rename {gattrib/m4 => m4}/geda-desktop-i18n.m4 (94%)
 create mode 100644 m4/geda-desktop.m4
 create mode 100644 m4/geda-doxygen.m4
 create mode 100644 m4/geda-gcc-flags.m4
 create mode 100644 m4/geda-git-version.m4
 create mode 100644 m4/geda-git.m4
 create mode 100644 m4/geda-groff.m4
 create mode 100644 m4/geda-libgeda.m4
 create mode 100644 m4/geda-stroke.m4
 create mode 100644 m4/pcb-data-dirs.m4
 delete mode 100644 symbols/COPYING
 delete mode 100644 symbols/ChangeLog
 delete mode 100644 symbols/NEWS
 delete mode 100755 symbols/autogen.sh
 delete mode 100644 symbols/configure.ac
 delete mode 100644 symbols/font/ChangeLog
 delete mode 100755 update-changelogs.sh
 delete mode 100644 utils/COPYING
 delete mode 100644 utils/ChangeLog
 delete mode 100644 utils/NEWS
 delete mode 100755 utils/autogen.sh
 delete mode 100644 utils/configure.ac
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt-error
 delete mode 100644 utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt
 copy utils/tests/gxyrs/{inputs/protel_example1_mm.txt => outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt-error (100%)
 copy utils/tests/gxyrs/outputs/{change_units_already_done-protel_example1_mil.txt => chunits_already_done-protel_example1_mil.txt} (100%)
 copy utils/tests/gxyrs/outputs/{change_units_already_done-protel_example1_mil.txt-error => chunits_already_done-protel_example1_mil.txt-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/chunits_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_bad_column_number1-pcb_example1.xy-error => chunits_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/chunits_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_bad_column_number2-pcb_example1.xy-error => chunits_bad_col_num2-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/chunits_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_column_number_too_high-pcb_example1.xy-error => chunits_col_num_too_high-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/outputs/{change_units_already_done-protel_example1_mil.txt => chunits_done_notitle-protel_example1_mil.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/chunits_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_negative_column_number-pcb_example1.xy-error => chunits_negative_col_num-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/chunits_no_units-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_no_units-pcb_example1.xy-error => chunits_no_units-pcb_example1.xy-error} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_to_mil-protel_example1_mm.txt => chunits_to_mil-protel_example1_mm.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt-error (100%)
 rename utils/tests/gxyrs/outputs/{change_units_to_mil_2cols-protel_example1_mm.txt => chunits_to_mil_2cols-protel_example1_mm.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt-error (100%)
 copy utils/tests/gxyrs/outputs/{change_units_to_mm-protel_example1_mil.txt => chunits_to_mm-protel_example1_mil.txt} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_already_done-protel_example1_mil.txt-error => chunits_to_mm-protel_example1_mil.txt-error} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_to_mm_2cols-protel_example1_mil.txt => chunits_to_mm_2cols-protel_example1_mil.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt-error (100%)
 copy utils/tests/gxyrs/{inputs/protel_example1_mm.txt => outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_to_mm_6col_tab-protel_example1_mil.txt-error => chunits_to_mm_6col_tab-protel_example1_mil.txt-error} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_to_mm-protel_example1_mil.txt => chunits_to_mm_no_title-protel_example1_mil.txt} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt-error (100%)
 rename utils/tests/gxyrs/outputs/{change_units_already_done-protel_example1_mil.txt => chunits_units_not_supported-protel_example1_mil.txt} (100%)
 rename utils/tests/gxyrs/outputs/{change_units_units_not_supported-protel_example1_mil.txt-error => chunits_units_not_supported-protel_example1_mil.txt-error} (100%)
 copy utils/tests/gxyrs/outputs/{del_case_insensitive1-pcb_example1.xy => del_case_insens1-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/outputs/{del_case_insensitive1-pcb_example1.xy => del_case_insens2-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy-error
 copy utils/tests/gxyrs/outputs/{del_case_insensitive1-pcb_example1.xy => del_case_sens1-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example2.xy => outputs/del_case_sens2-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/del_case_sens3-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy-error (100%)
 rename utils/tests/gxyrs/outputs/{del_case_insensitive1-pcb_example1.xy => del_case_sens4-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/del_check_cols_no_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/del_check_cols_return_minus1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{del_check_columns_return_minus1-pcb_example1.xy-error => del_check_cols_return_minus1-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/insert_col_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_bad_column_number1-pcb_example1.xy-error => insert_col_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/insert_col_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_bad_column_number2-pcb_example1.xy-error => insert_col_bad_col_num2-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/insert_col_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_column_number_too_high-pcb_example1.xy-error => insert_col_col_num_too_high-pcb_example1.xy-error} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_first_pos-pcb_example1.xy => insert_col_first_pos-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/insert_col_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_negative_column_number-pcb_example1.xy-error => insert_col_negative_col_num-pcb_example1.xy-error} (100%)
 rename utils/tests/gxyrs/outputs/{insert_column_second_pos-pcb_example1.xy => insert_col_second_pos-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example2.xy => outputs/match_col_insens1-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example2.xy => outputs/match_col_insens2-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_insens3-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_insens4-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_is_negative-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{del_check_columns_return_minus1-pcb_example1.xy-error => match_col_is_negative-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_is_not_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{match_column_is_not_number-pcb_example1.xy-error => match_col_is_not_num-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_is_not_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{match_column_is_not_number2-pcb_example1.xy-error => match_col_is_not_num2-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_is_real-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{match_column_is_real-pcb_example1.xy-error => match_col_is_real-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_is_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{match_column_is_too_high-pcb_example1.xy-error => match_col_is_too_high-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_sens1-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/match_col_sens2-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example2.xy => outputs/match_col_sens3-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example2.xy => outputs/match_col_sens4-pcb_example2.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy
 delete mode 100644 utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/multiply_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{multiply_bad_column_number1-pcb_example1.xy-error => multiply_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/multiply_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{multiply_bad_column_number2-pcb_example1.xy-error => multiply_bad_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/multiply_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{multiply_column_number_too_high-pcb_example1.xy-error => multiply_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/multiply_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{multiply_negative_column_number-pcb_example1.xy-error => multiply_negative_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{offset_bad_column_number1-pcb_example1.xy-error => offset_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{offset_bad_column_number2-pcb_example1.xy-error => offset_bad_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy
 rename utils/tests/gxyrs/outputs/{offset_check_columns_match-pcb_example1.xy => offset_check_cols_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_check_cols_no_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_check_cols_return_minus1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{del_check_columns_return_minus1-pcb_example1.xy-error => offset_check_cols_return_minus1-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{offset_column_number_too_high-pcb_example1.xy-error => offset_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/offset_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{offset_negative_column_number-pcb_example1.xy-error => offset_negative_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_ref_col_num1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number1-pcb_example1.xy-error => panelize_bad_ref_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_ref_col_num2-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number2-pcb_example1.xy-error => panelize_bad_ref_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_x_col_num1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number1-pcb_example1.xy-error => panelize_bad_x_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_x_col_num2-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number2-pcb_example1.xy-error => panelize_bad_x_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_y_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number1-pcb_example1.xy-error => panelize_bad_y_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_bad_y_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{panelize_bad_ref_column_number2-pcb_example1.xy-error => panelize_bad_y_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_negative_ref_col_num-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_negative_ref_column_number-pcb_example1.xy-error => panelize_negative_ref_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_negative_x_col_num-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_negative_ref_column_number-pcb_example1.xy-error => panelize_negative_x_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_negative_y_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{panelize_negative_ref_column_number-pcb_example1.xy-error => panelize_negative_y_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_ref_col_num_too_high-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_ref_column_number_too_high-pcb_example1.xy-error => panelize_ref_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_x_col_num_too_high-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{panelize_ref_column_number_too_high-pcb_example1.xy-error => panelize_x_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/panelize_y_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{panelize_ref_column_number_too_high-pcb_example1.xy-error => panelize_y_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{rotate_bad_column_number1-pcb_example1.xy-error => rotate_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{rotate_bad_column_number2-pcb_example1.xy-error => rotate_bad_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy
 copy utils/tests/gxyrs/outputs/{rotate_case_insensitive-pcb_example1.xy => rotate_case_insens-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy-error
 rename utils/tests/gxyrs/outputs/{rotate_case_insensitive-pcb_example1.xy => rotate_case_sens-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_check_cols_no_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_check_cols_return_minus1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{del_check_columns_return_minus1-pcb_example1.xy-error => rotate_check_cols_return_minus1-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{rotate_column_number_too_high-pcb_example1.xy-error => rotate_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/rotate_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{rotate_negative_column_number-pcb_example1.xy-error => rotate_negative_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{subst_bad_column_number1-pcb_example1.xy-error => subst_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{subst_bad_column_number2-pcb_example1.xy-error => subst_bad_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy
 rename utils/tests/gxyrs/outputs/{subst_check_columns_match-pcb_example1.xy => subst_check_cols_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_check_cols_no_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_check_cols_return_minus1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{del_check_columns_return_minus1-pcb_example1.xy-error => subst_check_cols_return_minus1-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{subst_column_number_too_high-pcb_example1.xy-error => subst_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/subst_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{subst_negative_column_number-pcb_example1.xy-error => subst_negative_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_bad_col1_num1-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{swap_columns_bad_column1_number1-pcb_example1.xy-error => swap_cols_bad_col1_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_bad_col1_num2-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{swap_columns_bad_column1_number2-pcb_example1.xy-error => swap_cols_bad_col1_num2-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_bad_col2_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_bad_column1_number1-pcb_example1.xy-error => swap_cols_bad_col2_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_bad_col2_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_bad_column1_number2-pcb_example1.xy-error => swap_cols_bad_col2_num2-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_col1_num_too_high-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{swap_columns_column1_number_too_high-pcb_example1.xy-error => swap_cols_col1_num_too_high-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_col2_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_column1_number_too_high-pcb_example1.xy-error => swap_cols_col2_num_too_high-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_negative_col1_num-pcb_example1.xy} (100%)
 copy utils/tests/gxyrs/outputs/{swap_columns_negative_column1_number-pcb_example1.xy-error => swap_cols_negative_col1_num-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_negative_col2_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_negative_column1_number-pcb_example1.xy-error => swap_cols_negative_col2_num-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/swap_cols_no_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy-error (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_no_matchlist-pcb_example1.xy => swap_cols_no_matchlist-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy-error (100%)
 rename utils/tests/gxyrs/outputs/{swap_columns_with_match-pcb_example1.xy => swap_cols_with_match-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy-error
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_bad_col_num1-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{translate_bad_column_number1-pcb_example1.xy-error => translate_bad_col_num1-pcb_example1.xy-error} (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_bad_col_num2-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{translate_bad_column_number2-pcb_example1.xy-error => translate_bad_col_num2-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy
 rename utils/tests/gxyrs/outputs/{translate_col_R10_value_case_insensitive-pcb_example1.xy => translate_col_R10_value_case_insens-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy-error (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy-error
 rename utils/tests/gxyrs/outputs/{translate_column_change_R10_value-pcb_example1.xy => translate_col_change_R10_value-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy-error (100%)
 rename utils/tests/gxyrs/outputs/{translate_column_change_all_value_plus_k-pcb_example1.xy => translate_col_change_all_value_plus_k-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_col_no_match1-pcb_example1.xy} (100%)
 copy docs/NEWS => utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_col_no_match2-pcb_example1.xy} (100%)
 rename docs/NEWS => utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy-error (100%)
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_col_num_too_high-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{translate_column_number_too_high-pcb_example1.xy-error => translate_col_num_too_high-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy-error
 delete mode 100644 utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy
 copy utils/tests/gxyrs/{inputs/pcb_example1.xy => outputs/translate_negative_col_num-pcb_example1.xy} (100%)
 rename utils/tests/gxyrs/outputs/{translate_negative_column_number-pcb_example1.xy-error => translate_negative_col_num-pcb_example1.xy-error} (100%)
 delete mode 100644 utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy
 create mode 100644 version.h.in


=================
 Commit Messages
=================

commit 3584484c16a4c0fd15a55e109befc8633f14f698
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Don't use Automake 'foreign' argument.
    
    Now that we have all the required top-level documentation etc, we
    don't need the 'foreign' argument to AM_INIT_AUTOMAKE.

:100644 100644 17d2b29... 71a6c33... M	configure.ac

commit 803b0190f3a3d72bffe181f74c6269fa01950500
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Tell tests how to find uninstalled files.
    
    Tell test how to find the symbols and config files they need without
    installing them.  Mostly horrible hacks:
    
    - gnetlistrc files were added to every test directory to explicitly
      load the component libraries required by the test.
    
    - The GEDADATARC environment variable was set to allow the tests to
      load the appropriate system-<app>rc file.  Unfortunately, it wasn't
      possible to get the tests to load system-gafrc.
    
    - Some careful choices of whether to use ${srcdir} or ${builddir}.
    
    With this commit, make distcheck once again passes.

:100644 100644 5dc5d20... b70370b... M	gnetlist/tests/Makefile.am
:100644 100644 b198d79... e5072b9... M	gnetlist/tests/common/inputs/gafrc
:100755 100755 042b201... 219e3b1... M	gnetlist/tests/common/run_backend_tests.sh
:100644 100644 9be1840... 52da26f... M	gnetlist/tests/drc2/Makefile.am
:100644 100644 1854057... 84ac1fa... M	gnetlist/tests/drc2/gnetlistrc.drc2
:000000 100644 0000000... 9df03f7... A	gnetlist/tests/gnetlistrc
:100644 100644 eefab65... f2b05f3... M	gnetlist/tests/hierarchy/Makefile.am
:100644 100644 15cb508... cbf1877... M	gnetlist/tests/hierarchy/gnetlistrc.hierarchy
:100644 100644 0192f12... 7a4a34b... M	gnetlist/tests/hierarchy2/Makefile.am
:100644 000000 15cb508... 0000000... D	gnetlist/tests/hierarchy2/gafrc.hierarchy2
:000000 100644 0000000... 7b093d0... A	gnetlist/tests/hierarchy2/gnetlistrc.hierarchy2
:100755 100755 381f5e5... b0ff718... M	gnetlist/tests/runtest.sh

commit 2992b190679b4d351b7990717cc8dc1407c01ec7
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gsymcheck: Tell tests where to find system-gsymcheckrc.
    
    This is required to get the gsymcheck tests to pass make distcheck.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 c890b95... 248700d... M	gsymcheck/tests/Makefile.am

commit fc2b205314545d92ea2a7e8f40a7a4c7d5af893d
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Don't store git-generated ChangeLog files in repository.
    
    Don't store ChangeLog files in the git repository and have to remember
    to update them each time a release is made.  Instead, get `make dist'
    to create the ChangeLogs for you if a git repository is detected.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 fc8d13f... 17d2b29... M	configure.ac
:100644 100644 596a587... af02301... M	docs/.gitignore
:100644 000000 c16ec61... 0000000... D	docs/ChangeLog
:100644 100644 197b2dc... 6ff029e... M	docs/Makefile.am
:100644 100644 3559de2... e33164f... M	examples/.gitignore
:100644 000000 92c0ca2... 0000000... D	examples/ChangeLog
:100644 100644 d7160cf... 39a1e83... M	examples/Makefile.am
:100644 100644 23c1897... 99c08fe... M	examples/gTAG/.gitignore
:100644 000000 99b95ad... 0000000... D	examples/gTAG/ChangeLog
:100644 100644 bb2849f... 8dd726f... M	examples/gTAG/Makefile.am
:100644 100644 23c1897... 99c08fe... M	gattrib/.gitignore
:100644 000000 4739784... 0000000... D	gattrib/ChangeLog
:100644 100644 fda0a2a... 93cb30c... M	gattrib/Makefile.am
:100644 100644 2d4ca21... 71c8f90... M	gnetlist/.gitignore
:100644 000000 8252074... 0000000... D	gnetlist/ChangeLog
:100644 100644 3fafced... f486cf1... M	gnetlist/Makefile.am
:100644 100644 db9fe06... 8cb9e55... M	gschem/.gitignore
:100644 000000 058f7dd... 0000000... D	gschem/ChangeLog
:100644 100644 9ed6048... f309277... M	gschem/Makefile.am
:100644 100644 826a324... f4ff245... M	gschem/scripts/.gitignore
:100644 000000 61b3185... 0000000... D	gschem/scripts/ChangeLog
:100644 100644 2dd99d1... ab4b3e4... M	gschem/scripts/Makefile.am
:100644 100644 0bfd58c... 402aafc... M	gsymcheck/.gitignore
:100644 000000 a230b05... 0000000... D	gsymcheck/ChangeLog
:100644 100644 8c63960... 40ad7ba... M	gsymcheck/Makefile.am
:100644 100644 81f1686... 220e353... M	libgeda/.gitignore
:100644 000000 30f0ba1... 0000000... D	libgeda/ChangeLog
:100644 100644 0659bf4... 2b9f142... M	libgeda/Makefile.am
:100644 100644 c9844eb... 945c716... M	symbols/.gitignore
:100644 000000 cd69037... 0000000... D	symbols/ChangeLog
:100644 100644 2ed075b... c64e790... M	symbols/Makefile.am
:100644 100644 23c1897... 99c08fe... M	symbols/font/.gitignore
:100644 000000 71ffffc... 0000000... D	symbols/font/ChangeLog
:100755 000000 b52e3fb... 0000000... D	update-changelogs.sh
:100644 100644 a6c1b63... d06d70e... M	utils/.gitignore
:100644 000000 5dcdf8f... 0000000... D	utils/ChangeLog
:100644 100644 06a7f21... 780a655... M	utils/Makefile.am

commit 590b18a2111b8d86d2962b25f306c88105f06106
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add top-level ChangeLog file.
    
    This is just a stop-gap measure.  At some point it might be a good
    idea to just have a single top-level ChangeLog generated with a tool
    like `git2cl'.
    
    Note: make distcheck does not pass in this commit.

:000000 100644 0000000... 57399ab... A	ChangeLog

commit 77d96e9154d9cfc81b25353ef99b8f8f42999bfb
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add top-level NEWS file.
    
    This contains important user-visible changes.  It should be kept
    up-to-date, in order to make writing release notes easier.

:000000 100644 0000000... 64e5e52... A	NEWS
:100644 000000 e69de29... 0000000... D	docs/NEWS
:100644 000000 e69de29... 0000000... D	examples/NEWS
:100644 000000 7165ea6... 0000000... D	gattrib/NEWS
:100644 000000 7165ea6... 0000000... D	gnetlist/NEWS
:100644 000000 e69de29... 0000000... D	gschem/NEWS
:100644 000000 e69de29... 0000000... D	gsymcheck/NEWS
:100644 000000 e69de29... 0000000... D	libgeda/NEWS
:100644 000000 e69de29... 0000000... D	symbols/NEWS
:100644 000000 e69de29... 0000000... D	utils/NEWS

commit 09fcc6d689defb8f43bfc27aac87ee4ac34ce66a
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Update top-level README file.
    
    Well, actually rewrite it entirely.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 6cb43dc... cd3389d... M	README
:100644 000000 ee098ee... 0000000... D	docs/README
:100644 000000 f227e85... 0000000... D	gnetlist/README
:100644 000000 62f78ff... 0000000... D	gschem/README
:100644 000000 73a1a81... 0000000... D	gsymcheck/README
:100644 000000 bdad98e... 0000000... D	libgeda/README

commit 433c672579aabb282999377139c9242b319ba044
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Only need a single `AUTHORS' file.
    
    Move the gschem one to the toplevel (adding several missing names on
    the way), and remove most of the others. The `AUTHORS' files in the
    `symbols' and `utils' directories are retained, because they contain
    some useful information.
    
    Note: make distcheck does not pass in this commit.

:000000 100644 0000000... d03d384... A	AUTHORS
:100644 000000 d21455d... 0000000... D	docs/AUTHORS
:100644 000000 444d097... 0000000... D	examples/AUTHORS
:100644 000000 ec4d3d3... 0000000... D	gattrib/AUTHORS
:100644 100644 4197324... fda0a2a... M	gattrib/Makefile.am
:100644 000000 f0a942c... 0000000... D	gnetlist/AUTHORS
:100644 000000 ebcc176... 0000000... D	gschem/AUTHORS
:100644 000000 01709f9... 0000000... D	gsymcheck/AUTHORS
:100644 000000 a82654d... 0000000... D	libgeda/AUTHORS
:100644 100644 f8c9920... 2ed075b... M	symbols/Makefile.am
:100644 100644 baf7ea5... 06a7f21... M	utils/Makefile.am

commit ed7134fd403b9f1dc0a75d50e4e7bcfb2fd95cb8
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Only need one copy of GPLv2.
    
    Also, update to latest version of GPLv2 (from
    http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt).  This corrects
    the FSF contact address, along with some minor formatting
    modernisations.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 d60c31a... d511905... M	COPYING
:100644 000000 d60c31a... 0000000... D	docs/COPYING
:100644 000000 d60c31a... 0000000... D	examples/COPYING
:100644 000000 d60c31a... 0000000... D	gattrib/COPYING
:100644 100644 898f62e... 4197324... M	gattrib/Makefile.am
:100644 000000 d60c31a... 0000000... D	gnetlist/COPYING
:100644 000000 d60c31a... 0000000... D	gschem/COPYING
:100644 000000 d60c31a... 0000000... D	gsymcheck/COPYING
:100644 000000 d60c31a... 0000000... D	libgeda/COPYING
:100644 000000 d60c31a... 0000000... D	symbols/COPYING
:100644 000000 d60c31a... 0000000... D	utils/COPYING

commit b3e125c3d814f1b4461a85ed2230aac517784477
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add examples to unified build system.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 bfb1fca... 34a331f... M	Makefile.am
:100644 100644 6f80214... fc8d13f... M	configure.ac
:100644 100644 045b71c... d7160cf... M	examples/Makefile.am
:100644 100644 e4d1e96... 08cd055... M	examples/RF_Amp/Makefile.am
:100644 100644 30816cd... 49a122c... M	examples/RF_Amp/model/Makefile.am
:100644 100644 c678e31... 50e595b... M	examples/RF_Amp/sym/Makefile.am
:100644 100644 f019798... 6287724... M	examples/TwoStageAmp/Makefile.am
:100644 000000 6177a23... 0000000... D	examples/TwoStageAmp/models/Makefile.am
:100644 000000 657692a... 0000000... D	examples/TwoStageAmp/sym/Makefile.am
:100644 100644 c88729c... bb2849f... M	examples/gTAG/Makefile.am
:100644 100644 a73f894... 194f195... M	examples/lightning_detector/Makefile.am
:100644 000000 2127991... 0000000... D	examples/lightning_detector/sym/Makefile.am

commit 095c1c7dc49321f094bb6aa8c91630673fb826f9
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add docs to unified build system.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 7241e07... bfb1fca... M	Makefile.am
:100644 100644 1336692... 6f80214... M	configure.ac
:100644 100644 a6f685f... 197b2dc... M	docs/Makefile.am
:100755 100755 1452baf... 8553471... M	docs/scripts/populatemkfiles.sh
:100644 100644 0719a7d... 686483e... M	docs/toplevel/Makefile.am
:100644 100644 8dda3eb... fa8d427... M	docs/wiki/Makefile.am
:100644 100644 7a1e25f... 824de2f... M	docs/wiki/_detail/Makefile.am
:100644 100644 0a2860a... 02832de... M	docs/wiki/_media/Makefile.am
:100644 100644 9db6b57... 928bc60... M	docs/wiki/lib/Makefile.am
:100644 100644 a1bce9b... 3155292... M	docs/wiki/lib/exe/Makefile.am
:100644 100644 ceae568... 3180c77... M	docs/wiki/lib/images/Makefile.am
:100644 100644 105ea2f... 39d9948... M	docs/wiki/lib/images/fileicons/Makefile.am
:100644 100644 f166b5d... af23805... M	docs/wiki/lib/images/interwiki/Makefile.am
:100644 100644 82046ef... 0615d35... M	docs/wiki/lib/images/smileys/Makefile.am
:100644 100644 af10363... 2abed10... M	docs/wiki/lib/plugins/Makefile.am
:100644 100644 8a38c02... a6bc1c7... M	docs/wiki/lib/plugins/definitionlist/Makefile.am
:100644 100644 623a04e... 8cf81aa... M	docs/wiki/lib/plugins/definitionlist/images/Makefile.am
:100644 100644 fd6b028... dca90ce... M	docs/wiki/lib/plugins/note/Makefile.am
:100644 100644 a3fab24... 4c4ac06... M	docs/wiki/lib/plugins/note/images/Makefile.am
:100644 100644 340e11d... aa18857... M	docs/wiki/lib/tpl/Makefile.am
:100644 100644 4bcfe7c... 2faf003... M	docs/wiki/lib/tpl/geda/Makefile.am
:100644 100644 be51681... ce39b5e... M	docs/wiki/lib/tpl/geda/images/Makefile.am

commit d117ca9718e4e5229f37983d9e08a584deb5550b
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add symbols to unified build system.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 b0ef047... 7241e07... M	Makefile.am
:100644 100644 f0ca25e... 1336692... M	configure.ac
:100644 100644 11ef504... f8c9920... M	symbols/Makefile.am
:100644 100644 bbe037c... a9d68e2... M	symbols/documentation/Makefile.am

commit df0adced878c8528d14a19fc45c5f8d3bd67ea10
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add utils to unified build system
    
    Note: make distcheck does not pass in this commit.

:100644 100644 22f303d... b0ef047... M	Makefile.am
:100644 100644 5d9ba1c... f0ca25e... M	configure.ac
:100644 100644 23906bb... baf7ea5... M	utils/Makefile.am
:100644 100644 469aabb... 9fbafbf... M	utils/docs/Makefile.am
:100644 100644 88aa090... ce686e3... M	utils/gschlas/Makefile.am
:100644 100644 8173c54... f733fb5... M	utils/gschlas/g_rc.c
:100644 100644 f2602fd... 0055bd7... M	utils/src/Makefile.am
:100644 100644 73c888a... 921e1a9... M	utils/src/grenum.c
:100644 100644 f8031e7... f859b43... M	utils/src/gsch2pcb.c
:100644 100644 aa78a73... 7cfa32f... M	utils/tests/gxyrs/Makefile.am
:100644 100644 aa78a73... 7cfa32f... M	utils/tests/refdes_renum/Makefile.am

commit a3386972e29cad042a9875743df8d4331b7d9d08
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gnetlist to unified build system.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 c2b60fd... 22f303d... M	Makefile.am
:100644 100644 9fc2724... 5d9ba1c... M	configure.ac
:100644 100644 1f46c9c... 3fafced... M	gnetlist/Makefile.am
:100644 100644 3ca95e8... 44b8a38... M	gnetlist/docs/Makefile.am
:100644 100644 6d69639... b91ba68... M	gnetlist/docs/vams/Makefile.am
:100644 100644 4cb6a0d... 503cebc... M	gnetlist/src/Makefile.am
:100644 100644 b545a55... ea3b2cc... M	gnetlist/src/g_rc.c
:100644 100644 25e5916... 99c0a59... M	gnetlist/src/gnetlist.c
:100644 100644 82c943a... 9be1840... M	gnetlist/tests/drc2/Makefile.am
:100644 100644 d3104a8... eefab65... M	gnetlist/tests/hierarchy/Makefile.am
:100644 100644 56ee141... 0192f12... M	gnetlist/tests/hierarchy2/Makefile.am
:100644 100644 97eab95... 2c94045... M	gnetlist/utils/Makefile.am

commit a4f28a7217f117b1601561b31c9bf8d1096da25f
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gsymcheck to unified build system.
    
    Also removes the empty 'gsymcheck/examples' and 'gsymcheck/scheme'
    directories.
    
    Note: make distcheck does not pass in this commit.

:100644 100644 d926bee... c2b60fd... M	Makefile.am
:100644 100644 104d07a... 9fc2724... M	configure.ac
:100644 100644 b6406a0... 0bfd58c... M	gsymcheck/.gitignore
:100644 100644 3dedaf9... 8c63960... M	gsymcheck/Makefile.am
:100644 100644 1704a98... 8efd255... M	gsymcheck/docs/Makefile.am
:100644 000000 23c1897... 0000000... D	gsymcheck/examples/.gitignore
:100644 000000 27782c3... 0000000... D	gsymcheck/examples/Makefile.am
:100644 100644 d8cfb92... 4c23ce0... M	gsymcheck/include/Makefile.am
:100644 100644 e523c38... f75e916... M	gsymcheck/lib/Makefile.am
:100644 000000 ec52e3c... 0000000... D	gsymcheck/scheme/.gitignore
:100644 000000 678e07e... 0000000... D	gsymcheck/scheme/Makefile.am
:100644 100644 773dd7f... 861817d... M	gsymcheck/src/Makefile.am
:100644 100644 be7b4ea... 97eb4cb... M	gsymcheck/src/g_rc.c
:100644 100644 cb01e8b... 5f7b134... M	gsymcheck/src/gsymcheck.c
:100644 100644 c174cba... c890b95... M	gsymcheck/tests/Makefile.am

commit c9dda500098db72d9d0c2dfc984dd543b7cab943
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gattrib to unified build system.

:100644 100644 1a50836... d926bee... M	Makefile.am
:100755 100755 37c738b... e2786ae... M	autogen.sh
:100644 100644 d3005fb... 104d07a... M	configure.ac
:100644 100644 017310f... 23c1897... M	gattrib/.gitignore
:100644 100644 bef959f... 898f62e... M	gattrib/Makefile.am
:100644 100644 183ce4d... 747cea2... M	gattrib/data/Makefile.am
:100644 100644 8bfda1c... a19c5e0... M	gattrib/design/Makefile.am
:100644 100644 f44e99d... 5733314... M	gattrib/docs/Makefile.am
:100755 000000 e070868... 0000000... D	gattrib/icon-theme-installer
:100644 100644 b94eb41... 3d741d6... M	gattrib/include/Makefile.am
:100644 100644 9aee358... 0eae5b3... M	gattrib/lib/Makefile.am
:100644 100644 9b27ec1... b0f4372... M	gattrib/po/Makevars
:100644 100644 5e76840... 9e7959a... M	gattrib/po/POTFILES.in
:100644 100644 d984cf1... 433f67c... M	gattrib/po/de.po
:100644 100644 2620cb4... df08191... M	gattrib/po/es.po
:100644 100644 a4d2ddc... 83782fb... M	gattrib/po/nl.po
:100644 100644 ab28a33... 509a0ae... M	gattrib/src/Makefile.am
:100644 100644 dd3b0a1... c7eee48... M	gattrib/src/g_rc.c
:100644 100644 46d5954... a84fa78... M	gattrib/src/gattrib.c
:100644 100644 5030788... 314d3a7... M	gattrib/src/x_dialog.c

commit 75e35a9265199e310e4778773b0b3341659ff4a5
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gschem to unified build system.
    
    N.b. gschemdoc is now created directly rather than by prepending
    config.sh.

:100644 100644 3a8a2c8... 1a50836... M	Makefile.am
:100755 100755 e9be5f0... 37c738b... M	autogen.sh
:100644 100644 d43c901... d3005fb... M	configure.ac
:100644 100644 c2d3373... 9ed6048... M	gschem/Makefile.am
:100644 100644 994fcb2... e75da3c... M	gschem/bitmap/Makefile.am
:100644 100644 d05fc30... 79ad4ed... M	gschem/data/Makefile.am
:100644 100644 63dfe31... 6869b31... M	gschem/docs/Makefile.am
:100644 100644 9fb020f... e802f35... M	gschem/examples/Makefile.am
:100644 100644 386c2ef... dda9158... M	gschem/include/Makefile.am
:100644 100644 d2cf22e... 1f1bc15... M	gschem/lib/Makefile.am
:100644 100644 9b27ec1... 18ccd7f... M	gschem/po/Makevars
:100644 100644 10f216a... 26bbea7... M	gschem/po/POTFILES.in
:100644 100644 89324cd... 4f8a660... M	gschem/po/af.po
:100644 100644 646ad13... f8e5775... M	gschem/po/de.po
:100644 100644 e99646c... 7ffd19e... M	gschem/po/en_GB.po
:100644 100644 cf4d5c4... 4d7e315... M	gschem/po/es.po
:100644 100644 cd1b3b6... 5454bd6... M	gschem/po/fr.po
:100644 100644 995da26... 5042d2a... M	gschem/po/it.po
:100644 100644 fcfe716... 0323dae... M	gschem/po/ja.po
:100644 100644 6c0ecf7... cf6ecfd... M	gschem/po/nl.po
:100644 100644 65075d6... 11a3170... M	gschem/po/pt_BR.po
:100644 100644 d08a7ae... 798ef3e... M	gschem/po/ru.po
:100644 100644 6fdb524... ee4f1f2... M	gschem/scheme/Makefile.am
:100644 100644 80938fd... 2dd99d1... M	gschem/scripts/Makefile.am
:100644 000000 6456493... 0000000... D	gschem/scripts/config.sh.in
:100644 100644 7077e82... 8cbfc4b... M	gschem/scripts/gschemdoc.sh
:100644 100644 1aabef4... 75d2047... M	gschem/src/Makefile.am
:100755 000000 7f35331... 0000000... D	gschem/src/create_proto
:100644 100644 88ed0c2... b9d4de9... M	gschem/src/g_rc.c
:100644 100644 805ef75... 718843b... M	gschem/src/gschem.c
:100644 100644 0a60c79... 6f3a76e... M	gschem/src/i_basic.c
:100644 100644 16b221a... 79f40ec... M	gschem/src/i_vars.c
:100644 100644 0c3fb4c... 54992e5... M	gschem/src/x_dialog.c
:100644 100644 e2ef971... 5201876... M	gschem/src/x_event.c
:100644 100644 c3b5216... 2e081a6... M	gschem/src/x_stroke.c
:100644 100644 907ab90... f65704f... M	gschem/src/x_window.c
:100644 100644 a85153a... f8617bf... M	gschem/tests/Makefile.am

commit 03943792b7606534fba0fd4e158dc6ff8d6adb97
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Start implementing unified build system.
    
    Restructuring of build system, including new m4 macros and helper
    programs. Note: only libgeda can be built from this commit.
    
    Important differences from previous versions:
    
     - The tarball is now called gEDA-<version>.tar.gz.
    
     - Documentation is now installed to ${docdir}
    
     - A `version.h' file is generated containing the package version
       strings, including the git commit SHA-1 and the descriptive string
       from `git describe'.  `version.h' is distributed in the source
       tarball so that gEDA can be built without git.

:000000 100644 0000000... 40b0952... A	.gitignore
:000000 100644 0000000... d60c31a... A	COPYING
:000000 100644 0000000... 3a8a2c8... A	Makefile.am
:000000 100755 0000000... e9be5f0... A	autogen.sh
:000000 100644 0000000... 8c96a04... A	build-tools/.gitignore
:000000 100755 0000000... e3c44d4... A	build-tools/desktop-i18n
:000000 100755 0000000... e070868... A	build-tools/icon-theme-installer
:000000 100644 0000000... d43c901... A	configure.ac
:100755 000000 6fab9b8... 0000000... D	gattrib/desktop-i18n
:100644 000000 5b8af4e... 0000000... D	gattrib/m4/geda-desktop-i18n.m4
:100755 000000 6fab9b8... 0000000... D	gschem/desktop-i18n
:100644 000000 5b8af4e... 0000000... D	gschem/m4/geda-desktop-i18n.m4
:100644 100644 a040e48... 81f1686... M	libgeda/.gitignore
:100644 100644 57ced64... 0659bf4... M	libgeda/Makefile.am
:100644 100644 a3671bc... 5f2b000... M	libgeda/data/Makefile.am
:100755 000000 6fab9b8... 0000000... D	libgeda/desktop-i18n
:100644 100644 95465e6... c916658... M	libgeda/docs/Makefile.am
:100755 000000 e070868... 0000000... D	libgeda/icon-theme-installer
:100644 100644 8aab65b... a8bfbef... M	libgeda/include/Makefile.am
:100644 100644 54ed05b... 5a3876e... M	libgeda/include/gettext_priv.h
:100644 100644 5a40a8e... c3f2b84... M	libgeda/lib/Makefile.am
:100644 000000 5b8af4e... 0000000... D	libgeda/m4/geda-desktop-i18n.m4
:100644 100644 e9e8470... 52d8132... M	libgeda/po/Makevars
:100644 100644 1cdd0ce... 41a2a2b... M	libgeda/po/POTFILES.in
:100644 100644 f46030e... 904e55f... M	libgeda/po/de.po
:100644 100644 0e45d8b... a5d0e49... M	libgeda/po/domain.mak.in
:100644 100644 ca09e90... c1cc838... M	libgeda/po/en_GB.po
:100644 100644 0f881f8... 8ac8f0d... M	libgeda/po/es.po
:100644 100644 28d9139... d1ad821... M	libgeda/po/nl.po
:100644 100644 d51e79f... 1a3819e... M	libgeda/scheme/Makefile.am
:100644 100644 e479715... 7a7dfee... M	libgeda/share/Makefile.am
:100644 100644 7c4bf99... 9b98ec9... M	libgeda/src/Makefile.am
:100644 100644 01cfe62... eda38be... M	libgeda/src/a_basic.c
:100755 000000 cc1abe4... 0000000... D	libgeda/src/create_proto
:100644 100644 a4befd6... e601616... M	libgeda/src/f_print.c
:100644 100644 d00345b... 809a1c4... M	libgeda/src/libgeda.c
:100644 100644 7ac3134... 0512945... M	libgeda/src/s_basic.c
:000000 100644 0000000... 521e0d0... A	m4/.gitignore
:000000 100644 0000000... 9c7adb2... A	m4/geda-assert.m4
:000000 100644 0000000... b5ac48e... A	m4/geda-awk.m4
:000000 100644 0000000... 551814a... A	m4/geda-data-dirs.m4
:000000 100644 0000000... c48d4fd... A	m4/geda-desktop-i18n.m4
:000000 100644 0000000... 00b34ad... A	m4/geda-desktop.m4
:000000 100644 0000000... 9e4a1d4... A	m4/geda-doxygen.m4
:000000 100644 0000000... 6884533... A	m4/geda-gcc-flags.m4
:000000 100644 0000000... a0d707f... A	m4/geda-git-version.m4
:000000 100644 0000000... 3d4e1af... A	m4/geda-git.m4
:000000 100644 0000000... 8181a57... A	m4/geda-groff.m4
:000000 100644 0000000... 45846ca... A	m4/geda-libgeda.m4
:000000 100644 0000000... cadaffa... A	m4/geda-stroke.m4
:000000 100644 0000000... 49faf17... A	m4/pcb-data-dirs.m4
:000000 100644 0000000... fa1e599... A	version.h.in

commit e55e9e247eb33c4a5be56687b4610c6649ef74d7
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Remove existing build infrastructure.
    
    This simply strips out all configure, m4 and autogen scripts from the
    whole repository, including the toplevel Makefile.  This commit does
    not compile (what a surprise)!

:100644 000000 9d1f18b... 0000000... D	Makefile
:100755 000000 d5f6367... 0000000... D	docs/autogen.sh
:100644 000000 e1008ac... 0000000... D	docs/configure.ac
:100755 000000 d5f6367... 0000000... D	examples/autogen.sh
:100644 000000 90f61e5... 0000000... D	examples/configure.ac
:100755 000000 ec247af... 0000000... D	gattrib/autogen.sh
:100644 000000 39c66a6... 0000000... D	gattrib/configure.ac
:100644 000000 66be5b7... 0000000... D	gnetlist/acinclude.m4
:100755 000000 d5f6367... 0000000... D	gnetlist/autogen.sh
:100644 000000 17cd24a... 0000000... D	gnetlist/configure.ac
:100755 000000 a987ad5... 0000000... D	gschem/autogen.sh
:100644 000000 36b786f... 0000000... D	gschem/configure.ac
:100755 000000 d5f6367... 0000000... D	gsymcheck/autogen.sh
:100644 000000 f35eff4... 0000000... D	gsymcheck/configure.ac
:100644 000000 df6b582... 0000000... D	libgeda/acinclude.m4
:100755 000000 0c54e28... 0000000... D	libgeda/autogen.sh
:100644 000000 1d6e0a5... 0000000... D	libgeda/configure.ac
:100755 000000 d5f6367... 0000000... D	symbols/autogen.sh
:100644 000000 8aedf15... 0000000... D	symbols/configure.ac
:100755 000000 d5f6367... 0000000... D	utils/autogen.sh
:100644 000000 97910e3... 0000000... D	utils/configure.ac

commit 50854a890f67baa5194b470b14f7ee17051d0393
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Use sane (but uninformative) defaults for config variables.
    
    This stops gnetlist from complaining and calling exit(-1) if
    system-gnetlistrc wasn't loaded.  The defaults used are the same as
    the default settings in system-gnetlistrc, according to the principle
    of least surprise.

:100644 100644 2d2b6b8... 26d58e8... M	gnetlist/src/i_vars.c

commit 3a4df8fece7656480ebacfa32a08886b0638c826
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gxyrs: Reduce length of test filenames.
    
    The `tar' file format (as specified by POSIX) can only handle embedded
    paths up to 99 characters in length.

:100644 100644 a22d567... eec91a1... M	utils/tests/gxyrs/outputs/Makefile.am
:100644 000000 725a003... 0000000... D	utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt-error
:100644 000000 54b8075... 0000000... D	utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt
:100644 000000 08dd3df... 0000000... D	utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy
:100644 000000 5192ce9... 0000000... D	utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy
:100644 000000 ae540a9... 0000000... D	utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy
:100644 000000 1de09fb... 0000000... D	utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy-error
:100644 000000 54b8075... 0000000... D	utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy
:100644 000000 f894d41... 0000000... D	utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy
:100644 000000 f2a1cf3... 0000000... D	utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy-error
:100644 000000 b88c61f... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt-error
:100644 000000 fd3c5ad... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt-error
:100644 000000 4368356... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt
:100644 000000 08dd3df... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt-error
:100644 000000 f726e12... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt-error
:100644 000000 725a003... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt
:100644 000000 cdaacb1... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt-error
:100644 000000 4368356... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt-error
:100644 000000 54b8075... 0000000... D	utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt
:100644 000000 a8c066f... 0000000... D	utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt-error
:000000 100644 0000000... 725a003... A	utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt-error
:000000 100644 0000000... 54b8075... A	utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt
:000000 100644 0000000... 08dd3df... A	utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... 5192ce9... A	utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... ae540a9... A	utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 1de09fb... A	utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy-error
:000000 100644 0000000... 54b8075... A	utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy
:000000 100644 0000000... f894d41... A	utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy
:000000 100644 0000000... f2a1cf3... A	utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy-error
:000000 100644 0000000... b88c61f... A	utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt-error
:000000 100644 0000000... fd3c5ad... A	utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt-error
:000000 100644 0000000... 4368356... A	utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt
:000000 100644 0000000... 08dd3df... A	utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt-error
:000000 100644 0000000... f726e12... A	utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt-error
:000000 100644 0000000... 725a003... A	utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt
:000000 100644 0000000... cdaacb1... A	utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt-error
:000000 100644 0000000... 4368356... A	utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt-error
:000000 100644 0000000... 54b8075... A	utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt
:000000 100644 0000000... a8c066f... A	utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt-error
:000000 100644 0000000... 3d383f4... A	utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy-error
:000000 100644 0000000... 3d383f4... A	utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy-error
:100644 000000 3d383f4... 0000000... D	utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy-error
:100644 000000 3d383f4... 0000000... D	utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy-error
:000000 100644 0000000... 3d383f4... A	utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy-error
:000000 100644 0000000... c1bda42... A	utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy-error
:000000 100644 0000000... 3d383f4... A	utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy-error
:100644 000000 3d383f4... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy-error
:100644 000000 c1bda42... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy-error
:100644 000000 3d383f4... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy
:000000 100644 0000000... d62840d... A	utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy
:100644 000000 d62840d... 0000000... D	utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... 423755a... A	utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... 4bdea7d... A	utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 2478a46... A	utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy-error
:000000 100644 0000000... 6ff6762... A	utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy
:000000 100644 0000000... 29c6356... A	utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy-error
:000000 100644 0000000... 2e4092b... A	utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy
:100644 000000 423755a... 0000000... D	utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy
:100644 000000 4bdea7d... 0000000... D	utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy
:100644 000000 2478a46... 0000000... D	utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy-error
:100644 000000 6ff6762... 0000000... D	utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy
:100644 000000 29c6356... 0000000... D	utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy-error
:100644 000000 2e4092b... 0000000... D	utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy-error
:000000 100644 0000000... c1bda42... A	utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy-error
:000000 100644 0000000... c1bda42... A	utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy
:000000 100644 0000000... d62840d... A	utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy
:000000 100644 0000000... 9b094f0... A	utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy
:000000 100644 0000000... e11f3d4... A	utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy
:000000 100644 0000000... 69dfd65... A	utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy
:000000 100644 0000000... 33b666e... A	utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy-error
:000000 100644 0000000... c1bda42... A	utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy-error
:000000 100644 0000000... c1bda42... A	utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy-error
:100644 000000 c1bda42... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy-error
:100644 000000 c1bda42... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy
:100644 000000 d62840d... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy
:100644 000000 9b094f0... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy
:100644 000000 e11f3d4... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy
:100644 000000 69dfd65... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy
:100644 000000 33b666e... 0000000... D	utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy-error
:100644 000000 c1bda42... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy-error
:100644 000000 c1bda42... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... 6b9b64d... A	utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... c03074e... A	utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy
:100644 000000 6b9b64d... 0000000... D	utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy
:100644 000000 c03074e... 0000000... D	utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 7b1301c... A	utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy
:100644 000000 7b1301c... 0000000... D	utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy
:000000 100644 0000000... 00d3e27... A	utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy
:100644 000000 00d3e27... 0000000... D	utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... 559f994... A	utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... ba3b700... A	utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy
:100644 000000 559f994... 0000000... D	utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy
:100644 000000 ba3b700... 0000000... D	utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy-error
:000000 100644 0000000... fe66459... A	utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy
:000000 100644 0000000... d62840d... A	utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy-error
:100644 000000 fe66459... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy
:100644 000000 d62840d... 0000000... D	utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 2671611... A	utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy
:100644 000000 2671611... 0000000... D	utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy
:000000 100644 0000000... 91cd836... A	utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy
:100644 000000 91cd836... 0000000... D	utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy
:000000 100644 0000000... b12314c... A	utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy
:000000 100644 0000000... 8804054... A	utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy
:100644 000000 b12314c... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy
:100644 000000 8804054... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy
:000000 100644 0000000... b12314c... A	utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy
:000000 100644 0000000... 8804054... A	utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy
:100644 000000 b12314c... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy
:100644 000000 8804054... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy
:000000 100644 0000000... b12314c... A	utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy
:000000 100644 0000000... 8804054... A	utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy
:100644 000000 b12314c... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy
:100644 000000 8804054... 0000000... D	utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy
:000000 100644 0000000... 29fddf4... A	utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy
:100644 000000 29fddf4... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy
:000000 100644 0000000... 29fddf4... A	utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy
:100644 000000 29fddf4... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy
:000000 100644 0000000... 29fddf4... A	utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy
:100644 000000 29fddf4... 0000000... D	utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 8c0e150... A	utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy
:100644 000000 8c0e150... 0000000... D	utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 8c0e150... A	utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy
:100644 000000 8c0e150... 0000000... D	utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 8c0e150... A	utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy
:100644 000000 8c0e150... 0000000... D	utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... cf4c991... A	utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... b806f02... A	utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy
:100644 000000 cf4c991... 0000000... D	utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy
:100644 000000 b806f02... 0000000... D	utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy-error
:000000 100644 0000000... 6fe78d2... A	utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy-error
:100644 000000 6fe78d2... 0000000... D	utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy-error
:000000 100644 0000000... 6fe78d2... A	utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy-error
:100644 000000 6fe78d2... 0000000... D	utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy
:000000 100644 0000000... d62840d... A	utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy
:100644 000000 d62840d... 0000000... D	utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 87e7c6d... A	utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy
:100644 000000 87e7c6d... 0000000... D	utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy
:000000 100644 0000000... 556a5ef... A	utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy
:100644 000000 556a5ef... 0000000... D	utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... e87c6af... A	utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... 7dd1b11... A	utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy
:100644 000000 e87c6af... 0000000... D	utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy
:100644 000000 7dd1b11... 0000000... D	utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy-error
:000000 100644 0000000... 7abaf4d... A	utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy
:000000 100644 0000000... d62840d... A	utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy-error
:100644 000000 7abaf4d... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy
:100644 000000 d62840d... 0000000... D	utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... 2075c59... A	utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy
:100644 000000 2075c59... 0000000... D	utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy
:000000 100644 0000000... c428ba7... A	utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy
:100644 000000 c428ba7... 0000000... D	utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy
:000000 100644 0000000... 24658e1... A	utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy
:000000 100644 0000000... 00f6fde... A	utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy
:000000 100644 0000000... 24658e1... A	utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy
:000000 100644 0000000... 00f6fde... A	utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy
:000000 100644 0000000... 5d891bc... A	utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy
:000000 100644 0000000... 5d891bc... A	utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy
:000000 100644 0000000... 4ed6cf0... A	utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy
:000000 100644 0000000... 4ed6cf0... A	utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy-error
:000000 100644 0000000... acd1c59... A	utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy-error
:000000 100644 0000000... 4baaba0... A	utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy
:100644 000000 24658e1... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy
:100644 000000 00f6fde... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy
:100644 000000 24658e1... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy
:100644 000000 00f6fde... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy
:100644 000000 5d891bc... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy
:100644 000000 5d891bc... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy
:100644 000000 4ed6cf0... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy
:100644 000000 4ed6cf0... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy-error
:100644 000000 acd1c59... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy-error
:100644 000000 4baaba0... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy
:000000 100644 0000000... 7f984fd... A	utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy
:000000 100644 0000000... b7829f3... A	utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy
:100644 000000 7f984fd... 0000000... D	utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy
:100644 000000 b7829f3... 0000000... D	utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy-error
:000000 100644 0000000... 6d4deaa... A	utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy-error
:100644 000000 6d4deaa... 0000000... D	utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy-error
:000000 100644 0000000... 05027e2... A	utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy-error
:000000 100644 0000000... 867ce82... A	utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy
:000000 100644 0000000... e69de29... A	utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy
:000000 100644 0000000... a26d9ad... A	utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy-error
:100644 000000 05027e2... 0000000... D	utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy-error
:100644 000000 867ce82... 0000000... D	utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy
:100644 000000 e69de29... 0000000... D	utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy
:100644 000000 a26d9ad... 0000000... D	utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy-error
:000000 100644 0000000... ee9854b... A	utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy
:000000 100644 0000000... 5f213ba... A	utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy-error
:100644 000000 ee9854b... 0000000... D	utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy
:100644 000000 5f213ba... 0000000... D	utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy-error
:100644 100644 6a0977c... a1ea63f... M	utils/tests/gxyrs/tests.list

commit fd9b5bd2f1e99f006bbad9db6d64c29547a5f70c
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    docs: `datawiki' substitution is never used.
    
    So remove it from the configure script.

:100644 100644 a07341d... e1008ac... M	docs/configure.ac

commit 7f6a4497b66d7ae8e47089a6a09287d112ac2587
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    system-gafrc: Send font warning to stderr.
    
    This stops gnetlist stdout results from differing between the font
    being installed and not installed (and thus breaking preinstall
    tests).

:100644 100644 abbd558... eb5ab1c... M	libgeda/lib/system-gafrc

commit 8af5fba2ec0248331ceb5d2746771e70b2813004
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    libgeda: Cope better with not finding the font.
    
    Calling exit(-1) if the font doesn't appear to have been found is
    stupid and not the way that a library is supposed to do things.
    Instead, use a built-in question mark character '?' for any characters
    that can't be loaded (which, if the font is missing, is all of them).

:100644 100644 c5fbeea... 4a27e8a... M	libgeda/src/o_text_basic.c

commit 89684e7fb17efa69e0fa897de31219e5a82ba414
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Correctly copy golden files to distdir.
    
    This bug was introduced in 1c8b245984, which didn't correctly account
    for out-of-sourcedir builds of the distribution archive.

:100644 100644 a95443b... cb6234b... M	gnetlist/tests/common/Makefile.am

=========
 Changes
=========

commit 3584484c16a4c0fd15a55e109befc8633f14f698
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Don't use Automake 'foreign' argument.
    
    Now that we have all the required top-level documentation etc, we
    don't need the 'foreign' argument to AM_INIT_AUTOMAKE.

diff --git a/configure.ac b/configure.ac
index 17d2b29..71a6c33 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@ AC_CONFIG_AUX_DIR([build-tools])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_HEADER([config.h])
 
-AM_INIT_AUTOMAKE([foreign]) # FIXME we should not need 'foreign'
+AM_INIT_AUTOMAKE
 
 AC_GNU_SOURCE # FIXME for some reason this is needed?
 

commit 803b0190f3a3d72bffe181f74c6269fa01950500
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Tell tests how to find uninstalled files.
    
    Tell test how to find the symbols and config files they need without
    installing them.  Mostly horrible hacks:
    
    - gnetlistrc files were added to every test directory to explicitly
      load the component libraries required by the test.
    
    - The GEDADATARC environment variable was set to allow the tests to
      load the appropriate system-<app>rc file.  Unfortunately, it wasn't
      possible to get the tests to load system-gafrc.
    
    - Some careful choices of whether to use ${srcdir} or ${builddir}.
    
    With this commit, make distcheck once again passes.

diff --git a/gnetlist/tests/Makefile.am b/gnetlist/tests/Makefile.am
index 5dc5d20..b70370b 100644
--- a/gnetlist/tests/Makefile.am
+++ b/gnetlist/tests/Makefile.am
@@ -14,13 +14,13 @@ EXTRA_DIST = runtest.sh \
              singlenet.protelII singlenet.sch stack_1.geda amp.spice-sdb \
 	     singlenet.liquidpcb \
 	     darlington.spice-sdb skt.switcap test.ana multiequal.sch \
-	     multiequal.spice-sdb gnetlistrc.vhdl
+	     multiequal.spice-sdb gnetlistrc.vhdl gnetlistrc
 
 check_SCRIPTS = tests
 
-BUILDDIR=$(top_builddir)/tests
+BUILDDIR=$(builddir)
 SRCDIR=$(srcdir)
-GNETLIST=$(top_builddir)/src/gnetlist
+GNETLIST=$(builddir)/../src/gnetlist
 
 tests:
 
@@ -28,6 +28,7 @@ tests:
 	rm -f $(BUILDDIR)/new_*
 	rm -rf $(BUILDDIR)/devfiles
 	mkdir $(BUILDDIR)/devfiles
+	cp $(srcdir)/gnetlistrc $(builddir)
 
 # netattrib gEDA 
 	$(SRCDIR)/runtest.sh $(SRCDIR)/netattrib.sch geda \
@@ -108,6 +109,7 @@ tests:
 # Cleanup
 	rm -f $(BUILDDIR)/new_*
 	rm -rf $(BUILDDIR)/devfiles
+	rm -f $(builddir)/gnetlistrc
 
 
 # These tests are internal to Ales and will not work without the schematics
@@ -155,7 +157,7 @@ tests_ales:
 
 MOSTLYCLEANFILES = new_* core *.log FILE *.ps *~
 CLEANFILES = new_* core *.log FILE *.ps *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
+DISTCLEANFILES = *.log core FILE *~ prototype.bak gnetlistrc
 MAINTAINERCLEANFILES = new_* core *.log FILE *.ps *~ Makefile.in configure
 
 
diff --git a/gnetlist/tests/common/inputs/gafrc b/gnetlist/tests/common/inputs/gafrc
index b198d79..e5072b9 100644
--- a/gnetlist/tests/common/inputs/gafrc
+++ b/gnetlist/tests/common/inputs/gafrc
@@ -2,6 +2,11 @@
 ;; 'make check' during development can work correctly.
 (scheme-directory "${SCMDIR}")
 
+;; We want to use the symbols that haven't been installed yet
+(map (lambda (x) (component-library (string-join (list "${SYMDIR}/" x) "")))
+     '("io" "74" "analog" "power" "misc" "diode" "linear" "connector" "switch"
+       "asic" "spice" "cascade" "titleblock"))
+
 (component-library "./sym")
 
 ;; Rather than checking what m4 and pcb's m4 files do with
diff --git a/gnetlist/tests/common/run_backend_tests.sh b/gnetlist/tests/common/run_backend_tests.sh
index 042b201..219e3b1 100755
--- a/gnetlist/tests/common/run_backend_tests.sh
+++ b/gnetlist/tests/common/run_backend_tests.sh
@@ -87,10 +87,17 @@ echo "********USING BACKEND ${backend}*********"
 here=`pwd`
 srcdir=${srcdir:-$here}
 srcdir=`cd $srcdir && pwd`
-
-GNETLIST=../../../src/gnetlist
-SCMDIR=../../../scheme
+builddir="${here}"
+
+GNETLIST="${builddir}/../../src/gnetlist"
+GEDADATA="${srcdir}/../.." # HACKHACKHACK
+GEDADATARC="${builddir}/../../lib"
+SCMDIR="${builddir}/../../scheme"
+SYMDIR="${srcdir}/../../../symbols"
+export GEDADATA
+export GEDADATARC
 export SCMDIR
+export SYMDIR
 
 rundir=${here}/run
 
@@ -131,7 +138,10 @@ srcdir:     $srcdir
 INPUT_DIR:  ${INPUT_DIR}
 GOLDEN_DIR: ${GOLDEN_DIR}
 GNETLIST:   ${GNETLIST}
+GEDADATA:   ${GEDATADA}
+GEDADATARC: ${GEDATADARC}
 SCMDIR:     ${SCMDIR}
+SYMDIR:     ${SYMDIR}
 all_tests:
 
 ${all_tests}
diff --git a/gnetlist/tests/drc2/Makefile.am b/gnetlist/tests/drc2/Makefile.am
index 9be1840..52da26f 100644
--- a/gnetlist/tests/drc2/Makefile.am
+++ b/gnetlist/tests/drc2/Makefile.am
@@ -42,6 +42,7 @@ check_SCRIPTS = tests
 
 BUILDDIR=$(builddir)
 SRCDIR=$(srcdir)
+GNETLIST=$(builddir)/../../src/gnetlist
 
 gnet_srcdir=$(top_srcdir)/gnetlist
 gnet_builddir=$(top_builddir)/gnetlist
@@ -52,20 +53,18 @@ tests:
 	rm -f $(BUILDDIR)/new_*
 	rm -f $(BUILDDIR)/failed.log
 
-# copy required file(s)
-	sed \
-		-e 's;@scheme_srcdir@;${gnet_srcdir}/scheme;g' \
-		-e 's;@scheme_builddir@;${gnet_builddir}/scheme;g' \
-		$(SRCDIR)/gnetlistrc.drc2 > $(BUILDDIR)/gnetlistrc
-
 # make the tests
+	cp $(srcdir)/gnetlistrc.drc2 $(builddir)/gnetlistrc
 	failed=0; \
 	for file in $(SRCDIR)/*.sch; do \
 	  file_basename=`basename $$file .sch`; \
 	  echo Checking test in $(SRCDIR)/$$file_basename.sch; \
-	  ( export TESTDIR=$(SRCDIR) ; \
-	    $(gnet_builddir)/src/gnetlist -g drc2 -o $(BUILDDIR)/new_$$file_basename.drc2 \
-            $$file > /dev/null 2>&1); \
+	  ( TESTDIR=$(SRCDIR) \
+	    GEDADATARC=$(top_builddir)/gnetlist/lib \
+	    SCMDIR=${top_builddir}/gnetlist/scheme \
+	    SYMDIR=${top_srcdir}/symbols \
+	    $(GNETLIST) -g drc2 -o $(BUILDDIR)/new_$$file_basename.drc2 \
+            $$file ); \
           diff $(SRCDIR)/$$file_basename.drc2 \
                  $(BUILDDIR)/new_$$file_basename.drc2; \
           if [ $$? -ne 0 ]; then \
diff --git a/gnetlist/tests/drc2/gnetlistrc.drc2 b/gnetlist/tests/drc2/gnetlistrc.drc2
index 1854057..84ac1fa 100644
--- a/gnetlist/tests/drc2/gnetlistrc.drc2
+++ b/gnetlist/tests/drc2/gnetlistrc.drc2
@@ -1,4 +1,7 @@
 ;; We want to point at the scheme code that hasn't been installed yet so that
 ;; 'make check' during development can work correctly.
-(scheme-directory "@scheme_builddir@")
+(scheme-directory "${SCMDIR}")
 
+;; We want to use the symbols that haven't been installed yet
+(map (lambda (x) (component-library (string-join (list "${SYMDIR}/" x) "")))
+     '("io" "74" "analog" "power" "misc" "titleblock"))
diff --git a/gnetlist/tests/gnetlistrc b/gnetlist/tests/gnetlistrc
new file mode 100644
index 0000000..9df03f7
--- /dev/null
+++ b/gnetlist/tests/gnetlistrc
@@ -0,0 +1,8 @@
+;; We want to point at the scheme code that hasn't been installed yet so that
+;; 'make check' during development can work correctly.
+(scheme-directory "${SCMDIR}")
+
+;; We want to use the symbols that haven't been installed yet
+(map (lambda (x) (component-library (string-join (list "${SYMDIR}/" x) "")))
+     '("74" "analog" "misc" "memory" "power" "connector" "switch" "linear"
+       "diode" "spice" "cascade" "titleblock"))
diff --git a/gnetlist/tests/hierarchy/Makefile.am b/gnetlist/tests/hierarchy/Makefile.am
index eefab65..f2b05f3 100644
--- a/gnetlist/tests/hierarchy/Makefile.am
+++ b/gnetlist/tests/hierarchy/Makefile.am
@@ -16,11 +16,11 @@ GNETLIST=$(top_builddir)/gnetlist/src/gnetlist
 tests:
 	rm -f $(BUILDDIR)/new_*
 	cp -f $(SRCDIR)/gnetlistrc.hierarchy $(BUILDDIR)/gnetlistrc
-	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/gnetlist/scheme ; export SCMDIR ; \
-	  echo $$TESTDIR; \
-	  $(GNETLIST) \
-	     -o $(BUILDDIR)/new_hierarchy.geda -g geda \
-	     $(SRCDIR)/top.sch )
+	( TESTDIR=$(SRCDIR) \
+	  GEDADATARC=$(top_builddir)/gnetlist/lib \
+	  SCMDIR=${top_builddir}/gnetlist/scheme \
+	  SYMDIR=$(top_srcdir)/symbols \
+	    $(GNETLIST) -o $(BUILDDIR)/new_hierarchy.geda -g geda $(SRCDIR)/top.sch )
 	diff $(SRCDIR)/hierarchy.geda $(BUILDDIR)/new_hierarchy.geda;
 
 MOSTLYCLEANFILES = new_* core *.log FILE *.ps *~
diff --git a/gnetlist/tests/hierarchy/gnetlistrc.hierarchy b/gnetlist/tests/hierarchy/gnetlistrc.hierarchy
index 15cb508..cbf1877 100644
--- a/gnetlist/tests/hierarchy/gnetlistrc.hierarchy
+++ b/gnetlist/tests/hierarchy/gnetlistrc.hierarchy
@@ -2,6 +2,10 @@
 ;; 'make check' during development can work correctly.
 (scheme-directory "${SCMDIR}")
 
+;; We want to use the symbols that haven't been installed yet
+(map (lambda (x) (component-library (string-join (list "${SYMDIR}/" x) "")))
+     '("io" "74" "analog" "power"))
+
 (source-library "${TESTDIR}")
 (component-library "${TESTDIR}")
 ;(net-naming-priority "label")
diff --git a/gnetlist/tests/hierarchy2/Makefile.am b/gnetlist/tests/hierarchy2/Makefile.am
index 0192f12..7a4a34b 100644
--- a/gnetlist/tests/hierarchy2/Makefile.am
+++ b/gnetlist/tests/hierarchy2/Makefile.am
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-EXTRA_DIST = gafrc.hierarchy2 hierarchy2.geda top.sch under.sch under.sym
+EXTRA_DIST = gnetlistrc.hierarchy2 hierarchy2.geda top.sch under.sch under.sym
 
 # Temporarily disabled make check, since this is interfering with 
 # make distcheck
@@ -12,9 +12,11 @@ GNETLIST=$(top_builddir)/gnetlist/src/gnetlist
 
 tests:
 	rm -f $(BUILDDIR)/new_*
-	cp -f $(SRCDIR)/gafrc.hierarchy2 $(BUILDDIR)/gafrc
-	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/gnetlist/scheme ; export SCMDIR ; \
-	  echo $$TESTDIR; \
+	cp -f $(SRCDIR)/gnetlistrc.hierarchy2 $(BUILDDIR)/gnetlistrc
+	( TESTDIR=$(SRCDIR) \
+	  GEDADATARC=$(top_builddir)/gnetlist/lib \
+	  SCMDIR=${top_builddir}/gnetlist/scheme \
+	  SYMDIR=${top_srcdir}/symbols \
 	  $(GNETLIST) \
 	     -o $(BUILDDIR)/new_hierarchy2.geda -g geda \
 	     $(SRCDIR)/top.sch )
@@ -22,7 +24,7 @@ tests:
 
 MOSTLYCLEANFILES = new_* core *.log FILE *.ps *~
 CLEANFILES = new_* core *.log FILE *.ps *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak gafrc
+DISTCLEANFILES = *.log core FILE *~ prototype.bak gnetlistrc
 MAINTAINERCLEANFILES = new_* core *.log FILE *.ps *~ Makefile.in configure
 
 
diff --git a/gnetlist/tests/hierarchy2/gafrc.hierarchy2 b/gnetlist/tests/hierarchy2/gafrc.hierarchy2
deleted file mode 100644
index 15cb508..0000000
--- a/gnetlist/tests/hierarchy2/gafrc.hierarchy2
+++ /dev/null
@@ -1,26 +0,0 @@
-;; We want to point at the scheme code that hasn't been installed yet so that
-;; 'make check' during development can work correctly.
-(scheme-directory "${SCMDIR}")
-
-(source-library "${TESTDIR}")
-(component-library "${TESTDIR}")
-;(net-naming-priority "label")
-
-;(hierarchy-traversal "disabled")
-;(hierarchy-uref-mangle "disabled") 
-;(hierarchy-netname-mangle "disabled")
-;(hierarchy-netattrib-mangle "disabled")
-
-;(hierarchy-netname-separator ".")
-;(hierarchy-uref-separator ".")
-;(hierarchy-netattrib-separator ".")
-
-;(hierarchy-netname-order "prepend")
-;(hierarchy-uref-order "prepend")
-;(hierarchy-netattrib-order "prepend")
-
-
-
-
-
-
diff --git a/gnetlist/tests/hierarchy2/gnetlistrc.hierarchy2 b/gnetlist/tests/hierarchy2/gnetlistrc.hierarchy2
new file mode 100644
index 0000000..7b093d0
--- /dev/null
+++ b/gnetlist/tests/hierarchy2/gnetlistrc.hierarchy2
@@ -0,0 +1,30 @@
+;; We want to point at the scheme code that hasn't been installed yet so that
+;; 'make check' during development can work correctly.
+(scheme-directory "${SCMDIR}")
+
+;; We want to use the symbols that haven't been installed yet
+(map (lambda (x) (component-library (string-join (list "${SYMDIR}/" x) "")))
+     '("io" "74" "titleblock"))
+
+(source-library "${TESTDIR}")
+(component-library "${TESTDIR}")
+;(net-naming-priority "label")
+
+;(hierarchy-traversal "disabled")
+;(hierarchy-uref-mangle "disabled") 
+;(hierarchy-netname-mangle "disabled")
+;(hierarchy-netattrib-mangle "disabled")
+
+;(hierarchy-netname-separator ".")
+;(hierarchy-uref-separator ".")
+;(hierarchy-netattrib-separator ".")
+
+;(hierarchy-netname-order "prepend")
+;(hierarchy-uref-order "prepend")
+;(hierarchy-netattrib-order "prepend")
+
+
+
+
+
+
diff --git a/gnetlist/tests/runtest.sh b/gnetlist/tests/runtest.sh
index 381f5e5..b0ff718 100755
--- a/gnetlist/tests/runtest.sh
+++ b/gnetlist/tests/runtest.sh
@@ -11,6 +11,9 @@ export TESTDIR
 
 schbasename=`basename $INPUT .sch`
 
+SCMDIR=$SRCDIR/../scheme \
+SYMDIR=$SRCDIR/../../symbols \
+GEDADATARC=$BUILDDIR/../lib \
 ../src/gnetlist -o ${BUILDDIR}/new_${schbasename}.$BACKEND -g $BACKEND $INPUT 
 status=$?
 

commit 2992b190679b4d351b7990717cc8dc1407c01ec7
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gsymcheck: Tell tests where to find system-gsymcheckrc.
    
    This is required to get the gsymcheck tests to pass make distcheck.
    
    Note: make distcheck does not pass in this commit.

diff --git a/gsymcheck/tests/Makefile.am b/gsymcheck/tests/Makefile.am
index c890b95..248700d 100644
--- a/gsymcheck/tests/Makefile.am
+++ b/gsymcheck/tests/Makefile.am
@@ -49,6 +49,7 @@ tests:
 	pass=0 ; \
 	for file in $(SRCDIR)/*.sym; do \
 	  base=`basename $$file`; \
+	  GEDADATARC=$(builddir)/../lib \
 	  $(SHELL) $(SRCDIR)/runtest.sh $$file $(BUILDDIR) $(SRCDIR); \
           if [ $$? -ne 0 ]; then \
 	     echo "$$base FAILED!"; \

commit fc2b205314545d92ea2a7e8f40a7a4c7d5af893d
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Don't store git-generated ChangeLog files in repository.
    
    Don't store ChangeLog files in the git repository and have to remember
    to update them each time a release is made.  Instead, get `make dist'
    to create the ChangeLogs for you if a git repository is detected.
    
    Note: make distcheck does not pass in this commit.

diff --git a/configure.ac b/configure.ac
index fc8d13f..17d2b29 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,9 @@ AC_GNU_SOURCE # FIXME for some reason this is needed?
 
 AX_GIT_VERSION([20090328])
 
+# This is used for keeping the ChangeLog files up-to-date
+AC_SUBST([CHANGELOG_BASE], [1.0-20070526])
+
 #####################################################################
 # Win32/MinGW support
 #####################################################################
diff --git a/docs/.gitignore b/docs/.gitignore
index 596a587..af02301 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -12,3 +12,4 @@ install-sh
 missing
 mkinstalldirs
 *~
+ChangeLog
diff --git a/docs/ChangeLog b/docs/ChangeLog
deleted file mode 100644
index c16ec61..0000000
--- a/docs/ChangeLog
+++ /dev/null
@@ -1,296 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 9bf9ef2ca4d2c9741143154c7cfff479dab56bfd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 21:59:10 2008 -0400
-
-    Updated the shipped documentation from the online wiki
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit ea474aab8bbe161614ace477fc8c2a08d5c42aa7
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:36:07 2008 -0400
-
-    Added sleep to throttle the fetching of the wiki
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit 566ba9120149cc955b551455b3feb2ab8fc30287
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:25:49 2008 -0500
-
-    Updated documentation from the official wiki website
-
-commit 7fd6928538ef4ab0de657cd52113290be956b090
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:16:45 2008 -0500
-
-    Revised script again to remove .gitignore files from distribution Makefile.am
-
-commit a3cace0a210e44cdfd943aad96f3dd39c9176909
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 18:48:01 2008 -0500
-
-    Fixed up .gitignore files to have the leading .
-    
-    There is a bug in populatemkfiles.sh which removes the leading . (period).
-    This patch adds that period back.
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit d237ea60a5221ea8dad20765e07d62c8c5596515
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 11:32:06 2007 -0500
-
-    Updated documentation (wiki) snapshot from master wiki on the geda website
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit dd18ffcfdb7d6d0b45d64c8ed453d691d5f3575c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 15:46:17 2007 -0400
-
-    Another attempt to commit wiki snapshot updates
-
-commit e7388fcf022cbb88f48bd5c400765c62c49ef700
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 15:36:44 2007 -0400
-
-    Updated wiki snapshot from the live wiki
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit ee1821ad48f0553d9287be6be9ca7fd3e5c965e9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 09:11:20 2007 -0400
-
-    Added new script to EXTRA_DIST
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 24bc0f38e5eedc7f67c33f52c7395236d62d24de
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:27:02 2007 -0400
-
-    Downloaded and integrated latest wiki documentation from the geda website.
-    
-    Also updated some of the wiki scripts a little.  Fetching and integrating
-    the latest wiki version isn't fully automated yet, but getting there.
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-
-#GCL#
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 197b2dc..6ff029e 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -1,7 +1,12 @@
 
 SUBDIRS = toplevel wiki scripts
 
-EXTRA_DIST = ChangeLog-1.0
+EXTRA_DIST = ChangeLog-1.0 ChangeLog
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
diff --git a/examples/.gitignore b/examples/.gitignore
index 3559de2..e33164f 100644
--- a/examples/.gitignore
+++ b/examples/.gitignore
@@ -12,3 +12,4 @@ install-sh
 missing
 mkinstalldirs
 *~
+ChangeLog
diff --git a/examples/ChangeLog b/examples/ChangeLog
deleted file mode 100644
index 92c0ca2..0000000
--- a/examples/ChangeLog
+++ /dev/null
@@ -1,267 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit df3e8c492a78348cd9e7862ef31ab51e2cbaa38b
-Author: Stuart Brorson <sdb@xxxxxxxxxx>
-Date:   Sat Dec 27 15:04:50 2008 -0500
-
-    Remove hard-coded file path from example netlist.
-
-commit 19f1f215bfa62f164a8bbc4bdf6f7afd042a6107
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 23 00:29:29 2008 +0000
-
-    examples: Correct non unix file-endings on a few files
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 1314f9a1aa89f85b27318a2af8d565614e1b8510
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 11 01:57:31 2008 +0000
-
-    Fix some footprint= refdes in the gTAG example
-
-commit a2e742c2f1c3f827af39f3665b0c2dfb37744d7f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:52:16 2008 -0500
-
-    Argh, forgot to update the Makefile.am for the gTAG fixes.
-    
-    This change also belongs to 3fbc908cb6e3be4fb79d32c641cfb15b4765183f
-    and 34d9611f5c27c3617541705edb1fb380ca161
-
-commit 3fbc908cb6e3be4fb79d32c641cfb15b4765183f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:36:02 2008 -0500
-
-    Additional changes need to make gTAG example to work correctly
-    
-    Oops, changes should have been part of 34d9611f5c27c3617541705edb1fb380ca161d53
-
-commit 34d9611f5c27c3617541705edb1fb380ca161d53
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:33:03 2008 -0500
-
-    Fixed up the gTAG example to load correctly from different directory
-    
-    When running gschem from a different directory than the gTAG example
-    directory, the schematics would not load up correctly because a gafrc
-    was not found (with all the component/source library paths).
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 19b6b06461a906399126803d4c46a5a42d1cc784
-Author: Stuart Brorson <sdb@xxxxxxxxxx>
-Date:   Sun Aug 5 05:30:58 2007 -0400
-
-    Updated files to fix problems noted by Chitlesh.
-    
-    Fixed files to fix following problems with Fedora:
-      *  DOS style line endings on a couple lines (WTF???)
-      *  Removed absolute paths present in example file.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-
-#GCL#
diff --git a/examples/Makefile.am b/examples/Makefile.am
index d7160cf..39a1e83 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -5,7 +5,12 @@ exampledir = $(docdir)/examples/
 
 example_DATA = README 
 
-EXTRA_DIST = ChangeLog-1.0 $(example_DATA)
+EXTRA_DIST = ChangeLog ChangeLog-1.0 $(example_DATA)
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = *.log core FILE *~ 
 CLEANFILES = *.log core FILE *~ 
diff --git a/examples/gTAG/.gitignore b/examples/gTAG/.gitignore
index 23c1897..99c08fe 100644
--- a/examples/gTAG/.gitignore
+++ b/examples/gTAG/.gitignore
@@ -1,3 +1,4 @@
 Makefile
 Makefile.in
 *~
+ChangeLog
diff --git a/examples/gTAG/ChangeLog b/examples/gTAG/ChangeLog
deleted file mode 100644
index 99b95ad..0000000
--- a/examples/gTAG/ChangeLog
+++ /dev/null
@@ -1,147 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 1314f9a1aa89f85b27318a2af8d565614e1b8510
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 11 01:57:31 2008 +0000
-
-    Fix some footprint= refdes in the gTAG example
-
-commit a2e742c2f1c3f827af39f3665b0c2dfb37744d7f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:52:16 2008 -0500
-
-    Argh, forgot to update the Makefile.am for the gTAG fixes.
-    
-    This change also belongs to 3fbc908cb6e3be4fb79d32c641cfb15b4765183f
-    and 34d9611f5c27c3617541705edb1fb380ca161
-
-commit 3fbc908cb6e3be4fb79d32c641cfb15b4765183f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:36:02 2008 -0500
-
-    Additional changes need to make gTAG example to work correctly
-    
-    Oops, changes should have been part of 34d9611f5c27c3617541705edb1fb380ca161d53
-
-commit 34d9611f5c27c3617541705edb1fb380ca161d53
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:33:03 2008 -0500
-
-    Fixed up the gTAG example to load correctly from different directory
-    
-    When running gschem from a different directory than the gTAG example
-    directory, the schematics would not load up correctly because a gafrc
-    was not found (with all the component/source library paths).
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-
-#GCL#
diff --git a/examples/gTAG/Makefile.am b/examples/gTAG/Makefile.am
index bb2849f..8dd726f 100644
--- a/examples/gTAG/Makefile.am
+++ b/examples/gTAG/Makefile.am
@@ -8,7 +8,12 @@ example_DATA = 7414-1.sym attribs gafrc copyleft.sym crdist.sh \
              gTAG.bom gTAG.ps gTAG.sch gnetlistrc max882.sym sn75240pw.sym \
 	     README
 
-EXTRA_DIST = ChangeLog-1.0 $(example_DATA)
+EXTRA_DIST = ChangeLog ChangeLog-1.0 $(example_DATA)
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = gschem.log *~
 CLEANFILES = gschem.log *~
diff --git a/gattrib/.gitignore b/gattrib/.gitignore
index 23c1897..99c08fe 100644
--- a/gattrib/.gitignore
+++ b/gattrib/.gitignore
@@ -1,3 +1,4 @@
 Makefile
 Makefile.in
 *~
+ChangeLog
diff --git a/gattrib/ChangeLog b/gattrib/ChangeLog
deleted file mode 100644
index 4739784..0000000
--- a/gattrib/ChangeLog
+++ /dev/null
@@ -1,1419 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 48ca3d8e58c327beb8f726f806c3f5568a9fa7c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:51:08 2009 -0400
-
-    Added missing gattrib.dox so it is included in the release tarballs
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit b297d32b70c02bfe800b7bf4c434d1fd4447e2f5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 14:55:22 2009 -0400
-
-    Updated all po files by running make update-po
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit 7cc4a67795c9ee8dcb28edc6d71b895c5b4f1dc9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:10:41 2009 +0000
-
-    Refactor finding paths for config etc.
-    
-    This is intended to provide a centralised place for determining the
-    paths more "smartly" in the future (e.g. for platforms with different
-    conventions on where config should go).
-    
-    Only user-visible change should be that log messages when loading
-    config files no longer hardcode "~/.gEDA".
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit ee250c9bd2e88bf352a03d1719603b7d54fe430c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:30 2009 +0000
-
-    Avoid underlinking of apps due to missing explicit depends
-    
-    These went unnoticed because the apps were resolving the necessary
-    symbols when pulling in libgeda and its dependencies.
-    
-    Fix applications using GLib and guile within the suite to explicitly
-    pull in the appropriate CFLAGS and LIBS. This commit removes some
-    LDFLAGS and LIBS from grenum, since they weren't being used.
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit ca6556ace0a06ec1dd697852f7a1f0ffb86bfb97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:57 2008 +0000
-
-    Add "const" to some places where we deal with GLists of OBJECTs.
-    
-    These GLists themselves are not (and shouldn't be) modified, although
-    the OBJECTs they point at may well be.
-
-commit e7d328775323dea2d82f9c22d431bf2740a90f97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 20:37:37 2008 +0000
-
-    Remove i_vars.h variables left over when removing colour index variables.
-
-commit 165de888d86506583241dab79573e81f2cf44dd7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 15:46:09 2008 +0000
-
-    Remove GSCHEM_TOPLEVEL and TOPLEVEL indirection for fixed colour indices
-    
-    Colour indices such as grid_colour and select_color are not changed at
-    run-time since (by definition) those graphic elements are always drawn
-    with the sepcified index. Remove the indirection through GSCHEM_TOPLEVEL
-    or TOPLEVEL, and use the appropriate index constant instead.
-    
-    The background_color indirection remains, since swapping this is used
-    to override the background to white when exporting black and white image.
-
-commit 0029ee5696a4f8c0fd2a0edb64c0096792e24912
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 23 03:46:50 2008 +0000
-
-    Fix attribute colours for embedded objects [#2157598]
-    
-    Add an argument, "set_color" to o_attrib_attach[_list]() to specify
-    whether the colour of the attribute should be reset to the default
-    attribute colour when performing the attachment.
-    
-    We set this to true when promoting toplevel unattached attributes
-    inside a symbol onto the schematic page, when the user explicitly
-    attaches an attribute inside gschem. It is FALSE in other cases.
-    
-    In cases where we're creating new attributes, such as o_slot_end(),
-    we specify the attribute colour we want to o_text_new().
-    
-    Remove colour setting from o_attrib_add(), since there is no point
-    having this code in two places. o_attrib_add() just deals with the
-    datastructures now.
-
-commit 4d935762b66030c5b5c3c9ba791eedf90d92b5a6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 17:51:37 2008 +0000
-
-    gattrib: Fix compile.
-    
-    gattrib used some apparently-completely-unrelated constants from
-    libgeda which were nuked in 9f5e54f022b73adb429633461ca88c81c394fd16.
-    Add them back into gattrib's header files.
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 84d3b0199bec40652b1381474f7f76d7b24a6ff7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:48:42 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    This is in prep for the upcomging 1.5.1 release.
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 9e9b1ab60ff8740f4039471efaa5435193d83c14
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 18:12:46 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    make update-po was run in prep for an upcoming release.  It will probably
-    have to be run one more time before the final release is done.
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 921a39edd130ed3bbfe83d9c39c3a9085c405d9a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 21:21:03 2008 +0000
-
-    Remove function o_delete(), which just wraps o_delete_object()
-
-commit ee0eaa9c885db7022b9cb5ef4ddf50b459fd92fc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 14:49:40 2008 +0000
-
-    gattrib: Bump GTK and GLIB version requirements to match gschem (2.8.x)
-    
-    Also remove a remaining 2.4 comment from the gschem configure.ac.in
-
-commit 0b87dfd3c9a4188d4112015bbc7f6f0a38e8fb34
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 13:16:50 2008 +0000
-
-    gattrib: Unstaged portion of last commit (oops!)
-
-commit 65a541a1f302454a8e9e7a7119a59323bb982912
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 10 22:53:39 2008 +0000
-
-    gattrib: Fix crash when removing attributes from multiple files.
-    
-    We were iterating over a list which could have objects removed from it.
-    Since this is dangerous, iterate over a copy of the list. Since
-    attributes come later in the object list than the objects they are
-    attached to, iterating the list backwards means we don't
-    encounter objects we've already free'd.
-    
-    We also need to set TOPLEVEL->page_current to the page we're working on,
-    since within the loop, this variable is used to find which linked list
-    to remove the objects from.
-
-commit 721114eccc913dbbbd5e1d0700b87662aac316fc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 10 21:49:22 2008 +0000
-
-    gattrib: Remove non-useful "Pins" sheet
-    
-    The sheet is read-only, since there is no way to change pin attributes
-    on the schematic. (And gattrib refuses to load symbol files).
-
-commit 22d5b2abcd1aa5c098566ee5b292c6d7215b9b8e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 10 21:42:29 2008 +0000
-
-    gattrib: Remove non-functional "Nets" sheet
-
-commit 0deb0abc3d82a8127c9566d886858811c1dcc717
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 10 21:21:13 2008 +0000
-
-    gattrib: Remove menu entries for unimplemented features
-    
-    Popping up a dialog for unimplemented features stops the user being
-    able to identify what parts of the program are supposed to work.
-
-commit 38ce8aae73beec00d603e4cda0ca5eee738a3cb8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 19:23:22 2008 +0000
-
-    libgeda: Abstract removing objects from the page with s_page_remove ()
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit 9dd241d9f87ad78f27772e9490d3afa2a80621bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 01:38:21 2008 +0000
-
-    libgeda: Add convenience function for adding objects to the page
-    
-    Adds s_page_append() which links the passed object to the end of the
-    page's object list.
-
-commit 2f5b7e9d890953680caa4fa111c31a0be4123d97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:16:20 2008 +0000
-
-    Adjust MINGW32 specific CFLAGS from the suite
-    
-    Console applications should not build with the -mwindows flag, otherwise
-    output reach the console. Conversely, we should build the GUI apps, gschem
-    and gattrib with -mwindows so they don't bring up a console window when
-    running.
-
-commit d2ab7cfcc4dd21e06a3d2e9ac6d756b7968c0b7a
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Nov 18 22:33:45 2008 -0500
-
-    Use the SHELL variable to locate a shell for icon-theme-installer
-    
-    /bin/sh on some systems like SunOS (solaris) is too broken but in those
-    cases SHELL is typically set to a functioning shell like /bin/ksh.  This
-    repairs the install on "shell challenged" systems.
-
-commit 0b194eee257f5818cc0ad9b035f9b81134a87745
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 22:53:33 2008 +0000
-
-    gattrib: Don't special-case ignore components with "graphical" attribute.
-    
-    It was noted that special-casing the "graphical" attribute could cause
-    gattrib to crash on save (Bug #2214739).
-    
-    There is no real reason why the user might not want to edit a graphical
-    symol's attributes with gattrib, so we should treat it like any other.
-
-commit 9bb639685d3d413d245ebf8f58cd55b6734bec2e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 22:53:26 2008 +0000
-
-    gattrib: Don't crash if we can't find data in the sheet. Bug #2214739
-    
-    Check for a -1 return from s_table_get_index() before
-    using to index an array. Print ugly warnings to stderr
-    and skip whatever we were doing if this is encountered.
-
-commit 76195280b1f861c8952d4de52195b8b2de0f79d8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 22:53:17 2008 +0000
-
-    gattrib, gschlas: Restore setting dummy select_func to ensure proper save
-    
-    The select_func function pointer (now owned and exported by libgeda) is
-    assigned to OBJECT->sel_func for non-locked objects. Locking is achieved
-    by setting OBJECT->sel_func to NULL, and when writing out objects, the
-    locked flag is determined by comparing that that pointer to NULL.
-    
-    We need to keep providing a dummy function so we can differentiate
-    between that and a NULL pointer. This was accidentally lost in
-    commit 1aab94354f053887db67aa5702abc595795dfe82 which moved the
-    select_func global variable into libgeda.
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit 1aab94354f053887db67aa5702abc595795dfe82
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Oct 29 12:14:19 2008 +0000
-
-    Define select_func only in libgeda.
-    
-    Importing definitions from linkees breaks when linking libraries on
-    Windows.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit 3f89274f7493610059a70bd29ac26bbd28bc7958
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 29 01:26:51 2008 +0100
-
-    gattrib: Fix more non-literal format strings which cause compiler warnings.
-    
-    We should be careful to avoid passing arbitrary strings into functions
-    which take printf style arguments. In that case, always use the construct
-    ("%s", string) rather than passing string as the format argument.
-    
-    Admittedly, some of the cases fixed were fine anyway, as the string passed
-    was a known constant. In any case, less noise from the compiler leads to
-    easier spotting of real problems.
-
-commit 392dd3354812e812f548eadac2c83d8430acd7bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 29 01:19:39 2008 +0100
-
-    Remove conditionally compiled code for GTK/GLIB < 2.6
-
-commit 2550db8e1d981ccab55b7f2ae6e9932198a53b59
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 01:03:06 2008 +0100
-
-    Make o_..._add() into o_..._new() which don't link the new OBJECT.
-    
-    Allows cleaner use of objects where we might want to insert the object
-    into a GList rather than a self-linked list of OBJECTs.
-
-commit dc402ee9c0b5196634c83ed8fd2e2f059a4338cb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 03:29:50 2008 +0100
-
-    Revert commit #17cd47a31a4b84d02726391f980ae493d927809b
-    
-      (Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>)
-      (Date:   Fri Jul 11 16:03:06 2008 +0200)
-    
-          Use o_attrib_get_name_value() to parse attribute strings in gattrib.
-    
-          Replaced u_basic_breakup_string() with o_attrib_get_name_value() in
-          gattrib when splitting attribute string for name and/or value.
-    
-    This commit introduced a crash saving certain schematics.
-    
-    It appears to be caused because gattrib uses invalid attribute strings
-    such as "attrib_name=" to mark objects which do not have a particular
-    attribute present (or that it was deleted during editing).
-    
-    Since o_attrib_get_name_value() can only processes valid attribute
-    strings, it is useless for parsing strings such as these.
-    
-    Since it isn't immediately clear how many of the o_attrib_get_name_value()
-    calls introduced in the above commit are affected by this
-    (specifically, where in gattrib these invalid strings are encountered),
-    I'm reverting the whole patch rather than trying to build a fix on top.
-
-commit 7baf5c629eb620e7db9b3fa5837cc07bdfe29f4f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 21:36:35 2008 +0100
-
-    libgeda: Tidy o_attrib_attach() harder
-    
-    Remove searching in parent_list for the attribute we're about to attach.
-    This check isn't needed, we were passed the attribute as an argument.
-    Let the caller be responsible for making sure it is linked into the
-    appropriate object list.
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit ff022c441d470f85b6db064411b1228e3511e959
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Aug 19 01:53:08 2008 +0100
-
-    gattrib: Implement "Save changes?" dialog to match rest of suite.
-
-commit a6ec74886d5c7b291df6e05e8e7cb181452c4c22
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Aug 19 01:52:28 2008 +0100
-
-    gattrib: Fix s_attrib_name_in_list() to avoid critical warning and leak
-    
-    A NULL string should not be passed to o_attrib_get_name_value(), as this
-    now causes a critical level warning. Skip over NULL list items.
-    
-    Free memory allocated by o_attrib_get_name_value().
-
-commit cb6223880a8732453dd2d0c0d7b17011e4113ff7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Aug 19 01:25:02 2008 +0100
-
-    gattrib: Attempt to make sheet changed detection less sensitive. (CODE!*)
-    
-    * Really now.. this is getting embarassing.
-    
-    The old code set the page's CHANGED flag upon received keypresses,
-    including modifier-keys such as Alt etc.. (As used to access the
-    common Alt+F4 shortcut to close the window), meaning the user was
-    always prompted that they would loose changes.
-    
-    Remove setting the CHANGED flag in functions gtk_entry_enter_text
-    and gtk_sheet_key_press. Instead, set it in gtk_sheet_entry_changed
-    and gtk_sheet_real_cell_clear.
-    
-    This code could do with some closer attention in the future. There
-    are certainly more appropriate places to set the CHANGED flag,
-    ie. without hacking the gtksheet implementation to do it directly.
-
-commit 1a1460c65a9d4e0aee35e39fff0f083c95bd380d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 19:18:24 2008 +0100
-
-    Remove the ATTRIB struct as it only contained one variable.
-    
-    The OBJECT.attribs GList now points directly at the text objects which
-    hold and display the attribute name and value.
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 723e8d1c735b27f2bfc39dec296464bb8d5b2020
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    Don't register recalc funcs as draw funcs.
-    
-    Some applications which don't draw schematics set the draw funcs to be
-    the recalc funcs. This is silly.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit 17cd47a31a4b84d02726391f980ae493d927809b
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:06 2008 +0200
-
-    Use o_attrib_get_name_value() to parse attribute strings in gattrib.
-    
-    Replaced u_basic_breakup_string() with o_attrib_get_name_value() in
-    gattrib when splitting attribute string for name and/or value.
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit 19d6d561eb5aea8e580d6ecf72d20bdfc3180ace
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:58 2008 +0200
-
-    Remove unnecessary check following memory allocation with GLib g_malloc().
-    
-    There is no need to check g_malloc() returned value as when the
-    function fails to allocate memory, it terminates the application.
-
-commit a3513b7e6dc7bf6c36d95d4da86082beeb79831d
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:57 2008 +0200
-
-    Replace standard string manipulations with GLib string utility functions.
-
-commit da1d2e7b304f9d832bdee9c8dfb9fe4604e19cc9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:56 2008 +0200
-
-    Remove tests for NULL prior to freeing with g_free().
-    
-    Testing if pointer on memory to free is not NULL is unnecessary
-    since g_free() does the test itself.
-
-commit ac84ca9171138a0774b4314fd8d8ee148d109474
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:55 2008 +0200
-
-    Rewrite f_normalize_filename().
-    
-    Modifies f_normalize_filename() to avoid using realpath() and
-    resolving symlinks. It is derived from the GNU Lib C implementation of
-    realpath() with glib GString and glib portable file-related functions.
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 8773525a45c1e33a2f020ac511f628e04ff373b9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:01:37 2008 -0400
-
-    Ran make update-po in all po directories (in prep for a new release)
-
-commit 97c1b01e1c95d2f8a334d916ffc60d35797782c2
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 09:34:01 2008 -0400
-
-    Fixed up all icon-theme-installer files to work with non-bash
-    
-    Grabbed the latest icon-theme-installer files from the pcb repository
-    since they have been fully patched to work with non-bash shells.  On
-    my ubuntu system, /bin/sh is linked to dash which prevented me from
-    running the previous version of icon-theme-installer.  This commit
-    is related to a7e7a28613abe4705ec01011d0f4308ff024251b
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit a7e7a28613abe4705ec01011d0f4308ff024251b
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jun 29 19:00:10 2008 +0200
-
-    Changed shell from bash to sh in icon-theme-installer
-    
-    Changed shell from bash to sh in icon-theme-installer.
-    This commit is still not tested in non-bash systems.
-    
-    Applied partially geda patch #1978537 (only bash to sh
-    change, not removal of $INSTALL_DATA_EXEC check) from
-    anonymous contributor and Dan McMahill's test case
-    change in line 103 from:
-    
-    http://pcb.cvs.sourceforge.net/pcb/pcb/icon-theme-installer?r1=1.1&r2=1.2
-
-commit 949ebc253254a4ec4798ea5faab6bce698fabbb0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Apr 17 21:55:09 2008 +0100
-
-    gschem: Use argc, rather than relying that char **argv is NULL terminated
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit 5757ce41ac1846814b0e96885942f2e011f2d3b7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 1 13:06:15 2008 +0000
-
-    Rename translations to drop un-needed ISO-3166 country codes.
-    
-    From Debian bug #336796:
-    
-    Using a country part in a translation file is a discouraged practice
-    except in very few cases (such as pt_BR).
-    
-    Using a fr_FR.po file instead of a fr.po file prevents users of fr_CA,
-    fr_BE, fr_LU, fr_CH and all other existing and future locales for
-    French to benefit from the French translation of the program.
-    
-    In general PO files should only be named after the
-    ISO_639 code of the given language and should not use a country part
-    with a ISO-3166 code. The only accepted expcetions to this are:
-    
-    -pt_BR for Brazilian Portuguese and pt alone for "standard Portuguese"
-    -zh_CN for "Simplified Chinese" use in mailand China and Singapore
-    -zh_TW for "Traditional Chinese" used in Taiwan
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 5e4ee69035885d76fba09aa453789be68481c69a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:46:06 2008 -0500
-
-    Ran make update-po one more time before the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit 9a4bbc16c5c0e408aabbc69c1c1cc10cb4b7675f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:48:29 2008 -0500
-
-    Manually ran make update-po in all po dirs in prep for the 1.4.0 release
-
-commit f9790765a7961ebb154d1c038938aded012c5c90
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 26 13:37:43 2008 +0000
-
-    Fix typo in Dutch translation
-
-commit ec4b6287bbb4f709a7d3258a7474ec716933ca4b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:23:39 2008 -0500
-
-    Manually ran make update-po in all po directories in prep for the 1.3.1 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 6d5b5acb9dc6367fd9aa64b0210da7f3ab4bfd5f
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Jan 6 13:10:19 2008 +0100
-
-    Dutch translation file for geda-gattrib reviewed for upcoming release.
-
-commit e800618afe70c93c3739d725172dfdba95386232
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 21:14:51 2008 -0500
-
-    Manually ran make update-po in all directories
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit e7ba76819d6b77772684a72bba9ecbb1221d4ae0
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:27:21 2008 -0500
-
-    Added the use of GEDADATA environment variable to make gattrib relocatable
-    
-    gattrib was hardcoding the path to gattrib-menus.xml (using GEDADATADIR
-    which is set at configure time).  This patch makes it possible to move
-    the gattrib binary to a different prefix.  If GEDADATA is not set, then
-    the original behavior of using GEDADATADIR to find gattrib-menus.xml is
-    used.
-
-commit dd0d5724b1ed07c12aaf17478ef4fb0500c6cd4f
-Author: Dan McMahill <dan@bondage.(none)>
-Date:   Sat Jan 5 22:01:13 2008 +0000
-
-    Remove an unused variable.
-
-commit ef9f1e110cc8d67a98310e9c689c5afe5363be25
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 19:15:14 2008 +0000
-
-    Prefix "geda-" to icon names to help namespace the icon theme.
-
-commit 1697a90e5465dde296199745991e76df8f68c3be
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 15:41:07 2008 +0000
-
-    Changed --with-xdgdir to --with-xdgdatadir for consistency
-
-commit ee47fc5fa6d418a54af62a55a78e508d95a0f913
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 02:46:14 2008 +0000
-
-    Change usage of ${datarootdir} to ${datadir} for autoconf compatibility.
-
-commit 208cb97b474b29efea9b76d8b9099ffe2bf446af
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 01:22:20 2008 +0000
-
-    Fix typo in --disable-update-desktop-database help text
-    
-    Also fixed closing comment which had "mime" instead of "desktop"
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit b9ffb4675fbca6e92a4f713c28486e74dcbbeef4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 15:42:13 2008 +0000
-
-    Fix configure checks for Guile.
-    
-    Quote variables to protect them and alter version test logic so that
-    it doesn't think version 2.1 is older than 1.8.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 7c82238f3b2433607f8af6c873af99a642f05409
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:22:38 2007 -0500
-
-    Ran make update-po in all po directories in prep for a new release.
-
-commit a36521a0fef7673b60c5c06073734dbaa8a7516b
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sat Dec 29 11:16:02 2007 +0000
-
-    Add Dutch translation for gattrib's desktop menu
-
-commit 138bb39ad950267391579ff00924c39329b35859
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 29 09:17:20 2007 +0100
-
-    ignore generated geda-gattrib.pot file in .gitignore
-
-commit a07bb49371b75294baef8462c14eb0e0d925281b
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 29 09:15:22 2007 +0100
-
-    gattrib: added german translation
-
-commit d34c5aac6c6035c8515d355452c884865df03e57
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Dec 28 23:58:34 2007 -0500
-
-    Removed the other now machine generated file
-
-commit 49bde96e99ad5ed95cef0aabae32ef7f50abf008
-Author: Carlos Nieves Ã?nega <cnieves@xxxxxxxxx>
-Date:   Fri Dec 28 19:57:57 2007 +0000
-
-    Add Spanish translation for gattrib's desktop menu
-
-commit b9f741e0906295754fa5e1301cf3079aee88ff55
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 05:12:40 2007 +0000
-
-    Remove intltool-*.in files during make maintainer-clean
-
-commit bc7e666d6e8c1620e9e3ab8d124d7d0ade5198ed
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 24 03:15:51 2007 +0000
-
-    gattrib: Set default window icon to "gattrib" from the icon theme.
-    
-    When a "gattrib" icon is found in the icon theme, this will be used as the
-    default application icon. For GTK versions < 2.6, some default sizes have
-    been picked at which to look for icons. GTK >= 2.6 will find the best icon
-    by name.
-
-commit 76885149df80234cd91c42ca83752cfe5cd470f8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 06:11:31 2007 +0000
-
-    Add --with-xdgdir=... option to gschem and gattrib to match libgeda
-
-commit 5ee84ba2b7f534b11b7487c91413deaf393cb7ca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 22:55:34 2007 +0000
-
-    Add .desktop and icon files to gschem and gattrib
-    
-    Ship application icons and .desktop files for gschem and gattrib.
-    The gschem icons were contributed by Tomaz Solc, and the gattrib
-    icons created by Peter Clifton.
-    
-    Uses the intltool framework to translate the .desktop files.
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit b635ebb641383360e5e7864830d42d13cf7f4d12
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Print useful messages when f_open() fails.
-    
-    This reinstates error messages removed by the patch which modified
-    f_open() to use GError for error reporting.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit d715ba7dc3e02d77e671b9ab54b994379daefec5
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 13:34:40 2007 -0200
-
-    Tell git to ignore .exe files.
-
-commit 23ead18086e59aab22945c37ff95f49e5747f277
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:50:39 2007 +0100
-
-    Remove the ATTRIB linked list in favour of a GList
-    
-    The ATTRIB.copied_to pointer is moved from the ATTRIB struct to reside in
-    the source OBJECT being copied.
-    
-    The ATTRIB *attached_to pointer of an attribute's text OBJECT is changed
-    to OBJECT *attached_to, pointing directly at the OBJECT to which that
-    attribute is attached. This avoids the need to traverse the ATTRIB list
-    and retrieve this pointer from the HEAD attribute node. (A HEAD node is
-    not used in the GList of ATTRIBs).
-    
-    The ATTRIB structure now only contains one element, OBJECT *object. This
-    points to the text OBJECT holding and displaying that attribute's
-    "name=value".
-
-commit 9d2dc8032dffadc662d30723a274a7a0d104559b
-Author: Hamish Moffatt <hamish@xxxxxxxxxx>
-Date:   Thu Oct 4 19:40:05 2007 +0100
-
-    Fix install location of gattrib-menus.xml to $GEDADATADIR
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit e84c1d4ba2ad15e18f94346389d2671eb49d0cf5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Sep 11 22:37:55 2007 -0400
-
-    Fixed a whole bunch of gtk+ 2.4.x and misc issues building on an older box
-    
-    This is a fix for (Patch#) 1789290 libgeda-1.2.0 fprintf which supplied a
-    similar patch which fixes the issues in libgeda/src/s_clib.c and
-    libgeda/src/s_textbuffer.c.  In the future, all releases will be built with
-    gtk+ 2.4.x so that these sorts of problems do not get released.
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit 5e9f49ed25bf87783207906daaf915714f43259c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:56 2007 +0100
-
-    Remove the redundant TOPLEVEL variable: DONT_RESIZE
-
-commit f58bf186da0f4c19356ee4b04a839f4d6d802e74
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:27 2007 +0100
-
-    Remove gattrib's use of GTK widget pointers stored in TOPLEVEL.
-
-commit 823d692b70510986db607c8592b788ca68dbb979
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:27 2007 +0100
-
-    Remove gattrib's use of TOPLEVEL rc-variables defined in gschem.
-
-commit 48bb4b0db849e14d8c60d410a79f6cfb78400654
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:27 2007 +0100
-
-    Remove some unused / ineffective code in gattrib.
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit 703151a94b0eece6b24b3b18ce2465eeae068814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 9 12:36:17 2007 +0100
-
-    Remove old prototypes from various prototype.h where no function exists.
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit c8b92f207d9a34e5ec69aaee19cfb2cfe88a3a81
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Thu Aug 2 13:27:15 2007 +0100
-
-    gattrib: remove unused code from x_gtksheet.c
-
-commit ba79b83da22590108b7ca86e3e01de96ca05e1c9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Aug 1 22:57:05 2007 +0100
-
-    Make gattrib honour the user's answer to confirm quit? on window close
-
-commit 224f1c8c4731eacbd63634efc01dcc6eead2e19e
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 22:56:58 2007 +0100
-
-    gattrib: more dialog cleanup
-
-commit efc421976c48b6ed67537e796dd0c0fe3820d2c5
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 20:57:36 2007 +0100
-
-    move menu callbacks to x_window.c
-    
-    This patch moves all menu callbacks to x_window.c, where
-    they belong. The x_window_init() function is cleaned up.
-    Selecting File->Open now causes the "unimplemented feature"
-    dialog to pop up.
-
-commit 66e808f376b11460faec4c78834f8359969e6547
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 20:52:42 2007 +0100
-
-    gattrib: remove unused pixmaps.h
-
-commit 1aad087e0f59deb2cff728ff750bc34dcffc8ede
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 20:52:40 2007 +0100
-
-    gattrib: overhaul menu creation code
-
-commit 789581dc215e86e9455eca830c66495592246f56
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 19:27:41 2007 +0100
-
-    gattrib: remove unneeded globals
-
-commit de149fd2d81b2c5432dceadfdc1100204d0f9d4e
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Aug 1 19:27:31 2007 +0100
-
-    gattrib: reorganize file opening code
-    
-    This patch reorganizes the file opening code
-    and related code paths in gattrib. Besides
-    simplifying the code, the patch also improves
-    error reporting.
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit cb9c4ee19ca58158308a234782fdad6fb60257da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:09:56 2007 +0100
-
-    Change selection code to use a generic GedaList typecast to SELECTION.
-    
-    GedaList allows various parts of the program to keep track of changes
-    to the selection via callbacks attached to the GedaList object.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit 4e164220e934f0c4c54199e2ad357f681d623d74
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jun 27 08:00:02 2007 +0100
-
-    gattrib: Update extra distribution list
-
-commit 4d88805294a462674103a6b1a41aab153e08310a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Jun 26 23:01:55 2007 -0400
-
-    Updated gattrib's configure script to use standard gEDA/gaf VERSION= practices.
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit 3fa80f60f62e37fd2297c56b1a99bf5a29d5e912
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 21:41:30 2007 -0400
-
-    Removed indent from gattrib's configure script.
-    
-    indent is no longer used (hold back from the noweb days).
-
-commit 2482dbc0cd6d012f529e405a1e51fc1376af9b6e
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Sat Jun 23 21:32:57 2007 +0100
-
-    gattrib: convert dialogs to GtkDialog
-    
-    Make all dialogs use GtkDialog as a base.
-    This considerably simplifies gattrib/src/x_dialog.c
-    and closes bug 1710818.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit e4f3288389dd9736d328ce392f4e33d8521c5966
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:42:49 2007 +0100
-
-    gattrib: Remove old & decaying documentation file
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit 460afb7f9193cca180acb0ac5f35ff1702a8f2ba
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 21 22:43:09 2007 +0100
-
-    Fix unused variable warning in gnetlist.
-
-commit 7a68c4175f305c86a560acf3824be315b409d5ed
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Jun 13 18:56:35 2007 +0000
-
-    Convert the new attribute dialog to use GtkDialog.
-    
-    Applied patch sent by Ivan Stankovic. It is a partial fix for
-    bug #1710818 in gattrib. Thanks.
-
-commit eed0be648afd9bc421a8d0059de621df778c5fbe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:09:36 2007 +0000
-
-    Avoid writting '\r' to files on MinGW.
-    
-    Applied patch #1733826 from Cesar Strauss. Thanks.
-    When using the "w" mode in fopen, MinGW translates LF into CR-LF.
-    This creates havoc when reading the same file again, when sharing
-    schematics files with other systems, and when placing them in a VCS.
-    
-    This can be avoided by using the "wb" mode. The "b" is ignored on
-    all POSIX conforming systems, according to these sources:
-    
-    http://www.die.net/doc/linux/man/man3/fopen.3.html
-    http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
-    
-    There are other ways, however. Adding
-    
-    #include <fcntl.h>
-    int _fmode = _O_BINARY;
-    
-    on some source file should work as well. Another way is linking
-    against the MinGW supplied binmode.o, which does exactly that.
-
-commit 4e55d9355a69f2005b9afc2596526a133caf8524
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 9 14:54:33 2007 +0000
-
-    Added call to g_thread_init() in Gschem and Gattrib.
-    
-    Gschem and Gattrib aren't threaded, but some of GTK's file chooser
-    backends uses threading so we need to call g_thread_init().
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-
-#GCL#
diff --git a/gattrib/Makefile.am b/gattrib/Makefile.am
index fda0a2a..93cb30c 100644
--- a/gattrib/Makefile.am
+++ b/gattrib/Makefile.am
@@ -3,6 +3,11 @@ SUBDIRS = po src include lib design docs data
 EXTRA_DIST = BUGS NOTES README ChangeLog ChangeLog-1.0 \
 	INSTALL ToDos
 
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
+
 MOSTLYCLEANFILES = *.log core FILE *~ #*#
 CLEANFILES = *.log core FILE *~ #*#
 DISTCLEANFILES = *.log core FILE *~
diff --git a/gnetlist/.gitignore b/gnetlist/.gitignore
index 2d4ca21..71c8f90 100644
--- a/gnetlist/.gitignore
+++ b/gnetlist/.gitignore
@@ -25,3 +25,4 @@ GTAGS
 HTML
 gschem.log
 gnetlist.log
+ChangeLog
diff --git a/gnetlist/ChangeLog b/gnetlist/ChangeLog
deleted file mode 100644
index 8252074..0000000
--- a/gnetlist/ChangeLog
+++ /dev/null
@@ -1,1721 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 21e8c0b232e08927fd091a1d46413990b4c61358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:18:34 2009 -0400
-
-    Updated all dates in the relavent man pages (for 1.5.2.20090328)
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit c3081930ed224394f645de4bfb51e86fa3e15e65
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 20 23:26:12 2009 +0000
-
-    Remove obsolete references to libgd and libgdgeda
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit ee250c9bd2e88bf352a03d1719603b7d54fe430c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:30 2009 +0000
-
-    Avoid underlinking of apps due to missing explicit depends
-    
-    These went unnoticed because the apps were resolving the necessary
-    symbols when pulling in libgeda and its dependencies.
-    
-    Fix applications using GLib and guile within the suite to explicitly
-    pull in the appropriate CFLAGS and LIBS. This commit removes some
-    LDFLAGS and LIBS from grenum, since they weren't being used.
-
-commit 75d03b030f4e3e491710a409bbcf18cc4a16f300
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 23:26:28 2009 +0000
-
-    Remove executable permissions from some data-files in the repository
-
-commit 1645fda42758a837c7ccf1efd32fd3b484e22421
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:17:44 2009 +0000
-
-    Remove unused GTK dependencies from text-based tools
-
-commit a344ff9c33b9bbb7b1a622b70dcedf393e1de09a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 20:41:43 2009 +0000
-
-    Remove some unused Gdk* typed variables from globals.[ch] across the suite
-
-commit 42a5bebc27f842b1955d9626f2521eea124259a0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 9 01:04:14 2009 +0000
-
-    gnetlist: Teach netlist traversal code to understand buses (still disabled)
-    
-    Up until recently, the connection scanning code has rejected some, but not
-    all buses. This means that it is unlikely graphical buses formed a useful
-    part of anyone's design, since the netlist code in s_traverse_net()
-    would not follow connections to another bus segment. The only possible
-    bus-pin connectivity has ever been "pin-bus-pin", or "pin-bus-net-...".
-    
-    This behaviour appears to have been accidental, and would not have been
-    easy for a user to take advantage of. The traversal code would not move
-    on to a subsequent bus, but would, for example, allow a pin->bus->!bus
-    connection, which could then connect onwards. The bus mixed up in this
-    would for all intents and purposes behave as a net.
-    
-    The pin->bus validity bug was actually fixed in libgeda when adding
-    support for bus pins. This commit formalises it further, since if
-    support for netlisting bus pins were enabled it would otherwise still
-    be possible to get a buspin-bus-net-... connection if you tried hard.
-    
-    Introduce type-checking between pins, nets and buses such that they can
-    not netlist where the object types don't match. For buses, the code to
-    name a connection based on "netname", "net" or "label" attributes is
-    disabled - pending decision as to what constructs we wish to use for
-    naming buses. Add a gnetlistrc setting (unnamed-busname ...) which sets
-    the default naming (if the connection scanning code were run on bus pins).
-    
-    This commit lays some of the ground work for shared connection scanning
-    code for determining the connectivity of buses and bus pins.
-
-commit a838dece88323eb782b0ac301c5825ed693fbf0f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 9 00:57:40 2009 +0000
-
-    gnetlist: Disable traversal of bus pins when checking connectivity.
-    
-    We don't want graphical buses to be netlisted at present. Currently
-    their output (although not correct connectivity in all but simple
-    cases) can get muddled up with the normal netlist fed to backends.
-
-commit d18bfe1738347a1546f5bf1dd5011fb796176de1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 8 23:05:32 2009 +0000
-
-    gnetlist: Refactor s_traverse_component() and s_traverse_net() slightly.
-    
-    Removes some duplicated code by not special-casing the first level of
-    recursion when tracing out connections.
-    
-    The only outward change from this commit should be that nets / pins found
-    immediately connected to a pin being inspected get their "n" or "P" print
-    in the verbose debugging output. (One of the codepaths being consolidated
-    didn't have them before). Unconneced pins no longer get a "p" print, since
-    the traversal code isn't executed for them.
-
-commit 2d888258d954c993aa03e4a1beb7b03e62df4d95
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 8 00:45:28 2009 +0000
-
-    gnetlist: Avoid depending on GHashTable ordering for output consistency
-    
-    If the GLib hash table changes (which it has in late versions of GLib),
-    the netlist output ordering changes due to our mis-use of GHashTable to
-    list all unique component names without enforcing any eplicit order on
-    the enumeration of the hash table contents.
-    
-    Since ordering may be important to backends, want to have known output
-    ordering whilst removing duplicate entrys, but without an explicit sort
-    of the refdes list.
-    
-    This commit introduces an incremental build of the list, first checking
-    the hash table for a hit, and only adding the new refdes if it wasn't
-    already in the has table. This is gives the output a predictable order
-    (based on the input), rather than inserting all refdes into the hash
-    table, and building the list in whatever order the table implentation
-    traverses them in.
-    
-    This change does unfortunately means a large number or ordering related
-    changes are also made in the gnetlist test suite's golden files.
-    
-    There are also some non-ordering changes in the checked in golden files.
-    These is encountered in the pretty well obsolete PCBboard backend - which
-    errors out when it hits certain components it can't find footprints for.
-    Changing the ordering changes the point at which it dies, and thus the
-    netlist output. Lets just accept these changes as is.
-
-commit d57fcbf52893127f5a37656f65c6f076c6d51470
-Author: Maciej Pijanka <agaran@xxxxxxxxxxxxx>
-Date:   Thu Jan 8 00:33:25 2009 +0000
-
-    gnetlist: Fix test/hierarchy*/Makefile.am to detect failures
-    
-    Unfortunately the exit code weren't getting propagated back from diff,
-    so the test-suite would continue on inspite of errors.
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit ca6556ace0a06ec1dd697852f7a1f0ffb86bfb97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:57 2008 +0000
-
-    Add "const" to some places where we deal with GLists of OBJECTs.
-    
-    These GLists themselves are not (and shouldn't be) modified, although
-    the OBJECTs they point at may well be.
-
-commit 714580df3fee12732d5e1180722f008a47aaf973
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:53:42 2008 +0000
-
-    gschem: Don't define key-bindings for keys which have no-action
-    
-    If we do this, then when we set "no-action" to a menu item's key binding,
-    the code will try to display one of the keys associated with "no-action"
-    as a binding for that menu item.
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 4f9f4336a123f91318ec2d1ffd8e9739eb756348
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:10:23 2008 -0500
-
-    Updated dates and versions in all man pages
-
-commit d8cc920d932f1557f3d93da6abd1d99e690f39ef
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 21:47:12 2008 +0000
-
-    gnetlist: Optimise connection traversal algorithm
-    
-    Increase performance for traversing schematic connections by
-    optimising tracking of how many times objects have been visited.
-
-commit 8b171391d26ee79ecccff732ff9ccb257460b815
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 16:06:27 2008 -0500
-
-    Fixed up drc2's gnetlistrc to work with both make check and make distcheck
-
-commit edf990235cac2fe6ac2ca6e120f198fd14d05ed7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 14:56:02 2008 -0500
-
-    Added missing liquidpcb to the subdirs in order to make distcheck work better
-
-commit 45dae54fa28ec09313806a80781f9dd6b8d35485
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 14:42:40 2008 -0500
-
-    Ignored a few machine generated scripts
-
-commit 24d24fcc3ab6ecbec321d38fc011513df521c122
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 14:40:42 2008 -0500
-
-    Fixed a typo in tests.list which caused the JD_nomunge test to not run
-    
-    Fixing this typo also required the regen of all Makefile.am, creation
-    of JD_nomunge.retcode, and changed a few golden files.
-
-commit 59a09888c3a0f70af8312da604a98cb2d0c411d5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 19:36:09 2008 +0000
-
-    gnetlist: Fix regen_sub_makefile.sh
-    
-    Needs /bin/bash, and an -e argument to the second echo.
-
-commit 581f8cec3d5e717fa78417772759b4525a52f458
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 18:56:35 2008 +0000
-
-    gnetlist: Restore bom2 ordering
-    
-    The changes in 51c2a5c9f7f9ad1c99b9da2774a051ae97f3e62e caused the
-    ordering of components in the BOM output to be reversed. This changes
-    the ordering back to the way it was before.
-
-commit 51c2a5c9f7f9ad1c99b9da2774a051ae97f3e62e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 18:23:22 2008 +0000
-
-    gnetlist: Improve bom2 backend performance.
-    
-    Change part of bom2 backend to use tail recursion, avoiding stack
-    overflows for very large schematics. Tested with up to 1024 devices,
-    but gnetlist core performance made testing with larger schematics
-    problematic.
-
-commit fff0850cbff67ded4dc53138679e2f5f445f86cd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 17:08:50 2008 +0000
-
-    Revert "gnetlist: Update golden files for backends which hit errors."
-    
-    This reverts commit 9928a19d3374c5d7ff672f8435a5f29476b2bba2.
-    
-    gnetlist should not exit with a status of 0 when encountering
-    an error. This behaviour change has been fixed in commit
-    16102ef095c959b5c1febb9b9259dda23c739258, which reverted part
-    of commit 2a4fdb13021d0153e788fe3b2fc005f273dcdf4b, where the
-    changes were first introduced.
-
-commit 9904adcf923855f10a64c5fb15cde22d0766155d
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 16:44:01 2008 +0000
-
-    Fix potential buffer overflows in gnetlist.
-    
-    gnetlist's main_prog() had several uses of sprintf() into a fixed
-    length buffer with unchecked user input. Replace these with
-    g_strdup_printf() and g_build_filename().
-
-commit 16102ef095c959b5c1febb9b9259dda23c739258
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 16:07:03 2008 +0000
-
-    Quick fix for gnetlist exit status.
-    
-    In 2a4fdb13021d0153e788fe3b2fc005f273dcdf4b, gnetlist was modified to
-    use g_scm_c_eval_string_protected() to call into
-    backends. Unfortunately, this had the side effect of stopping Guile
-    errors thrown by backends from causing gnetlist to exit with non-zero
-    exit status.
-    
-    This is a quick fix which partially reverts the offending commit.
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 9928a19d3374c5d7ff672f8435a5f29476b2bba2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 20:54:25 2008 +0000
-
-    gnetlist: Update golden files for backends which hit errors.
-    
-    Gnetlist now returns with an exit code of 0, even when it encounters
-    problems from inside the backend's scheme code, and that code exits
-    with an (error ...) call. Update the golden files to reflect this.
-
-commit d13aadcbac4af912e0555b3696b59fc904c6cd9f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 20:54:02 2008 +0000
-
-    gnetlist: Checkin missing change to systemc backend
-    
-    This part of the fixes for the systemc backend got missed from
-    commit #bfd49ad477a49235c3e5ee1eda54e5009f6e347a
-
-commit 4ff7f410e4e601b85e5b6d0b8d4b6b930e49072b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 20:51:48 2008 +0000
-
-    gnetlist: Update common test-suite outputs for "systemc" backend
-    
-    Updated after fixing the backend to run again.
-    
-    NB: A cursory inspection of the "golden" files, suggests that the outputs
-        being checked in are not actually correct. However, the test-suite
-        will serve to tell us if any changes are made in gnetlist which affect
-        this backend.
-
-commit bfd49ad477a49235c3e5ee1eda54e5009f6e347a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 20:44:59 2008 +0000
-
-    gnetlist: Fixup systemc backend
-    
-    Don't escape < and > characters in strings, as guile doesn't like this.
-    
-    Apply similar fixes as those made to the VHDL and verilog backends after
-    some changes in gnetlist to accomodate slotting in spice-sdb. Since the
-    netlist backend is loaded before gnetlist has traversed the schematic, it
-    must not execute any code which queries gnetlist on load. All such work
-    is to be done only when gnetlist invokes the "systemc" method.
-    
-    Move (define c_p #f) to outside (systemc:components ...)'s (lambda ...)
-    function, since guile doesn't appreciate us mixing declarations and
-    expressions. This variable is tested and (set! c_p #t) later on, which
-    doesn't feel very scheme like. The fix works for now though.
-    
-    Check to see if the regexp matched netname, checking for "name<type>" has
-    hit a match before trying to get a piece of that match. If the regexp
-    returns #f, instead just treat the identifier as a "name" and use that.
-    This allows net names which don't conform to the regexp to at least give
-    some vaguely sensible output, without crashing the backend.
-    
-    Comment some debugging prints to stdout, giving a cleaner looking run.
-
-commit 55850bb331afc0596a18dac1807a487cb475b30d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 19:05:47 2008 +0000
-
-    gnetlist: Add new "liquidpcb" backend to the common test-suite
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit d3a0d4da489f9cd213472e58d18f21774760984b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:57:17 2008 +0000
-
-    Tolerated changes in golden files for the spice netlist backend.
-    
-    The way slotted parts are handled has changed since 1.2.0, as
-    has the output of the spice backend for slotted parts. Since
-    the spice backend doesn't properly support slotted components,
-    we allow these output changes.
-
-commit 227e5102e722675c93ecf897b1b1c422dd7f032c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:48:06 2008 +0000
-
-    gnetlist: Revert removal of spice backend testing
-    
-    This backend was removed from the common test-suite prior to the last
-    release due to failures. We still want to test the backend, although
-    we may wish to accept some changes to the golden files before the next
-    release.
-
-commit 40e4a0836529f91ee141463832beb4fea0d845ec
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Mon Dec 1 20:34:02 2008 -0500
-
-    Use the uninstalled scheme files instead of installed scheme files.
-    
-    When running the tests, point at the not-yet-installed scheme files.
-    This lets 'make check' test out what you just built instead of something
-    that is installed that may be sorely out of date.
-
-commit 817e5dcfe478ae02f60d74ca1574518a1976bd17
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Mon Dec 1 02:55:24 2008 -0500
-
-    Run all tests and report failures at the end.  Also add missing .PHONY.
-    
-    - Add missing .PHONY to the tests target.
-    - Rather than exiting on the first test that fails, run them all and
-      keep track of how many failed and which ones.  This lets you run
-      through all the tests and then come back to the failed ones.
-
-commit 635546dcc9615c490e85ff6e7ef0c7d990af6842
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Sun Nov 30 00:04:02 2008 -0500
-
-    Specify the path to the gnetlist binary being tested.
-    
-    Point at the locally built but perhaps not yet installed gnetlist
-    when running 'make check'.  This helps make sure we are testing
-    the right gnetlist.
-
-commit 51896e033129dada3f96a3448e189e19554c239a
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Sat Nov 29 22:11:32 2008 -0500
-
-    Remove files which are now generated at configure time from templates.
-    
-    These files are now generated from the .in versions at configure time
-    to make sure we get a suitable awk implementation called out.
-
-commit 1625b379e7066ffe2a8283a4977c794ff55b7db4
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Sat Nov 29 21:11:07 2008 -0500
-
-    General portability cleanup of scripts.
-    
-    Expand the autoconf tests for awk to make sure that we have picked up and
-    awk that is good enough for the scripts that use them.  Now use this result
-    in various scripts instead of hard coding 'gawk' (not available on all systems)
-    or 'awk' (picks up the original awk which is not sufficiently advanced on solaris).
-    
-    Also avoid calling out /bin/bash on scripts for which /bin/sh (even on solaris) should
-    be sufficient.  Not all systems have /bin/bash.
-    
-    Finally, improve temp file usage in shell scripts for improved security.
-
-commit 1d6a2045f618cb2441d386811a49fc3c1686ff13
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Sat Nov 29 20:54:19 2008 -0500
-
-    General portability cleanup of scripts.
-    
-    Expand the autoconf tests for awk to make sure that we have picked up and
-    awk that is good enough for the scripts that use them.  Now use this result
-    in various scripts instead of hard coding 'gawk' (not available on all systems)
-    or 'awk' (picks up the original awk which is not sufficiently advanced on solaris).
-    
-    Also avoid calling out /bin/bash on scripts for which /bin/sh (even on solaris) should
-    be sufficient.  Not all systems have /bin/bash.
-    
-    Finally, improve temp file usage in shell scripts for improved security.
-
-commit 5bf126369c5f5a60f5ae039170c33ff4c767a4ee
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Wed Nov 26 22:48:08 2008 -0500
-
-    Avoid insecure temp file usage.
-    
-    Fixes the security vulnerability noted in http://secunia.com/advisories/32806/
-    The issue is insecure temp file usage.  The fix is to create a private directory
-    and keep temp files in there.
-
-commit c7dfc632ea75a802822fc139a93a96a3dfdcd1b2
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Nov 18 22:47:00 2008 -0500
-
-    When testing gnetlist, point to the one we just built.
-    
-    Make sure that 'make check' works correctly prior to installation.  The
-    old test seemed to be picking up a previously installed gnetlist instead
-    of the one we just built.  Makes for some confusing debugging if there is
-    another version installed and in your path somewhere.
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit 3a748314907a0167fc06fe08be498f40c6c7f318
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 17:46:01 2008 +0000
-
-    More placeholders for fixing some warn-unused bugs
-    
-    Some were missed in the last (accidental) commit
-    relating to these warnings.
-
-commit 2b1c2026611ef56fba3c07e88d1292b19047e818
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 17:45:57 2008 +0000
-
-    Use -Werror when building with gcc compilers. (More Makefile.am)
-    
-    Hopefully this will help to ensure compiler warnings get noticed
-    and fixed by developers.
-    
-    Some Makefile.am with compiled sources were missed in the last
-    (accidental) commit relating to these CFLAGS.
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit 816c8735215b76faeaa15bfc5de01d345aedc87d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 20:07:13 2008 +0000
-
-    Update golden files for gsch2pcb backend
-    
-    These were out of date since changes were made to make the gsch2pcb
-    backend to emit boards which fit better with PCB's current default
-    options and layer stackup.
-
-commit aa6b1cf719bc8c31c1763a6160e133e6e3bc46ce
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 20:07:12 2008 +0000
-
-    Update golden files for PCBboard backend
-    
-    The "singlenet" output now emits the PKG_DIP14 package correctly,
-    whereas the previous golden file just has the M4 macro listed
-    unexpanded.
-    
-    Whether some bug was fixed, or if this was just a mistake when the
-    previous golden files were generated is unknown, but the new output
-    is better.
-
-commit 2b5ac5d34a71bfb5f91012ac14bbf2e442858303
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 20:07:12 2008 +0000
-
-    gnetlist: Update golden files for desired BOM2 changes
-    
-    BOM2 now has a qty column, so update the test-suite to match.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit 2a4fdb13021d0153e788fe3b2fc005f273dcdf4b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Oct 21 16:52:09 2008 +0100
-
-    Validate calls to scm_c_eval_string(). [2105219]
-    
-    Because the reporter's version of Guile is broken, a lovely garbage
-    collector segfault occurs if a null string is passed to
-    scm_c_eval_string().
-    
-    For now, wrap all calls to scm_c_eval_string() with mutable arguments
-    in g_scm_c_eval_string_protected(), and since the latter function
-    seems to behave when passed a NULL string this bug should just go
-    away.
-
-commit 79ab7bd82c3f2bb5266a6065512730157798ec2d
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Oct 13 21:44:38 2008 -0400
-
-    Added first cut of the LiquidPCB (http://www.liquidpcb.org) backend
-    
-    Also added a couple of trivial tests for this new backend
-    as well as updated the man page for gnetlist.
-
-commit f0a96de8b545dbd900e87db6abf54a0b6df830ab
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 09:02:03 2008 +0200
-
-    .gitignore: log files and source tagging files added
-    
-    Added the files of the "global" source tagging program
-    and the logfiles of the gEDA programs to .gitignore.
-
-commit 2a9f5584219a894557aa7fd97f94a9a941c5bc1b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 1 18:17:19 2008 +0100
-
-    gnetlist / gsch2pcb: Update default board to match current PCB version.
-    
-    Ensures greater compatibility with layouts created using PCB from the
-    outset, rather than via gsch2pcb.
-
-commit a17b67c07298e707fbfa2d10f8ec18c16b0b7482
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 1 17:57:42 2008 +0100
-
-    gnetlist / gsch2pcb: Fix default PCB board to have lines clear polys.
-    
-    This bad default keeps biting users of the gsch2pcb work-flow.
-
-commit 05d7c0a430e2334fc24f561268f5dbcee62d14ad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 02:37:02 2008 +0100
-
-    gnetlist: Tidy vams_get_package_attributes() and vams_get_attribs_list()
-    
-    Refactor the code to be cleaner, fixup whitespace, remove old debug cruft.
-
-commit fbdc2486cc9bf99bc79408ef5b08189a94c89bc1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 02:36:22 2008 +0100
-
-    Remove ineffective search inside symbol in vams_get_package_attributes()
-    
-    The call to vams_get_attribs_list (...->complex->prim_objs, ...) will
-    always fail to return names. This function operates on the passed
-    OBJECT, looking at OBJECT->attribs. In this case, the passed OBJECT
-    will always be a complex head node with no attributes.
-    
-    We _might_ want to list the names of any floating attributes inside the
-    object (as seems to have been intended in the original code), however
-    all "interesting" generic attributes will probably have been promoted to
-    the outside anyway. Promotable attributes inside symbols are only hidden
-    by default (not deleted), so listing the internal attributes would mean
-    we end up with two copies of each promotable attribute in our SCM list.
-    
-    There are also quite a number of uninteresting attributes inside most
-    symbols which we may not want listing as generics. For now delete the
-    broken code attempting to list internal attribute names.
-    
-    This commit doesn't change any netlist output.
-
-commit f4dab83b1ca0e197f02f520a6ae525aeac5a252d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 01:07:43 2008 +0100
-
-    gnetlist: Use the complex_parent property of an OBJECT, not the HEAD node.
-    
-    This saves having to traverse back to the HEAD node for each lookup.
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit c95bd0a1f21be899510e07af28d0190fc09dc469
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:29 2008 +0100
-
-    Remove unused #define DEFAULT_SERIES_NAME ... defines
-
-commit a974a4c6d2c233c9209c5b4597f7d4f86154f484
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:28 2008 +0100
-
-    Remove default-series-name from all rc files
-    
-    Fixes brokenness leftover from previous removal of "series_name".
-
-commit 73a73cd0cb54d0f9430075aa00359b7840bd8d2c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 17 02:19:49 2008 +0100
-
-    Add qty column to bom2 gnetlist backend
-    
-    It is convenient for board-assembly houses who want to see a qty.
-    against each line-item they have to procure.
-
-commit e36585def8789540f25464edecbf119706882958
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 17 01:59:29 2008 +0100
-
-    gnetlist: Don't drop all hierarchy prefix for children without refdes=...
-    
-    If a hierarchy block is missing its refdes=... attribute, insert it
-    without any change of hierarchy prefix. The block's contents keep the
-    same hierarchy level as the instantiating schematic. Previously the block
-    was inserted at the root level, with no hierarchical name mangling.
-    
-    This may be useful in some cases if you want to suspend hiearchy mangling
-    for certain portions of a hierarchical design. (NB: You would then be
-    responsible for avoiding refdes name clashes). A similar effect can be be
-    obtained on a design wide basis by setting the options:
-    (hierarchy-*-mangle "disabled") in a gnetlistrc file.
-
-commit 1a1460c65a9d4e0aee35e39fff0f083c95bd380d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 19:18:24 2008 +0100
-
-    Remove the ATTRIB struct as it only contained one variable.
-    
-    The OBJECT.attribs GList now points directly at the text objects which
-    hold and display the attribute name and value.
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 723e8d1c735b27f2bfc39dec296464bb8d5b2020
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    Don't register recalc funcs as draw funcs.
-    
-    Some applications which don't draw schematics set the draw funcs to be
-    the recalc funcs. This is silly.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit 872287f23b4880b01babed777efe7976783feab2
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:05 2008 +0200
-
-    Cleanup of libgeda o_attrib_get_name_value().
-    
-    Rewrote o_attrib_get_name_value(): it now has support for UTF-8
-    attribute strings ; plus it can return only the name or the value or
-    both name and value.
-    
-    Finally adapted code wherever it can benefits this new feature.
-
-commit a76cf5cdda91c7070f4765107d3f8be89bbd05b6
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:01 2008 +0200
-
-    Remove unnecessary strippings of trailing directory separator.
-    
-    These strippings is no more necessary as GLib functions for building
-    filenames (in particular g_build_filename()) takes care of any
-    trailing directory separator for us.
-
-commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:00 2008 +0200
-
-    Replace getcwd() with g_get_current_dir().
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit 19d6d561eb5aea8e580d6ecf72d20bdfc3180ace
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:58 2008 +0200
-
-    Remove unnecessary check following memory allocation with GLib g_malloc().
-    
-    There is no need to check g_malloc() returned value as when the
-    function fails to allocate memory, it terminates the application.
-
-commit a3513b7e6dc7bf6c36d95d4da86082beeb79831d
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:57 2008 +0200
-
-    Replace standard string manipulations with GLib string utility functions.
-
-commit da1d2e7b304f9d832bdee9c8dfb9fe4604e19cc9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:56 2008 +0200
-
-    Remove tests for NULL prior to freeing with g_free().
-    
-    Testing if pointer on memory to free is not NULL is unnecessary
-    since g_free() does the test itself.
-
-commit 21bdf2fbbad2146234fd32a0fe04bddcaddb64f8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:21:00 2008 -0400
-
-    Updated versions in the important man pages
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 24a38431a0d955928639311af924b8b0acf1e0db
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 10:03:24 2008 -0400
-
-    Oops needed to remove outputs/spice from configure.ac as well
-    
-    This is an additional fix to f3ed4237658fc27a6e60e1da0c8fc9c2af2646ed
-
-commit f3ed4237658fc27a6e60e1da0c8fc9c2af2646ed
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 09:55:14 2008 -0400
-
-    Fixed common gnetlist regression tests to pass
-    
-    * Removed the testing of the "spice" backend completely.  It is no
-      longer supported or maintained.  Removed from backends.list and
-      the outputs/spice directory
-    
-    * Updated return codes for the drc2 backend
-    
-    * Allowed --regen to update one PCBBoard golden file (singlenet.sch).
-      (this test is really not pcb friendly)
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit aaa1abbcfac8e67901c5b2a279e0a13f88d774b0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 31 18:04:40 2008 +0100
-
-    Tolerated changes in golden files for the vipec netlist backend.
-    
-    The way slotted parts are handled has changed since 1.2.0, as
-    has the output of the vipec backend for slotted parts. Since
-    this backend isn't likely to care about slotted parts, we allow
-    these output changes as harmless.
-
-commit ae9d82b1fdcd14acde5cbf4d54718ef3566aec80
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 31 18:03:50 2008 +0100
-
-    Desired changes in golden file output for spice-sdb
-    
-    Slotted parts are now handled correctly. Was partly broken in 1.2.0.
-
-commit 850a80faa3038f688ef3630aff61a05c64904abc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 31 17:48:57 2008 +0100
-
-    Update pads backend golden files to match the new \r\n line ends.
-    
-    The \r\n line end change was made after 1.2.0, so we need to update.
-
-commit 345cd09f3517380a466a3254b1f6dc16ef2ce896
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 31 17:47:49 2008 +0100
-
-    Remove the spice-sdb backend specific directory of gnetlist tests.
-    
-    They are now covered for all backends in the "common" tests directory.
-
-commit 8a0e4e649e0aab8820fcca32214f99322788bc31
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 31 17:43:08 2008 +0100
-
-    Commit golden files from netlist backends as produced by gEDA 1.2.0
-    
-    We want to track changes in netlist backend behaviour since version 1.2.0,
-    as changes in slotted part handling since then have caused unintended
-    differences in outputs for some backends. We can explicitly confirm
-    thoses changes as desired or tolerable by checking in new golden files.
-
-commit dc5a2e6b352ac4e5833ec86c0685da747362e04a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Feb 13 16:47:40 2008 +0000
-
-    Add a common set of tests to gnetlist evolved from the spice-sdb tests.
-    
-    The tests are applied to all backends, with control files being used to
-    document the expected return codes, and golden files with the expected
-    output. These files are generated from a 1.5.0 development release of
-    of the gEDA suite, and do not in all cases represent "correct" behaviour,
-    merely "gEDA 1.5.0" behaviour.
-
-commit c1b1d3646043f27302b36a4b541bc9b34fbfe6b9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Mar 22 19:31:04 2008 +0000
-
-    gnetlist: Remove first-val-or-#f
-    
-    The first-val-or-#f function should have been removed in commit
-    406234a95a4a4a6ff65c60eb2d63e32c80623a2a when its use was optimised
-    away.
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit b62e01773459c0c5df66482aa71c623191242bfd
-Merge: 2915020... d68fe13...
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Wed Feb 27 12:40:21 2008 +0000
-
-    Merge branch 'master' of git+ssh://dan@xxxxxxxxxxxxxx/home/git/gaf
-
-commit 291502025248298b4d42cfbd80ff605dc62c3f92
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Wed Feb 27 12:36:12 2008 +0000
-
-    Make the pads netlist backend use CR/LF instead of just LF.
-    
-    Based on a discussion on the gEDA mailing lists it seems that PADS
-    (which runs only on windows) needs DOS style netlists and not unix
-    style netlists.  So rather than forcing a unix2dos step in beween
-    netlisting and using the result, go ahead and teach the pads netlist
-    backend to directly write out a DOS style netlist.  Update the
-    testsuite accordingly.
-
-commit db168efbbe2656ef2103852e92e02ec3ce58e300
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Feb 13 14:59:45 2008 +0000
-
-    Fix verilog and VHDL netlist backends
-    
-    These were inadvertently broken when making core gnetlist changes to
-    accomodate slotting in spice-sdb. Since the netlist backend is loaded
-    before gnetlist has traversed the schematic, the backends must not
-    execute any code which queries gnetlist on load. All such work is
-    to be done only when gnetlist invokes the (<backend>) method.
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit ecda6ee9e101563f7fed092150532256fd9b343e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:50:16 2008 -0500
-
-    Updated all dates and versions in all man pages
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 0dfb874e72040b74679152d75ab2e50b735bdbd4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 11 02:01:58 2008 +0000
-
-    Revert "gnetlist: Strip trailing lower case suffixes from PCB package names"
-    
-    Stripping lower case refdes suffixes when netlisting for PCB (which
-    ignores lowercase refdes suffixes) caused breakage when relying on
-    matching a pinlabel=xxx to refdes=xxx inside a hierarchical
-    schematic, where "xxx" had a lowercase suffix.
-    
-    This reverts commit e8b3be0fbcbf7518b05b437e13eeaa11478345aa.
-
-commit c1e3075cb263a6098d2351440b680247456ae0d0
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:27:16 2008 -0500
-
-    Updated and correct the gEDA/gaf man pages a little bit.
-    
-    This is the fix for SF Bug: [ 1556064 ] man page version out of date
-
-commit e8b3be0fbcbf7518b05b437e13eeaa11478345aa
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 10 01:52:45 2008 +0000
-
-    gnetlist: Strip trailing lower case suffixes from PCB package names
-    
-    Adds a custom (get-uref ...) function to the PCB, pcbpins and gsch2pcb
-    back-ends. These strip lowercase suffixes from the uref, to ensure that
-    slotted package names like IC1a and IC1b are treated as the same, IC1
-    by gsch2pcb.
-    
-    This suffix stripping matches the fact that PCB ignores the lower-case
-    suffix on net names. It would have been possible to leave the suffixes
-    in the PCB and pcbpins output, although in the PCB netlist case, this
-    causes any implicit power nets in each slot to be duplicated in the
-    netlist, which PCB reports as an error.
-
-commit 24431dfb4348c1fa012acb4992e3dd24a78359b5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 10 01:52:32 2008 +0000
-
-    Fix spice-sdb slotting to work without modified pinseq attributes
-    
-    Removes all previous code which iterated over slots for a given package,
-    replacing it with a custom (get-uref ...) procedure which ensures each
-    slot of a component is given a unique uref when gnetlist traverses the
-    schematic. This means each slot will appear as a separate "package" in
-    the gnetlist data-structures, even if each slot uses the same refdes=
-    attribute.
-    
-    The format for the package uref is "(refdes/uref).(slot)", in keeping
-    with the existing spice-sdb slotting code.
-
-commit 406234a95a4a4a6ff65c60eb2d63e32c80623a2a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jan 10 01:52:08 2008 +0000
-
-    More efficient searching of attributes in (gnetlist:get-uref ...)
-    
-    Only evaluates get-attrib-value-by-attrib-name once per call, and has the
-    added advantage of only defining helper functions in local namespace.
-
-commit 3279e37ff18bfa353ada00f63d0ccf94975daf56
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 10 01:29:58 2008 +0000
-
-    gnetlist: Add scheme procedure get-uref to determine uref of an OBJECT
-    
-    Moves the logic to determine an uref based on the component attributes
-    into the Scheme procedure (get-uref ...), which is passed an OBJECT smob
-    for interrogation.
-
-commit fa9779d19f1a6a626948ec996735978941883f5d
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Thu Jan 10 00:58:35 2008 +0200
-
-    Fix two use after free bugs.
-    
-    The gnetlist testsuite would sometimes screw up the terminal by
-    outputting angry control characters.  This was because a warning
-    message used a string that had already been freed.
-
-commit aafa53bb3e4b248e178a654883db2ba1177c5750
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 10 00:25:20 2008 +0000
-
-    gnetlist: Load gnetlist.scm and backend before schematic traversal.
-    
-    Allows gnetlist.scm and backends to define scheme procedures and
-    variables which may be used to control the schematic traversal process.
-    
-    Since some portions of of gnetlist.scm are evaluated immediately upon
-    load, yet require execution _after_  schematic traversal, these portions
-    have been split out from gnetlist.scm into a new file, gnetlist-post.scm
-    which is loaded after traversal.
-    
-    The moved definitions are those of "packages", "all-unique-nets",
-    "all-nets", "all-pins", and the refdes aliasing functionality.
-
-commit 82dd20fe6d7a5022cebcc40c2a6ad73af230901c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 9 23:00:55 2008 +0000
-
-    Change some tabs in gnetlist.c to spaces. Alter some other whitespace.
-
-commit c29a844384a176d2880ee47aac8999ef017e50a2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 9 22:08:05 2008 +0000
-
-    gnetlist: Clean up some old comments and EOL whitespece in gnetlist.c
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit b9ffb4675fbca6e92a4f713c28486e74dcbbeef4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 15:42:13 2008 +0000
-
-    Fix configure checks for Guile.
-    
-    Quote variables to protect them and alter version test logic so that
-    it doesn't think version 2.1 is older than 1.8.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 9d3166d44b07da85ac1c4e0185daf0c67e7096ea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:52:29 2007 -0500
-
-    Commented out test which now no longer runs correctly because of slotting fix.
-    
-    The slotting fix is commit 5852e531717ba947b7acca39e50f71edd5921f06.
-
-commit e5f31fa0ba725c4a8a7dcacb47166a1468a357b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 21:26:02 2007 +0000
-
-    gnetlist: Make drc2 backend not emit exceptions.
-    
-    The drc2 backend reports drc violations by emitting an error, but it
-    can do it more gracefully using the Guile display function.
-
-commit e4c80c8a9930ebef25427053d33c5038feed31d0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 21:12:49 2007 +0000
-
-    gnetlist: Fix segfault on failing to load schematic.
-    
-    Segfault was introduced when schematic load error messages were added
-    in commit b635ebb641383360e5e7864830d42d13cf7f4d12.
-
-commit fc7b46cce236e52af5d9f9b4f38061595ed5129e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 20:57:33 2007 +0000
-
-    gnetlist: Hide a debug message from spice-sdb [1856326]
-    
-    A user complained that it appeared to be an error message and was
-    offputting for users. Changed it to use debug-spew.
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit b635ebb641383360e5e7864830d42d13cf7f4d12
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Print useful messages when f_open() fails.
-    
-    This reinstates error messages removed by the patch which modified
-    f_open() to use GError for error reporting.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit 43b571362e5fb663115ee1630b94c88cb74f0c13
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 18:24:10 2007 -0200
-
-    Replace index and rindex by strchr and strrchr.
-    
-    These are functionally equivalent, and more portable to MinGW.
-
-commit bdd7ef7ee9047c3942b43c165396ebe48d31e95a
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 14:17:21 2007 -0200
-
-    Use g_path_is_absolute from GLIB instead of platform specific code.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit d715ba7dc3e02d77e671b9ab54b994379daefec5
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 13:34:40 2007 -0200
-
-    Tell git to ignore .exe files.
-
-commit 23ead18086e59aab22945c37ff95f49e5747f277
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:50:39 2007 +0100
-
-    Remove the ATTRIB linked list in favour of a GList
-    
-    The ATTRIB.copied_to pointer is moved from the ATTRIB struct to reside in
-    the source OBJECT being copied.
-    
-    The ATTRIB *attached_to pointer of an attribute's text OBJECT is changed
-    to OBJECT *attached_to, pointing directly at the OBJECT to which that
-    attribute is attached. This avoids the need to traverse the ATTRIB list
-    and retrieve this pointer from the HEAD attribute node. (A HEAD node is
-    not used in the GList of ATTRIBs).
-    
-    The ATTRIB structure now only contains one element, OBJECT *object. This
-    points to the text OBJECT holding and displaying that attribute's
-    "name=value".
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit 8952ec9bd4f4985fae8aadd6c4103b933464152a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:01:14 2007 +0100
-
-    Remove unused extern variables from libgeda, gnetlist and utils.
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 0aad767df307a70d9fefc73fb08a49908cc26706
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 16:50:29 2007 -0400
-
-    Fix for Bug#1776547: graphical versus source
-    
-    The usage described in Bug#1776547 is pretty unique, but it might be handy
-    to support in general.  The recursive source= and graphical= behavior is
-    a unexpected side effect of the traversal of graphical symbols/components
-    (552e06e921e4b6eb758b9483d1913c39b3fef5f5).  The fix is to explicitly
-    check for the graphical= attribute and if it is found to not further
-    traverse the hierarchy.  Regression tests were added so this behavior
-    doesn't change in the future.
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit 703151a94b0eece6b24b3b18ce2465eeae068814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 9 12:36:17 2007 +0100
-
-    Remove old prototypes from various prototype.h where no function exists.
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit 525b4a0ff3a1b8cc321f117513796e4571702da8
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 09:56:33 2007 -0400
-
-    Applied patch to use $(GROFF) instead of which groff
-
-commit 31f65059cf1ce5be9b8a0987d4538fed075a6805
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jul 25 02:09:15 2007 +0100
-
-    Fixed two calls to free() where g_free() should have been used.
-    
-    Updated Doxygen comments to note where memory should be freed with g_free()
-    rather than free(). Commented three instances where free() is correct.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit 0cde8c1cf6c863946c3d4acdc9e9165c99526bef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:52:04 2007 -0400
-
-    Updated gnetlist ChangedLog to include the new backend addition
-
-commit b692c010f9ccf0b89ff1ad653ff1c5a812887cc3
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:43:47 2007 -0400
-
-    Added new gnetlist backend by John P. Doty
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit 5237ea395af0ac1c4cecd18ea2a28291e3d48a90
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:22:14 2007 -0400
-
-    Updated spice-sdb golden file to pass make check.
-
-commit b44a1e527497e55471a75b0af410e78310ed50d8
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Jun 26 18:11:39 2007 -0400
-
-    guile-1.8.1 fixes and testsuite additions.
-    
-    Updated the cascade and pcbpins backends to work with guile-1.8.1.
-    While here added a testsuite entry for these two backends.
-
-commit f8680b18c8e27617eccbbf158acb84ccac7ac386
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Jun 26 16:20:58 2007 -0400
-
-    Portability fixes for the testsuite.
-    
-    Get the testsuite fully working on SunOS-5.9/sparc.  This
-    entails two issues.  The "-I" option to diff is a GNU
-    extension and is not supported by the solaris diff.  Work
-    around this by using sed to filter out the lines which were
-    to be ignored.  This addresses the tests run by gnetlist/tests/runtest.sh.
-    
-    The other issue is that the longopts tests in the spice-sdb
-    testsuite should not be run on a system that does not have
-    getopt_long().  To address this, extend the run_tests.sh to allow
-    a variable in the tests.list file to disable a test unless set to "yes".
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit dc0917b142d9c00af33065ce9eaac8b0a6dc3448
-Merge: fee96ef... 0ad58a2...
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Mon Jun 25 09:45:22 2007 -0400
-
-    Merge branch 'master' of git+ssh://dan@xxxxxxxxxxxxxx/home/git/gaf
-
-commit fee96effc220e78acddf9721a6bd9d0c34bef881
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Mon Jun 25 09:39:17 2007 -0400
-
-    Add missing reference files to distribution and re-enable checks.
-    Updated the list of reference files that go into EXTRA_DIST so that
-    'make distcheck' can work again.  Now the this is fixed, re-enable
-    the spice-sdb teststuite.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit b7089bcc123e52bbadd6e635c823d937e620b75b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jun 9 18:29:22 2007 +0000
-
-    Commited new version of gnet-calay from John with various fixes.
-
-commit eed0be648afd9bc421a8d0059de621df778c5fbe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:09:36 2007 +0000
-
-    Avoid writting '\r' to files on MinGW.
-    
-    Applied patch #1733826 from Cesar Strauss. Thanks.
-    When using the "w" mode in fopen, MinGW translates LF into CR-LF.
-    This creates havoc when reading the same file again, when sharing
-    schematics files with other systems, and when placing them in a VCS.
-    
-    This can be avoided by using the "wb" mode. The "b" is ignored on
-    all POSIX conforming systems, according to these sources:
-    
-    http://www.die.net/doc/linux/man/man3/fopen.3.html
-    http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
-    
-    There are other ways, however. Adding
-    
-    #include <fcntl.h>
-    int _fmode = _O_BINARY;
-    
-    on some source file should work as well. Another way is linking
-    against the MinGW supplied binmode.o, which does exactly that.
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-
-#GCL#
diff --git a/gnetlist/Makefile.am b/gnetlist/Makefile.am
index 3fafced..f486cf1 100644
--- a/gnetlist/Makefile.am
+++ b/gnetlist/Makefile.am
@@ -1,7 +1,12 @@
 
 SUBDIRS = src include utils lib scheme examples scripts tests docs
 
-EXTRA_DIST = BUGS ChangeLog-1.0
+EXTRA_DIST = BUGS ChangeLog ChangeLog-1.0
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = *.log core FILE *~ 
 CLEANFILES = *.log core FILE *~ 
diff --git a/gschem/.gitignore b/gschem/.gitignore
index db9fe06..8cb9e55 100644
--- a/gschem/.gitignore
+++ b/gschem/.gitignore
@@ -27,3 +27,4 @@ GTAGS
 HTML
 gschem.log
 .desktop-i18n
+ChangeLog
diff --git a/gschem/ChangeLog b/gschem/ChangeLog
deleted file mode 100644
index 058f7dd..0000000
--- a/gschem/ChangeLog
+++ /dev/null
@@ -1,7094 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 7ac576ba0560998415b32151389d0ab3334de652
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:48:02 2009 -0400
-
-    Added missing \ so that all example schematics are incluced in release tarballs
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 21e8c0b232e08927fd091a1d46413990b4c61358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:18:34 2009 -0400
-
-    Updated all dates in the relavent man pages (for 1.5.2.20090328)
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit b297d32b70c02bfe800b7bf4c434d1fd4447e2f5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 14:55:22 2009 -0400
-
-    Updated all po files by running make update-po
-
-commit 03fa830460f97518b3fdba0dd96f5932c9885281
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Mar 19 10:15:19 2009 +0000
-
-    gschem: Fix documentation creation from tarballs.
-    
-    gschem's doxygen configuration file was not marked for inclusion in
-    release tarballs.
-
-commit 77a59c3af731937f5952bbb61a6faccd97a07f38
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 20 23:32:41 2009 +0000
-
-    gschem: Update the clipboard menu item sensitivities asynchronously
-    
-    Spawning a sub-main loop to do this can cause reentrancy problems due
-    to processing of other X events from within the sub-main loop.
-    
-    This could end up with states changing whilst updating menus, and
-    this has been noted to cause crashes whilst moving objects.
-
-commit c3081930ed224394f645de4bfb51e86fa3e15e65
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 20 23:26:12 2009 +0000
-
-    Remove obsolete references to libgd and libgdgeda
-
-commit 357db04ba91ad4047abf12f5fd7bf61db849a718
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Feb 5 03:54:18 2009 +0000
-
-    gschem: Avoid the use of gtk_selection_data_get_data on old GTK versions
-    
-    This API was added in GTK 2.14
-
-commit 43af79264390283ac861cb4a9bab3d27c0436eda
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 30 16:52:05 2009 +0000
-
-    gschem: Fix cues on vertical pins to be drawn inwards, not extend the pin
-    
-    Bug was probably introduced when switching the drawing functions to
-    use world coordinates.
-
-commit 20be2df71df169f041cafeb7ad0c26e96901fefe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 28 21:20:48 2009 +0000
-
-    gschem: Draw paths being moved in the their non-selected colours
-
-commit 904ce8cf81d555debc439ed122322663e74988bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 27 15:34:58 2009 +0000
-
-    gschem: Rework how clipboards are cleaned up.
-    
-    Detach selection monitoring callback when deletting a window. The
-    callback userdata passes the GSCHEM_TOPLEVEL we're busy freeing,
-    causing a crash.
-    
-    We also need to ensure the clipboard manager (if any) takes our data
-    before we free things, so explicitly call gtk_clipboard_store() during
-    cleanup if we still own the selection.
-    
-    Add some code to track when we own the selection, including explicitly
-    clearing the clipboard before setting new contents - to avoid a race
-    between a clip_clear callback for our old selection, and the new data.
-
-commit a6522190a5102d3b7c7a10726e667ac9d6ea6c3f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 27 15:34:58 2009 +0000
-
-    gschem: Don't add objects read from the cliboard to the tile system
-    
-    Prevents corruption / crashes when pasting connectable objects, such
-    as nets / pins. The objects are added to the tile system when they
-    are placed. (Avoid adding them when reading into the temporary buffer).
-
-commit 6fcb0765a9bf487003d21214454d474606d807f8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 25 15:25:19 2009 +0000
-
-    Update menu item sensitivity setting again.
-    
-    One was left out in b1f93c9c02c3adf719b8b63e1d09669cfd0a201f.
-
-commit b1f93c9c02c3adf719b8b63e1d09669cfd0a201f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 17:30:58 2009 +0000
-
-    gschem: Update menus for clipboard support.
-    
-    Make 'Edit' menu items' enabled status reflect the state of the
-    clipboard & selection.
-
-commit 6a07d737a32a816f43e1f061409a10e616d7aa2a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 16:11:39 2009 +0000
-
-    Enable basic clipboard support.
-    
-    Enable clipboard support using the GTK Clipboard API.  gschem
-    advertises 'application/x-geda-schematic' data, and transfers it in
-    the gEDA on-disc file format.
-    
-    This works between gschem instances, but data does not remain in the
-    clipboard after the advertising instance of gschem exits.
-
-commit 246acd46e591e542ac3f00f9064905ae0311b0ec
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 16:08:43 2009 +0000
-
-    Make o_save(), o_read() and friends take an object list argument.
-    
-    Sometimes we may want to save or read in a list of objects which isn't
-    the current page. This adds a new function o_save_curr_page() which
-    behaves the same as o_save() previously did.
-
-commit 17077786f635102715f3d6c225d6f16396e531f6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 16:07:48 2009 +0000
-
-    git ignore gschem/m4 differently.
-    
-    This reverts commit 89b918657378a457197630602d7bb016caf36a3e, and
-    ignores the gschem/m4 directory from gschem's toplevel .gitignore
-    file.
-
-commit 89b918657378a457197630602d7bb016caf36a3e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 16:00:23 2009 +0000
-
-    Add a .gitignore for gschem/m4.
-
-commit 81b2df2f166fde454c2f93d193e11cd69453d308
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 00:12:52 2009 +0000
-
-    gschem: Remove redundant buffer cut code.
-    
-    Part of the buffer cut/copy code can be factored out into a separate
-    function to reduce code duplication. Also use g_warning for warnings.
-
-commit 0ff9e9ac91823074f6240e1e762a1cca84b49d05
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jan 22 08:09:29 2009 +0000
-
-    gschem: Always register load_newer_backup_func.
-    
-    Cases were missed out in 4d83eae30b789deb8ab9235a89c191630ebf18be.
-
-commit 4d83eae30b789deb8ab9235a89c191630ebf18be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 21:17:01 2009 +0000
-
-    libgeda: Refactor load backup query callback.
-    
-    Passing user data allows the gschem callback to be called with a
-    GSCHEM_TOPLEVEL instead of a TOPLEVEL.
-
-commit 253caac857e22ba28ba7ce05b36f95a5f78bd683
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 21:16:43 2009 +0000
-
-    gschem: Better checks that GEDADATA has been found.
-    
-    If libgeda fails to locate the gEDA data directory, show a dialog
-    before quitting. This is important for users running gschem from
-    e.g. a .desktop file in their system menu, when the stderr/stdout may
-    not be easy to get at.
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit 7cc4a67795c9ee8dcb28edc6d71b895c5b4f1dc9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:10:41 2009 +0000
-
-    Refactor finding paths for config etc.
-    
-    This is intended to provide a centralised place for determining the
-    paths more "smartly" in the future (e.g. for platforms with different
-    conventions on where config should go).
-    
-    Only user-visible change should be that log messages when loading
-    config files no longer hardcode "~/.gEDA".
-
-commit 48103eca0ded6fd42a2e3abe48c0cdcdc381f902
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 13:45:56 2009 +0000
-
-    gschem: Open recent files in the same window.
-    
-    All of the other methods of opening files open them in the current
-    window. The recent files mechanism should match.
-
-commit f4af51afc5af2059cfb9389cea25589d6a1ba8eb
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 09:39:22 2009 +0000
-
-    gschem: Recent files list fixes.
-    
-    1. List a maximum of 10 recent files.
-    
-    2. Normalize pathnames before storing.
-
-commit 5a31a49d4d1635a1f3a8f82dc68fa8e78ebc0f44
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 20 15:32:06 2009 +0000
-
-    gschem: Change load path for gschem-gtkrc.
-    
-    Expect the GTK rc file for gschem to be read from
-    $HOME/.gEDA/gschem-gtkrc instead of $HOME/.gschem-gtkrc.
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit ee250c9bd2e88bf352a03d1719603b7d54fe430c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:30 2009 +0000
-
-    Avoid underlinking of apps due to missing explicit depends
-    
-    These went unnoticed because the apps were resolving the necessary
-    symbols when pulling in libgeda and its dependencies.
-    
-    Fix applications using GLib and guile within the suite to explicitly
-    pull in the appropriate CFLAGS and LIBS. This commit removes some
-    LDFLAGS and LIBS from grenum, since they weren't being used.
-
-commit c05d63f61ffc08bb130bca8f14e4c429240938d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 11 00:36:24 2009 +0000
-
-    gschem: Make requirement for cairo non-conditional.
-    
-    We can't build without it.
-
-commit e452c5097edd72942ef02a82996dfab5651ceab3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 23:50:57 2009 +0000
-
-    gschem: Fix rubberbanding box when resizing pictures
-    
-    Its position was broken when changing the drawing routines to take
-    world coordinates directly.
-
-commit 02fa8f658d315796df7c6ab8790e5310e8548d37
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:29:21 2009 +0000
-
-    Remove explicit checks for X11 - we're not using X11 APIs directly
-
-commit ef5ab409dc62994ce6aea57586c0698c11291bac
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Jan 6 18:16:31 2009 -0500
-
-    Darkened the outline colors of objects that are being dragged/modified
-    
-    The outline colors should be different than the default colors.
-    Previously the XOR rendering made the outlines look differently, but with
-    cairo rendering the dragged objects look exactly the same as non-dragged
-    objects.  This patch darkens the outline colors in the dark colormap only.
-
-commit e84330457016f1bfb3db1cd6c8a6980a72a6e90c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 5 20:52:47 2009 +0100
-
-    gschem: final fix for the dropdown menus of filltype and linetype
-    
-    Set the current active check marks of the filltype and linetype
-    dropdown menu items.
-    
-    I guesss this was the true meaning of the bug reports [2344956]
-    and [2344964].
-
-commit 2a73a64f42e7e3613d5265e5ec38593ea232d418
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 5 19:44:47 2009 +0100
-
-    gschem: show correct properties in linetype dialog
-    
-    The linetype dialog uses the selection list now. With the new
-    functions selection_get_line_type() and line_type_dialog_set_values()
-    it will be possible to convert the dialog into a non_modal dialog.
-    
-    This fixes bug [#2344956].
-
-commit 807f3d81883ce8075d41588f41e67ea19fd6bef3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 16:57:38 2009 +0000
-
-    gschem: Calculate radius of centered arcs and boxes with 2x precision
-    
-    Since we may have to hint the radius by 0.5px to bring it onto the
-    pixel grid, we will get better results if we compute the radius to
-    half-pixel precision.
-    
-    Re-enable radius hinting for centered arcs back on, but only for arcs
-    which have radius > 1px to start with. If we don't, there is an abrupt
-    transition between when the arc lights a single pixel, and when it is
-    the next largest size. A little anti-aliasing in that case helps.
-
-commit 8ca598852f51c04183ab872f35bcc156628bdf79
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 5 17:20:47 2009 +0100
-
-    gschem: fill type dialog: improved default values
-    
-    If the user changes the fill type from HOLLOW to HATCHED and does not
-    define the angle and pitch, then the gschem could either reject
-    the change of the type, or guess the pitch values.
-    
-    I've decided that it is better to set the missing values.
-    
-    In the opposite case, when the user switches the type from HATCHED to
-    HOLLOW, the pitch is still set. Reset the not required parameters
-    to -1.
-    
-    Maybe the functionality should be moved to o_set_fill_type() in
-    libgeda.
-
-commit 31e883e9666c7721c9a73995ff071cb628c241e6
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 5 16:08:38 2009 +0100
-
-    gschem: show correct properties in filltype dialog
-    
-    The filltype dialog uses the selection list now. With the new
-    functions selection_get_fill_type() and fill_type_dialog_set_values()
-    it will be possible to convert the dialog into a non_modal dialog.
-    
-    In the dialog only those values are marked as *unchanged* that
-    differ from each other.
-    
-    This also fixes the bug [#2344964].
-
-commit d48b0b36c5348abd52413de14afb6ab0958b260d
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 5 11:31:56 2009 +0100
-
-    gschem: fixed the math for warp-cursor "disabled"
-    
-    This fixes the bug [2212748] and the feature request [2001299].
-    
-    The fix calculates a new center out of the mouse cursor,the
-    current visible area and the zoom factor.
-     # Please enter the commit message for your changes. Lines starting
-
-commit d615982103652c0143eca430570bbfcfa0d206fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 05:01:13 2009 +0000
-
-    gschem: Clamp minimum size to draw stoke dots using cairo, apply hinting (Rest!)
-    
-    Activate the code partially committed in the last commit, and add the
-    remaining code to hint the position of dots in a stroke.
-    
-    Since cairo uses antialiased drawings, a dot of diameter 1px will actually
-    render ligher than it would have with GDK. Once the line width reaches 1px
-    switch back to drawing dots as squares.
-    
-    Also add hinting to the position of the drawn dots drawn along the stroke
-    to ensure they land centered on pixels.
-
-commit 1626b1a02a6e55327ac7f2d00dd976aba57855d7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 04:44:24 2009 +0000
-
-    gschem: Clamp minimum size to draw stoke dots using cairo, apply hinting
-    
-    Since cairo uses antialiased drawings, a dot of diameter 1px will actually
-    render ligher than it would have with GDK. Once the line width reaches 1px
-    switch back to drawing dots as squares.
-    
-    Also add hinting to the position of the drawn dots drawn along the stroke
-    to ensure they land centered on pixels.
-
-commit 6079c8102f6ac41ce5bf2a61aef6d65e7bb9df4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 04:23:24 2009 +0000
-
-    gschem: Make gschem_cairo_* functions take parameters in world coordinates.
-    
-    This changes the prototype of all gschem_cairo_* functions to take a
-    GSCHEM_TOPLEVEL parameter rather than cairo_t as their first argument.
-    
-    This change cuts down a significant number of lines of code, and also
-    paves the way to having world-coordinates passed straight into the cairo
-    routines, should we want to use cairo for printing at some stage.
-    
-    A few cases of direct cairo usage in screen coordinates remain; these are
-    in o_cue.c, and x_grid.c. The case in o_cue.c remains because it relates
-    to a filled box. gschem_cairo_box () hints the path coordinates for a
-    stroked box and clamps the minimum on-screen stroke width to 1px, thus
-    rendering it unsuitable for hinting a path to be filled.
-
-commit 4a217cd1109b03f6d5f75f9fca46513d7679ddb6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 03:36:25 2009 +0000
-
-    gschem: Add new primitves to draw a centered arc and box
-    
-    These primitives take care of hinting specifically to keep the drawn
-    object looking centered, adjusting to take into account both the
-    radius / extents of the object being drawn, and how the object we're
-    trying to center on would have been hinted.
-    
-    Use these new primitives for drawing cues and grip boxes.
-
-commit 39d552cd16af51eaae793f3837bb1f77fac0723f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 03:36:24 2009 +0000
-
-    gschem: Use gschem_cairo_box() to create path for box cues.
-
-commit a57db7244d9789c4b92cbec61072497c031016ad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jan 5 00:59:13 2009 +0000
-
-    gschem_cairo_box(): Allow passing line_width as -1 to switch off hinting
-    
-    This may be useful for drawing a box path which is to be filled. If at
-    some point, gschem_cairo_* were to take 0 line-width as instruction to
-    draw "hardware" type lines, passing 0 to avoid hinting would clash with
-    that feature.
-    
-    When the line_width is passed as -1, an extra pixel is added to the
-    larger X and Y coordinates, so the fill touches the pixel which would
-    be lit if a line was drawn at the passed coordinates.
-
-commit 1bd789ec463564710ab71c4bd7b7d01311237919
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 22:51:04 2009 +0000
-
-    gschem: Make o_grips_draw() take world coordinates
-
-commit 21ad139e3bc59d796a2a54f1cb35b71060848687
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 21:16:08 2009 +0000
-
-    gschem: Compute the bounding box of a rubberbanded path analytically
-    
-    For now, actualy just take a big bounding box which includes the
-    control points.
-
-commit d9daf573f87edf46f2b74235db1e66bf669a2986
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 20:06:36 2009 +0000
-
-    gschem: Refactor partially duplicated drawing code in various files.
-    
-    For each object type, there is drawing code for the normal object
-    on the page, an object being placed, and objects being rubberbanded.
-    
-    In many cases (arc, circle and path being good examples), each of these
-    functions repeat non-trivial amounts of very similar setup and drawing
-    code. Only the line-width, stroke style need to be specific to each.
-    
-    Refactor the code such that the place and rubberbanding routines (which
-    adjust the rendered geometry based on state variables) construct a
-    temporary object with the modified geometry. Common parts of the cairo
-    setup and path generation can be combined and shared between routines.
-
-commit 95432ccffdbb39434981f87050433c00f40125da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 19:38:11 2009 +0000
-
-    gschem: Revert change in cue size "fixed" when introducing bus pins.
-    
-    The old behaviour was intentional.. smaller cues were in fact supposed
-    to be used for buses, so that the dot was contained inside the bus
-    graphic.
-    
-    Rename the variables defining the sizes to be clear about their purpose.
-
-commit 5702951f92bb0c693f030c07ef61f0c5986fb5dd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 19:03:06 2009 +0000
-
-    gschem: Adjust position hinting when drawing round junction cues
-    
-    Apply hinting to the cue's position to match the position of the object
-    it is sitting on. This is done by passing the on-screen width (pixels)
-    of a net / bus into gschem_cairo_arc(). If the line-width is odd, that
-    function will shift the origin of the arc by 0.5px. Refactor the places
-    where we draw circular arcs to use a single helper function in o_cue.c
-
-commit a50629e77c16758e44d857a929abe98437ab4583
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 18:56:51 2009 +0000
-
-    gschem: Drawing circle radius line with a non translated cairo matrix.
-    
-    Hinting for drawing the circle may have caused us to translate a non-
-    integer amount, which would cause the radius line to be shown blurred.
-
-commit 7a6b1a22fec9785f503c46d24406046feb04d87f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 18:43:26 2009 +0000
-
-    gschem: Fix rubberbanding of arcs with negative end_angles
-    
-    Such arcs are typically generated by mirroring. If the arc being
-    rubberbanded previously had a negative sweep, keep that the case
-    in the rubberbanded version.
-    
-    Also fixes a bug where we're rubberband to give a zero degree sweep
-    arc rather than a 360 degree one.
-
-commit d6c486a1fac1abce71b8805285fef664e252af98
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 17:48:18 2009 +0000
-
-    gschem: Alter order of grip search when rubberbanding arcs
-    
-    If you inadvertently land the grip which adjusts the sweep
-    of the arc on top of the one which sets its offset angle, it is
-    impossible to do anything but rotate the whole arc segment.
-
-commit 30b150c00aa04b05dd6e85cd5f336f379b4def1b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 23:54:05 2009 +0000
-
-    gschem: Fix redrawing of other selected objects during rubberbanding
-    
-    Rather than switching off redrawing of selected objects during a grip
-    rubberbanding operation, set the "dont_redraw" property of the object
-    being modied.
-    
-    Add a cancel function o_grips_cancel() to reset that property in the
-    case where grip modification is prematurely terminated.
-
-commit 2874ca6c016115363ab9edb7809d5ca66509ca14
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 19:54:04 2009 +0000
-
-    Move world <-> screen coordinate transformation functions into gschem
-    
-    Convert them and their callers to use a GSCHEM_TOPLEVEL as an arguemnt
-    rather than TOPLEVEL.
-    
-    This commit moves most of libgeda/src/m_basic.c to a new file,
-    gschem/src/m_basic.c
-
-commit 4d79aa73981d6caa2c803250d1be266d7657f0c2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 19:54:03 2009 +0000
-
-    Move o_line_visible() from libgeda into gschem
-    
-    This function relates to on-screen visibility, so should be in gschem.
-
-commit e3cbd2a5505f6b284cbe12fdcf72acde6f6ef291
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 16:10:24 2009 +0000
-
-    gschem: Add undo point after converting pins to / from being bus pins
-    
-    Also fix the edit dialog not to show if the selection doesn't contain
-    any pins.
-
-commit f37c893edfeb016e57aae5e92f48093608e5cdfb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 02:38:29 2009 +0000
-
-    gschem: Add interface to toggle a pin between net pin and bus pin types.
-    
-    This allows schematic diagrams of hierarchical connections to include
-    buses. Since gnetlist does not currently support buses, this feature is
-    useful only for diagrams, or when used with a custom netlister.
-    
-    Since we don't want to mislead users into thinking bus pins netlist,
-    the option to set pin type is only present on the page's popup menu,
-    and is marked "(graphical)".
-
-commit 998e8546754fe2ab41a57ce112c3966190c501df
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 23:14:52 2009 +0000
-
-    gschem: Add support for rendering and adding pins with type PIN_TYPE_BUS
-    
-    Bus pins are rendered thicker, and with a bigger cue than standard pins
-    of PIN_TYPE_NET.
-    
-    This commit also fixes a bug where the wrong sized cue circle was drawn
-    for net-net interconnections.
-
-commit 6249029131003dc6191f804ea2866e9bad28ed8c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 23:13:25 2009 +0000
-
-    gschem: Add strings to describe the mesh colour indices added recently.
-
-commit ac5d484934d355055328d48b2c16b8ed551ca912
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Jan 2 22:14:14 2009 +0100
-
-    gschem: deploy the new resnap mode in o_move.c
-    
-    If the selection contains only one element or one element with it's
-    attributes then we can use the resnap feature.
-    
-    This functionality uses the new functions from the last commits to get
-    the object position and to check the attribute/object relation.
-
-commit 5844e01ce1eff3d756d3c77c7a6981316a098cd1
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 16 13:54:28 2008 +0100
-
-    gschem: use the new snap states to toggle
-    
-    The previous snap grid ON/OFF now toggles through the three states
-    SNAP_OFF, SNAP_GRID and SNAP_RESNAP.
-    
-    Updated all status bar messages and added an "R" to the displayed grid
-    if the SNAP_RESNAP mode is active.
-
-commit 8a1b27af48d06ffe4fa2dc71a67810f7b4a71e32
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 14:17:31 2009 +0000
-
-    Update en_GB translations for libgeda and gschem
-
-commit 3c456a61a4a4a551545558fd3189894bfc081e1c
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Fri Jan 2 14:13:30 2009 +0000
-
-    Updated the Dutch translations for gschem.
-    
-    (Patched PO file updated on 2009-01-02 by Peter Clifton)
-
-commit fef99d7912ebc1feb4890e5babff1772f6b20703
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 04:35:49 2009 +0000
-
-    gschem: Draw using cairo when rubberbanding objects
-    
-    Migrates to cairo drawing in *_draw_rubber() and *_draw_stretch().
-
-commit 9784a9117e42632527601faef9a3ed937b718208
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 03:51:22 2009 +0000
-
-    gschem: Ensure circles are well hinted to the grid
-    
-    gschem's canvas can have a fractionally different X and Y scale factor
-    in some cases, which can cause misalignment of circles with other
-    objects. Since logic bubbles are often placed to touch the boxes of
-    components, ensuring they align well is important.
-    
-    The code used here is similar to that added for arcs in
-    commit 508ab0fd9a1e4317ee660bc9eba79fcb49329841
-
-commit 88c2a580ef65de000a3e797301fd8b4f302fc2ff
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 03:29:28 2009 +0000
-
-    gschem: Remove a redundant comment about gdk used for filling in o_circle.c
-
-commit 7e3eacb3fb9f96b1adf707b459f0d62dd2d5d276
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 1 21:45:39 2009 -0500
-
-    Fixed pin place code to draw pins (thick pins were not being drawn at all)
-    
-    Trying to draw a pin (white line) with zero width doesn't draw anything.
-    This commit makes sure that we are always drawing pins with a min width
-    of 1 if the pin style is set to THICK.
-
-commit 6737adc47d1a2083ac432582b6b64d6aaf1b9632
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 00:30:06 2009 +0000
-
-    gschem: Only add extra pixel when drawing for non-capped lines.
-    
-    Adding it for square capped lines resulted in visible overshoot of one
-    pixel when drawing nets with square caps, so was perhaps a mistake.
-
-commit 212b0cf870e05a105fc5a6c134b7803cf6c63c28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 16:38:09 2009 +0000
-
-    gschem: Use cairo for drawing when in "place" mode.
-    
-    Converts all *_draw_place() functions to using cairo.
-
-commit 8ad9acc2c5ceda2b1e5f4e52461dd0f078f8122c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 16:36:31 2009 +0000
-
-    gschem: Remove old comment from o_box.c refering to gdk drawing
-
-commit 4c67ed93d72228e475513caaa1c5d7d593469316
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 16:27:40 2009 +0000
-
-    gschem: Remove old code for erasing a picture by drawing with override
-    
-    We don't erase objects by painting to the background colour any more, so
-    this old code can be scrapped.
-    
-    Whilst we're here (and have re-intented a large portion of this function),
-    tidy up the rest of it, removing old debugging code and fixing whitespace.
-
-commit 8eaa961a02b01133f6e96defcb9e13af60209ae9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 15:12:24 2009 +0000
-
-    gschem: Add missing invalidate when changing to outline mode
-
-commit 0af3c1c6285de7431075131015234e6bda42f02d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 14:51:40 2009 +0000
-
-    gschem: Group fill hatching into a single cairo path before stroking
-    
-    This ought to improve performance. Since the hatch lines are drawn
-    in parallel, the path doesn't self-intersect, and we can gain a speed
-    increase by sending the whole operation in one go. (Self-intersection,
-    e.g. in the case of a grid would slow cairo down computing the mask
-    to render with).
-
-commit dba5ef64f4425d61bf43eef5ae69d863b740edbf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 14:07:22 2009 +0000
-
-    gschem: Adjust hinting of lines to include an extra overlapping pixel
-    
-    When drawing using GDK, a span of pixels being rendered in a line would
-    light all pixels touched by the span.
-    
-    Since moving to cairo, our hinting code has rounded the line's end-points
-    to land between pixels. (So cairo paints the whole pixel), however it
-    means that there is one pixel less being painted (as both ends are
-    adjusted in the same direction).
-    
-    Fix this with a manual addition of 1px as appropriate to the coordinates
-    such that an extra pixel is hit for horizontal and vertical lines.
-    
-    This now means that a line drawn between two grid positions will acually
-    be drawn on top of both of those grid lines, rather than being drawn on
-    top of one, and just touching the other.
-    
-    Apply the offset factor (0 or 0.5px) to both X and Y coordinate pairs for
-    non horizontal / vertical lines, since that gives better alignment with
-    the grid.
-    
-    Apply the same hinting to round capped lines as to square capped.
-
-commit 508ab0fd9a1e4317ee660bc9eba79fcb49329841
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 13:56:25 2009 +0000
-
-    gschem: Attempt better hinted alignment when drawing arcs.
-    
-    gschem's canvas can have a fractionally different X and Y scale factor
-    in some cases, which can cause misalignment of arcs drawn assuming the
-    scale factors are uniform. This manifests because at high zoom levels,
-    the center of an arc can be a large distance from the drawn stroke,
-    over which distance the scaling errors magnify to give a visible offset.
-    
-    The other adjustment made here is rather than hinting the center of the
-    arc to the pixel grid, we take the case where the arc forms a full circle,
-    then find the center (in floating point screen coordinates) which would
-    align the tangent of the arc at 0, 90, 180 and 270 degree positions, to
-    lines hinted to the pixel grid at those positions.
-    
-    A 0.5px offset correction made in gschem_cairo_arc() to the arc center,
-    for odd stroke width accounts for lining up the those tangents with
-    the hinting which is applied to odd width lines in gschem_cairo_line().
-
-commit ec83993b811eefd66d873f4c0f861f9cc6d9aebb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 13:51:03 2009 +0000
-
-    gschem: Remove retrival of unused bounds during drawing
-
-commit ac4c8346638aa2e789d93ca4d621a8522681b57e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 1 12:23:55 2009 +0000
-
-    gschem: Add example schematic with diagram of how gschem buffers work
-    
-    Since I already drew this and it was helpful when reworking the
-    object place code, it seemed sensible to check it in somewhere.
-
-commit e375e0c2c655d2320962febfdfcbb29b9867f2d2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 19:53:38 2008 +0000
-
-    gschem: Add cairo helper function for drawing arcs with geda semantics
-    
-    The angle parameters to gschem_cairo_arc() match those of start_angle
-    and end_angle in libgeda's internal data-structures.
-
-commit 217d45c0cfb9e8a5a7ea074ae70369ea42932453
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 19:52:11 2008 +0000
-
-    gschem: Remove unused function o_path_draw_solid()
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit ca6556ace0a06ec1dd697852f7a1f0ffb86bfb97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:57 2008 +0000
-
-    Add "const" to some places where we deal with GLists of OBJECTs.
-    
-    These GLists themselves are not (and shouldn't be) modified, although
-    the OBJECTs they point at may well be.
-
-commit 15ed098497ddac2bc671657c4d4347eb509f7449
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:50 2008 +0000
-
-    Refactor o_complex_promote_attribs() not to link the promoted objects.
-    
-    By returning the GList of promoted attributes, we allow the caller to
-    use whatever specialised linking procedures are appropriate for the
-    list they are linking to. For example, linking objects into the PAGE's
-    object_list might in future require calling notification functions.
-
-commit 44fba5a262c283f927f08f51966c74d62dca7988
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:24:30 2008 +0000
-
-    gschem: Mark "Preview buffer" string passed to o_read_buffer as translatable.
-
-commit b6377b27c45305b641eac03e697353e9ecfdcd23
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:16:29 2008 +0000
-
-    gschem: Emit notify signal when adjusting a property in the preview widget.
-    
-    For correctness, kill the latent bug where we fail to emit a "notify"
-    signal on the other preview widget properties modified whilst setting
-    the source to preview from.
-
-commit de01318825c08f8d62c2266b16f7e826c7d3a196
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:16:25 2008 +0000
-
-    gschem: Ensure we don't allow the preview to load from file _and_ a buffer
-    
-    When setting either the "filename", or "buffer" property on the preview
-    window, we g_free() the old values for filename and buffer. We missed the
-    required assignment of the old value back to NULL.
-    
-    The code isn't strictly correct though, as when changing a property
-    internally like this, we should really emit a "notify" signal on the
-    property we've changed using g_object_notify().
-
-commit 2324874f08009f431d174865d305f04736adc4eb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 29 00:09:37 2008 +0000
-
-    gschem: Change _rubber, _place and _stretch drawing routines to not XOR
-    
-    Since we're using the invalidate/expose model now, there is no
-    need that these functions must use XOR drawing to the screen.
-    
-    Just painting the desired image should be faster than XOR (which may
-    require a read-back of video ram contents).
-    
-    Also remove the XOR against the background colour when processing
-    "outline" colours in x_colour_allocate(). (Since we're no longer
-    using those colours with XOR operations).
-
-commit a29573b885273459bbf24ff68ae508d345f1037f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 15:32:16 2008 +0000
-
-    gschem: Change direct redraws to invalidates in the move action.
-    
-    These were missed when changing to the invalidate / expose model.
-
-commit d89549022d3ff8fc3e3605fb20186cc4600eef87
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 15:44:18 2008 +0000
-
-    gschem: Remove unused device context "bus_gc"
-
-commit 935ca0a8a6329c018d85c8b91f6a0d8deadeafba
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 15:43:38 2008 +0000
-
-    gschem: Move code in o_move_stretch_rubberband() into o_move_draw_rubber()
-    
-    o_move_draw_rubber() was the only caller, and was deferring almost all of
-    its work to o_move_stretch_rubberband().
-
-commit 957c90a8ff286e6eba4f960cbbcf8ac05d24faf3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 14:52:49 2008 +0000
-
-    gschem: Rename o_path_xor_control_lines() to draw_control_lines()
-    
-    Since we're using the invalidate/expose model now, there is no
-    need that these functions must use XOR drawing to the screen.
-    
-    The function is static, so doesn't need the o_path_ prefix, so
-    rename it to something simpler.
-
-commit e167a181f295b33ffd4771f93b779023eeae948b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 14:26:14 2008 +0000
-
-    gschem: Rename o_*_draw_xor_single() o_*_draw_stretch()
-    
-    Since we're using the invalidate/expose model now, there is no
-    need that these functions must use XOR drawing to the screen.
-    
-    These routines are used to draw lines being stretched during a
-    rubberbanded move operation, so name them something relevant.
-
-commit d061b8dd35db031e43f179e700d991f63c6d2eac
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 14:26:14 2008 +0000
-
-    gschem: Rename o_*_draw_xor() functions to o_*_draw_place()
-    
-    Since we're using the invalidate/expose model now, there is no
-    need that these functions must use XOR drawing to the screen.
-    
-    These routines are just used to draw objects being moved or placed,
-    so lets call them something relevant to that.
-
-commit 0840e3d74e6289083516190e973a1c05228c6145
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 14:26:13 2008 +0000
-
-    gschem: Rename *_rubber*_xor() functions to *_draw_rubber()
-    
-    Since we're using the invalidate/expose model now, there is no
-    need that these functions must use XOR drawing to the screen.
-
-commit 21cc888f59fb005d7c6b7f88fde7dec187fd5db8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 11:46:53 2008 +0000
-
-    gschem: Ok, make the mesh grid darker again
-    
-    Apparently on some monitors, there wasn't enough contrast between the
-    grid lines and the background.
-
-commit 8c07fecee9fb59fc65f24b75f03b3765f032fec6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 11:40:13 2008 +0000
-
-    gschem: Improve clarity of text rendering by turning its origin mark off
-    
-    The origin mark is now only drawn when text is selected, and the mark its
-    self is greater than a certain size on screen. This allows us to retain
-    the mark's utility in checking text is correctly aligned.
-
-commit 6b4ffb9c7c7b635c52e018347866287a85a6ace0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 27 11:40:13 2008 +0000
-
-    gschem: Use a lighter colour for major grid lines in the mesh grid.
-    
-    This makes the major squares less obtrusive on the page, whilst
-    still retaining a visible distinction to the minor lines.
-
-commit a887176190cf5a0bea019b5cdc150611edb7a603
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:54:08 2008 +0000
-
-    gschem: Add actions to view menu to switch to light or dark colour scheme
-    
-    For now, these menu entries are hard-coded to the colour scheme files
-    which we ship. It would be nice in the future (when menus are reworked),
-    to add these options from a registered list of colour schemes.
-
-commit 5031f6846f2ae9ec703bcdcd689ab4e0d87373c8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:53:45 2008 +0000
-
-    gschem: Fix x_color_free() and make it free the whole colour map
-    
-    The previous code would have caused breakage if it were executed,
-    since gdk_colormap_free_colors expects to take a pointer to an
-    array of GdkColor elements.
-
-commit 94f3f4f753e255538d1376ab9a9b334d53f0be60
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:53:45 2008 +0000
-
-    gschem: Move handling of the gdk colour map into x_color.c
-
-commit 714580df3fee12732d5e1180722f008a47aaf973
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:53:42 2008 +0000
-
-    gschem: Don't define key-bindings for keys which have no-action
-    
-    If we do this, then when we set "no-action" to a menu item's key binding,
-    the code will try to display one of the keys associated with "no-action"
-    as a binding for that menu item.
-
-commit 826676196547f44c7923e4103a0789c1e1be63ca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 21:42:55 2008 +0000
-
-    gschem: Remove a few unused variables from x_menus.c
-    
-    Removed some an debugging printf as well, which printed them.
-
-commit c43c40260ec072e2ad31a3b42b9d5437bea2a529
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 19:24:01 2008 +0000
-
-    gschem: Use cairo rendering for the mesh grid
-    
-    Since we're grouping the stroking of all horizonal lines into a
-    single command, and all vertical lines into another, this has the
-    potential to be drawn quicker by the X11 server.
-    
-    NB: If the horizontal and vertical lines were to be grouped
-        together into a single path, a large slowdown in incurred
-        as cairo computes their intersections.
-
-commit d7b18c4466a1183842d8dfeae47119cb71caa8d7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 18:19:29 2008 +0000
-
-    gschem: Remove stupid debugging message accidentally added in last commit
-
-commit 331e1125d0847a3b9ff8bff6042fccce6befddd0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 18:17:24 2008 +0000
-
-    gschem: Fix gschem_cairo_set_source_color to divide by 255, not 256.
-    
-    This not only gives a more correct colour, but fixes a large performance
-    bottle-neck where an alpha value of 0xFF would lead to a cairo alpha !=
-    1.0, triggering far slower translucent rendering code-paths.
-
-commit b6e8608d5642912ce10bf29119e5c86eb91634f7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 00:36:49 2008 +0000
-
-    gschem: Add status bar info updates when altering grid / snap settings
-    
-    Changes mistakenly missed from index at last commit:
-    
-    commit 52df0d861e880e019c7aeea71f1ed448bbed47db
-    Author: Peter Clifton <pcjc2@xxxxxxxxx>
-    Date:   Fri Dec 26 00:18:13 2008 +0000
-    
-        gschem: Move update of status bar information out of the grid drawing code.
-    
-        For now, and in the absence of any better place to hook, just trigger this
-        update explicitly when we pan or alter the grid settings.
-    
-    The code removing the status bar update from the grid redraw functions
-    was staged and committed, but not that which re-added the updates
-    elsewhere. This commit adds those updates.
-
-commit 52df0d861e880e019c7aeea71f1ed448bbed47db
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 26 00:18:13 2008 +0000
-
-    gschem: Move update of status bar information out of the grid drawing code.
-    
-    For now, and in the absence of any better place to hook, just trigger this
-    update explicitly when we pan or alter the grid settings.
-
-commit 756dd7ecceed8dc23430a5c36462c36c4244fa46
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 23:57:57 2008 +0000
-
-    gschem: New helper function to query rendered grid spacing.
-    
-    The status bar contains an label which lists the current rendered grid
-    spacing. We should not be forcing an update of this each time we repaint
-    a portion of the grid. Introduce a helper function to ask the grid code
-    what size it would end up drawing. This will then allow us to query the
-    rendered grid size after zoom / grid settings changes, and update there.
-
-commit 60460d8990af99999da2a611721bdb591a4723f4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 23:39:35 2008 +0000
-
-    gschem: Change default grid to GRID_MESH to give it more exposure.
-    
-    This may be reverted later in the 1.5.x development series, depending on
-    user preferences. For now, it is important to get this more testing.
-
-commit 2dc8887523ffe603c76849a8ca3cdee055d200ce
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 23:39:26 2008 +0000
-
-    gschem: Change grid on/off to cycle through grid modes
-
-commit f013cb1d70d868093ad9aa3ae1e38a5c9079ecc9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 22:08:49 2008 +0000
-
-    gschem: Add a code to draw a mesh grid with major / minor lines.
-    
-    Adds new configuration option (mesh-grid-display-threshold {pixels}) which
-    configures the minimum line pitch rendered before switching off the minor,
-    then subsequently major grid lines.
-    
-    (NB: This grid mode is currently not accessible.)
-
-commit 059f1be046494e1d1171953138f259b0af90409b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 21:25:16 2008 +0000
-
-    gschem: Separate out dotted grid drawing and tidy up the code somewhat.
-    
-    Creates a separate static function for drawing the dotted style of grid,
-    and a switch function to pick which grid drawing routine is in use, which
-    is currently just dotted grids or nothing.
-    
-    Adds doxygen documentation for the grid drawing functions.
-    
-    Renames the "grid-color" colour map index and other dotted grid specific
-    config parameters to prepend "dots-".
-
-commit e7d328775323dea2d82f9c22d431bf2740a90f97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 20:37:37 2008 +0000
-
-    Remove i_vars.h variables left over when removing colour index variables.
-
-commit 165de888d86506583241dab79573e81f2cf44dd7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 15:46:09 2008 +0000
-
-    Remove GSCHEM_TOPLEVEL and TOPLEVEL indirection for fixed colour indices
-    
-    Colour indices such as grid_colour and select_color are not changed at
-    run-time since (by definition) those graphic elements are always drawn
-    with the sepcified index. Remove the indirection through GSCHEM_TOPLEVEL
-    or TOPLEVEL, and use the appropriate index constant instead.
-    
-    The background_color indirection remains, since swapping this is used
-    to override the background to white when exporting black and white image.
-
-commit 1843d875be92a4935c3581a1f24e7a33f8f76042
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 15:36:58 2008 +0000
-
-    gschem: Invalidate region to erase damage due to stroke trails
-    
-    We don't erase things by painting to the background colour any more,
-    that leaves drawing artifacts.
-
-commit 88118f5d62e1655d30c4680ac0f68a89fbc1a213
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 24 20:21:03 2008 +0000
-
-    gschem: Use new COLOR system
-
-commit c122c32cdd82419159786720b9c2cdd82b382a68
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 24 13:21:07 2008 +0000
-
-    Replace portions of the GDK drawing code with cairo routines.
-
-commit 95abdb28b1ededc4a57f13627bea544c8a7fe41b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 24 13:21:00 2008 +0000
-
-    Add a cairo context member, cairo_t *cr to GSCHEM_TOPLEVEL
-
-commit 95a097e95de6291ccf901f6849c7246e8e04090a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 24 00:42:40 2008 +0000
-
-    gschem: Fix the colour editing dialog to work with paths
-    
-    (Added missing case OBJ_PATH:)
-
-commit 0029ee5696a4f8c0fd2a0edb64c0096792e24912
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 23 03:46:50 2008 +0000
-
-    Fix attribute colours for embedded objects [#2157598]
-    
-    Add an argument, "set_color" to o_attrib_attach[_list]() to specify
-    whether the colour of the attribute should be reset to the default
-    attribute colour when performing the attachment.
-    
-    We set this to true when promoting toplevel unattached attributes
-    inside a symbol onto the schematic page, when the user explicitly
-    attaches an attribute inside gschem. It is FALSE in other cases.
-    
-    In cases where we're creating new attributes, such as o_slot_end(),
-    we specify the attribute colour we want to o_text_new().
-    
-    Remove colour setting from o_attrib_add(), since there is no point
-    having this code in two places. o_attrib_add() just deals with the
-    datastructures now.
-
-commit 51a19f38bdff7c3fa3f5656a0e9347b303a2c215
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 21:57:39 2008 +0000
-
-    gschem: Add undo point when editing fill and line styles
-
-commit f583363e84d42001b0abb65bf828d013f120df63
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 21:16:35 2008 +0000
-
-    gschem: Fix light background net color.
-    
-    Net color was incorrectly converted to #rrggbb.
-
-commit 9d2dea918ee72b474e11962adbd9ca6167162c14
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 21:02:48 2008 +0000
-
-    gschem: Fix PNG export broken by invalidate/expose drawing model changes
-    
-    We need to explicitly redraw the objects to form the image, we can't
-    use o_invalidate_all() as that only works for drawing to the screen.
-
-commit c08a776a0a68a9bc89ca17089120db305fda6167
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:34:29 2008 +0000
-
-    gschem: Expose accessors to get the COLOUR for a given colour index.
-
-commit 56985b0d059fc0487f7b8245cad7b468e737f2fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:18 2008 +0000
-
-    Change s_page_get_objects_in_region[s]() to take a TOPLEVEL parameter
-    
-    This is needed in case we have to re-calculate the bounds of any object.
-
-commit 1cb0094c404926fa28cdc1968041f14b4c1e4779
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 17:59:03 2008 +0000
-
-    gschem: Extra sanity checking for color indices.
-
-commit 2e4ec93e8689501983a891280d8b1869901113c9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 16:38:38 2008 +0000
-
-    Revert "Use light background color maps as the default."
-    
-    This reverts commit 01bd6420ecad411d804f4a1a3d41af67d901ce6a, and
-    corrects the comments to refer to the dark background as the default.
-
-commit 01bd6420ecad411d804f4a1a3d41af67d901ce6a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:43:17 2008 +0000
-
-    Use light background color maps as the default.
-    
-    The comments in the rc files have stated for a while that a light
-    background is the default. Furthermore, all the cool CAD software uses
-    light backgrounds these days.
-
-commit 619aea627a81a5621036b0a2949e774bb5cb2e6e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:42:46 2008 +0000
-
-    Separate display and print color map config files.
-    
-    We should be able to print in color using libgeda without needing
-    gschem.
-
-commit 12d9e2127329a880ed8532808635d3ffdbf46caa
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:51 2008 +0000
-
-    Remove display colormaps from libgeda.
-    
-    Libgeda doesn't need to know about the color maps used by gschem at
-    all. Add a generic function for initialising a color map to a built-in
-    default, and get gschem to use it for its main and outline maps.
-
-commit 9f5e54f022b73adb429633461ca88c81c394fd16
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:51 2008 +0000
-
-    Remove (ab)use of "customary" colors.
-    
-    colors.h defines a number of color index index constants with color
-    names (white, black, cyan, etc.) This is evil and bad, because the
-    color map might actually be loaded with entirely different colors.
-    
-    This also adds a DEFAULT_COLOR macro, usable in most places the "evil"
-    existing contacts are used.
-
-commit a8b55895fd6833fa36ef92c6bc7c82490ea3a294
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:50 2008 +0000
-
-    Remove legacy color Guile functions and variables.
-    
-    Remove the color-mapping functions and variables obsoleted by the new
-    system.
-
-commit 06449db86b91db91bf5d4551acc2794cf34c97f1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:47 2008 +0000
-
-    New Scheme colormap syntax.
-    
-    Add new color map functions for setting multiple colors at a time with
-    a simple list-based structure. Use one per color map rather than one
-    per color.
-    
-    Use a wrapper macro in Scheme to make it easier to construct Scheme
-    color map structures by using symbols instead of indexes to specify
-    map entries.
-
-commit af4756b843d6da32b8355a50bf3bb1f2bee0a539
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:20:17 2008 +0000
-
-    Store colors as components rather than as strings.
-    
-    Rather than storing colors in libgeda as strings or GdkColor
-    structures, store them as a set of four 8-bit unsigned integers.
-    
-    Since the GdkColor structure is renderer-specific, remove all trace of
-    it from libgeda -- only gschem needs to know about it.
-
-commit 05c77c57cc78b0963e52a91e6f56e8005089690a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:20:14 2008 +0000
-
-    Specify colors with RGB/RGBA hexadecimal notation only.
-    
-    Transparency (alpha channel) is used as follows for PostScript: if
-    alpha is non-zero, objects are drawn fully opaque. If alpha is zero,
-    objects are not drawn.
-    
-    The alpha channel is ignored for GDK drawing.
-
-commit e2d6f2bfb1c24d5dfaf193dfae4aaa7cf4d0f236
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 00:36:27 2008 +0000
-
-    Add explicit 'enabled' field to COLOR structure.
-    
-    Colors are implicitly 'enabled' by having values specified in the
-    configuration file. Up until now, whether a given color is enabled has
-    been checked by checking if the color name strings are NULL.
-    
-    This patch adds an explicit 'enabled' field to the COLOR structure. It
-    is set TRUE when s_color_request() is called for that color index.
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit e97e63ac7955c34f6fbd820cbdea9ea9b90e9ec9
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Dec 21 22:16:33 2008 +0100
-
-    Updated spanish translation for libgeda and gschem.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 413d46d3cbe4c21d3ec3f3e2b99d7f250f0d5ef4
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:34:25 2008 -0500
-
-    Removed m4 from being distributed when building tarballs (using make distcheck)
-    
-    This makes gschem and libgeda's distribution of m4 the same (not distributed)
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 84d3b0199bec40652b1381474f7f76d7b24a6ff7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:48:42 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    This is in prep for the upcomging 1.5.1 release.
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 4f9f4336a123f91318ec2d1ffd8e9739eb756348
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:10:23 2008 -0500
-
-    Updated dates and versions in all man pages
-
-commit 2c1c7ff82e5ba02c432eb9e1e9fe44ac97e5ecc7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 11:24:43 2008 -0500
-
-    Added libintl.rc to .gitignore to make git status less cluttered
-
-commit 7289597377b3a0efd00c29b5da08956b25dffafc
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Dec 21 12:32:57 2008 +0100
-
-    gschem/libgeda: updated german translation
-
-commit 9e9b1ab60ff8740f4039471efaa5435193d83c14
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 18:12:46 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    make update-po was run in prep for an upcoming release.  It will probably
-    have to be run one more time before the final release is done.
-
-commit ba3af993a28bf244f9fae7a216827c94cacf2c3c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 22:07:44 2008 +0000
-
-    gschem: Refactor duplicated code in o_find_object()
-    
-    Also add documentation for this and our new helper function.
-
-commit d0df24b4e4346327275c4e17cbeff63afeb0df4f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 22:07:44 2008 +0000
-
-    gschem: Fix breakage in multiple-object hit select-cycling
-    
-    This was broken when switching to OBJECT GLists. We need to start
-    our first search for objects _after_ the one we selected last time,
-    otherwise we just find the same object again and again.
-
-commit e51ce946141363fa796a8744d5600bbe3436b925
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 19:10:18 2008 +0000
-
-    gschem: Remove visible() checks from drawing functions
-    
-    The expose handler, via o_redraw_rects() only calls drawing functions for
-    objects which need repainting. No need for them to re-check visibility.
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 0fe820aa442bba02d164832ce771932f2189d231
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:12 2008 +0000
-
-    gschem: Make rubberbanding operations use the invalidate / expose model
-    
-    Introduce a new function for each rubberbanding operation,
-    o_*_invaldate_rubber() which invalidates an on-screen area matching
-    the area where the rubberbanding operation would paint.
-    
-    The actual drawing happens from the expose handler, which already
-    had appropriate code to ensure any damaged rubberband objects were
-    re-painted during an expose event.
-
-commit 883bb3377a83623fe47792aabe8023c556de25f3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:10 2008 +0000
-
-    gschem: Remove the dummy o_cue_invalidate*() functions
-    
-    Actually invalidate the objects which would have had their cues
-    redrawn using o_invalidate() and o_invalidate_glist() instead.
-    
-    We're probably invalidating more than we need to in some cases,
-    since just invalidating a single object will be enough to update
-    any cues it is touching. We don't really need to invalidate its
-    connected objects as well.
-
-commit b64b7ce3970d819173e20578e9adf91b19179068
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:09 2008 +0000
-
-    gschem: Replace o_cue_erase_single() by o_cue_invalidate()
-    
-    We don't want to be drawing anything onto the screen outside of the
-    expose handler. o_cue_invalidate() is actually a NOP, since we actually
-    invalidate enough around a given object to encompass redrawing of its
-    cues.
-
-commit 0a9650f1c5877d68c792f4c37bc0d47132425c49
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:07 2008 +0000
-
-    gschem: Move invalidate call from o_move_check_endpoint to o_move_start
-    
-    This invalidate ensure rubberbanded objects are removed from their old
-    position on screen. It is more suited to living in o_move_start() than
-    a function supposed to find objects to rubberband.
-
-commit 978a127bf1f7174fd5146371d0cbbfc6a8f2baf8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:06 2008 +0000
-
-    Avoid and remove OBJECT variable draw_grips
-    
-    We can infer the required logic from OBJECT->selected, and the
-    resulting code is cleaner.
-
-commit c9b89c259334c0f310afcc1dc3fb2b752078caad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:04 2008 +0000
-
-    Don't ever erase grips, we invalidate things to get rid of them.
-    
-    Delete now unused function o_erase_grips(), along with the object
-    specific routines o_*_erase_grips()
-
-commit 111e9e78fded24189f58e420b291ba444323ac25
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:03 2008 +0000
-
-    Remove now unused functions o_{draw,erase}_list() and o_erase_single()
-
-commit 20b87f17855b3a0cd09b1865d661de8e039ae903
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:01 2008 +0000
-
-    Changed caller of o_{erase,draw}_selected() to use o_invalidate_glist()
-    
-    Remove the now unused functions o_{erase,draw}_selected().
-
-commit 4287b770933148477d613c97f7b0d60bd9236603
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:11:03 2008 +0000
-
-    gschem: Change redraw and erase calls to invalidate calls
-    
-    In the new drawing model, "invalidate" calls actually specify which
-    primitives or areas of the screen need redrawing. The redraw code called
-    from the expose event handler then draws objects directly onto the screen.
-    
-    Remove the now unused function o_redraw_all()
-
-commit 1deba1aba224cd2e87a34148949edaaeec630ed0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:10:47 2008 +0000
-
-    gschem: Change object specific redraw calls to o_redraw_single()
-    
-    Makes switching redraw calls to invalidate calls more formulic.
-
-commit c7c5a24102474d6d9c607c4592736c8f93fe090b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:10:43 2008 +0000
-
-    gschem: Add size of grip (or cue) to invalidate and redraw regions.
-    
-    Adding to the invalidated region cures screen artifacts left due
-    to the bounds of an object not including the area occupied by its
-    rubberbanding grips.
-    
-    Adding to the coordinates used with s_page_objects_in_region() ensures
-    that grips / cues from adjacent objects are drawn correctly when repainting
-    a damaged region from the expose handler.
-    
-    This is a bit of a hack and could be better catered for by invalidating
-    the grip regions separately from an object specific invalidate function.
-    s_page_objects_in_region() would also have to return objects with grips
-    or cues touching the passed region.
-
-commit 68f782583cc41b542dc237cb9173f64ffc01ce76
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:09:57 2008 +0000
-
-    gschem: Just redraw everything when we get an expose event
-    
-    Disable generation of our backing pixmap and remove o_invalidate_rect()
-    calls from various drawing functions. The backingstore is straight to the
-    screen, so there is no need to make that call (it causes a redraw loop).
-
-commit c914c30f8bbb72e5d0df635947055e642b972f0b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:00:36 2008 +0000
-
-    gschem: Move o_drawbounding into its only caller, o_place_rubberplace_xor
-
-commit 87682d35b4238c7db9bbc3583a7db8313bb8577f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 07:33:15 2008 +0000
-
-    gschem: Fix crash closing window from window-manager during move action
-    
-    Since the move action uses the place list for drawing, and the objects
-    are still on the page, we must be careful to cancel the move action,
-    otherwise when the window is closed, we try to double-free the objects
-    which are both on the page, and in the place list.
-
-commit 4afbecd9128f87980e47221b439d7292395c20bd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 07:31:19 2008 +0000
-
-    gschem: Avoid critical assersion being triggered when cancelling move
-    
-    We need to set inside_action to 0 before calling o_undo_callback(),
-    since that then calls o_redraw_all(). We don't want that redraw to
-    think we're still inside an action and attept to draw the (now empty)
-    place list. For good measure, place that call after we've cleared out
-    the stretch list as well.
-
-commit 43644681ba1486a5dec10fcfcdad36432ecc071c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 06:36:58 2008 +0000
-
-    gschem: Add function o_grips_rubbergrip_xor() to repaint XOR objects
-    
-    This function will be useful to recreate the on-screen state during
-    an expose event when using an invalidate / expose drawing model.
-
-commit 94602fdc724dd31527c3ceed2092ddeee1d954e0
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 04:42:25 2008 +0000
-
-    Symbols now selectable by clicking inside their shapes.
-    
-    This patch changes the selection behavior by allowing symbols to
-    be selected by clicking inside any contained shape.  This behavior
-    works for symbols with boxes, circles, and paths.
-    
-    Patch modified by Peter Clifton:
-    
-      Added m_line_shortest_distance(), (m_line.c) and make use of that
-      in m_polygon_shortest_distance() rather than faking a line OBJECT.
-    
-      Change all o_*_shortest_distance() functions to take a parameter
-      "force_solid" so we avoid having to use a specialised dispatch
-      function to treat constituent primitive objects inside a COMPLEX
-      as solid.
-
-commit 3d8b3efb5a4ce8672133658ccdbe5c57d341f0fc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 03:17:31 2008 +0000
-
-    gschem: Check for self-connecting COMPLEX before deleting. Fix #1912859
-    
-    Remove any references to objects inside the COMPLEX being deleted
-    when we build the list of objects to redraw on screen following the
-    COMPLEX's deletion.
-    
-    This fixes a crash observed when deleting symbols with co-incident pins.
-
-commit c69785fe267e2cdc70e2748dfab7268fbdcc3e7e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 01:08:08 2008 +0000
-
-    o_move_end_rubberband(): Rework creating connectivity lists. Fix #2017356
-    
-    We were previously making a lists of pre- and post-move connected objects
-    incrementally as we moved each individual object being stretched.
-    
-    In some cases this meant that as we moved one object, we artifically
-    changed the connectivity of future ones to be moved, making the
-    resulting connectivity lists inaccurate. In some examples, the objects
-    being stretched themselves appeared in the lists.
-    
-    We want to avoid this, since if we delete a stretched object when
-    it reaches zero length, we don't want that object to be referenced in
-    the list of connected objects. Since we don't want to do more work
-    than necessary re-drawing affected objects on screen, it is generally
-    desirable to keep the lists as accurate as possible.
-    
-    To avoid the problem with incremental updates, build the connectivity
-    lists before and after the entire move operation for stretched objects.
-    
-    This alone doesn't fix the case where a stretched object being deleted
-    happens to touch another to start with. We have to check when deleting
-    an object for its presence in the prev_conn_objects list. We check and
-    remove _all_ references to the deleted object from that list.
-    
-    Thanks go to Patrick Bernaud for the test-case for this very tricky to
-    reproduce bug, and an initial patch.
-
-commit fe8640898cb843b72e1c3cc01ee52c33db736ccf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 01:07:17 2008 +0000
-
-    gschem: Remove stretched object from stretch list if we delete it
-    
-    When a stretched object becomes zero length when rubberbanding, we
-    delete it. We must also remember to delete it from the stretch list,
-    otherwise it will be referenced later, and could cause a crash.
-    
-    NB: This isn't the whole story.. the before / after connectivity
-        lists can still reference the deleted object and cause a crash.
-
-commit ba14128c0710a12665b07c29e74c00c55993b3d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 01:05:11 2008 +0000
-
-    gschem: Further tidying in o_move_end_rubberband()
-    
-    Changes a switch statement with only one active code-path into an
-    if (...) { ... } clause. Should be no functional changes.
-
-commit 20e4ffcd895f344b8124ca16990f04e9570140c0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 19 23:49:36 2008 +0000
-
-    gschem: Tidy function o_move_end_rubberband()
-    
-    This function is still buggy when objects are deleted as part of
-    the rubberbanding operation, but for now, tidy up the existing
-    code. No functional changes.
-
-commit 4abd473222827786c2480fa128464c7ff45448ea
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 19 23:25:48 2008 +0000
-
-    gschem: Rename "other_objects" to "prev_conn_objects" for clarity
-
-commit 6e8f757d3aa23219bb0259064dbed5ffa64fb341
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 19 00:59:52 2008 +0000
-
-    Remove next/prev linking from the STRETCH structure. Use GLists instead.
-    
-    The PAGE now maintains a GList of STRETCH objects instead. This keeps the
-    code a lot simpler and allows us to use more standard GList functions.
-
-commit da649f4066f8ce35a1717a1d0a298fe82817a8b5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 18:17:48 2008 +0000
-
-    gschem: Make key press / release events update modifier states
-    
-    If a sensitive action is taking place when a modifier key changes state,
-    fetch the current mouse pointer and call the action's motion handler.
-    
-    This allows us to see instant on-screen changes when (say) pressing the
-    modifier key to switch magnetic net mode off, or between orthogonal /
-    non-orthogonal constraints mode when copying or moving objects.
-    
-    Preivously motion was needed after pressing the modifier key to get an
-    on-screen update.
-
-commit 1d16923d30f2348184675df66e5b67e893d3c519
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 17 14:43:20 2008 +0000
-
-    gschem: Use o_{erase,redraw}_single() not o_{erase,draw}_selected()
-    
-    x_dialog.c: arc_angle_dialog_response() used the selection specific
-    routines where it could have just used the pointer to the OBJECT.
-
-commit 1d7d0b9f7f0cc38a79b7e392756dcb359b61bdbb
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Dec 16 21:37:20 2008 -0500
-
-    Increased the select-slack-pixels value to be much larger
-    
-    This makes it a lot easier to select objects, especially now that you
-    have to click on the object itself instead of the object's bounding box.
-
-commit 822d04bc29291979b91dd3222a27bbcb295e7b56
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 15 22:50:24 2008 +0000
-
-    Delete references to the non-existent object type OBJ_HEAD. (CODE!)
-    
-    Ok, cleaned up some whitespace as well.. couldn't resist.
-
-commit a6df3915ee452f175650c86f0074169ad6756c02
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 15 00:46:17 2008 +0000
-
-    gschem: Rename o_*_rubber*() o_*_motion()
-    
-    This is consistent with the naming of the equivalent function for
-    grip manipulation. These functions are called from the motion event
-    handler, and the new names make that clearer.
-
-commit 29ae53c1010c0afaa719fa2234ac0563368f05fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 14 14:50:14 2008 +0000
-
-    Roll the various o_grips_motion_*() routines into o_grips_motion()
-
-commit ec14a2d9b48696417e3122793a71170b833de9c2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 14 03:50:24 2008 +0000
-
-    gschem: Remove un-needed GSCHEM_TOPLEVEL flag "inside_redraw"
-    
-    A check of where this was tested revealed that the code-paths where a
-    test was present should not be hit from inside a redraw operation.
-
-commit 2a768bee990afdb7e73a7f9c01aa0be372fd59ea
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 13 22:06:25 2008 +0000
-
-    gschem: Don't re-invent the drawing routines in o_net_end()
-    
-    Use o_redraw_single() in o_net_ned() rather than replicating parts of
-    the net drawing code.
-
-commit 1a8e62cded4076f9711f86e50b1749972bc01b87
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 13 21:27:01 2008 +0000
-
-    gschem: Empty "misc" callbacks
-    
-    Remove apparently left over debugging code
-
-commit a8ae46996fe78d138e83a99744e7ade0036399bc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 21:01:45 2008 +0000
-
-    Rename GSCHEM_TOPLEVEL member "backingstore" to "drawable"
-
-commit 7b663063f659aac854f844bda40160f697f7c3ef
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 19:03:52 2008 +0000
-
-    Use (rubber_visible == 0) to avoid "undrawing" invisible objects.
-    
-    For some operations, such as text and component placement, there is a
-    gap between inserting components into the place buffer (at 0,0) and
-    knowing where to draw them.
-    
-    This is presently handled with separate one-shot states used to special
-    case the first mouse event recieved. These states are transitioned from
-    as soon as the first drawing operation has been made. If we track the
-    fact that no "undrawing" should take place, it's otherwise OK to use the
-    same motion event handler for the first and subsequent motions.
-
-commit 3d5fce8f9e6a1172a285dd4a49943f2b05712ca4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 16:43:13 2008 +0000
-
-    Avoid crash observed when trying to undo whilst moving.
-    
-    Move uses the place list, and it leaves the objects in the place list
-    on the page. Calling undo free's the page structure, including place
-    list objects, AND page objects. Double-free / corruption -> crash.
-    
-    TODO: Fix move code NOT to use the place list, OR, use more
-          intelligence about cancelling from move operations.
-
-commit c24af025cba433db83db48d4b614632b2d5a517c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 16:08:43 2008 +0000
-
-    Replace calls to s_conn_return_complex_others() with s_conn_return_others()
-    
-    Teach s_conn_return_others() to understand COMPLEX objects.
-
-commit 7f4ec05b6812bf412ad23da67b82c9378c57aa0c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 15:28:07 2008 +0000
-
-    Replace calls to s_conn_..._complex with a non-specialised version
-    
-    Renamed s_conn_remove() to s_conn_remove_object()
-    s_conn_..._object() can then call s_conn_..._complex() as needed.
-
-commit eca34fca24e6d29a1b42c95daee0602c452fecd6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 22:26:56 2008 +0000
-
-    Revert "Remove unused "toplevel" argument to s_conn_* functions"
-    
-    This reverts commit b211658fcddb84828c437a65bf6bd73fcc4b1918.
-
-commit 28e12a770b23ffbe08c994cbd98d21a581b2cd2d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 21:44:24 2008 +0000
-
-    Add API s_page_delete_objects() to delete all OBJECTs on a page
-
-commit 921a39edd130ed3bbfe83d9c39c3a9085c405d9a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 21:21:03 2008 +0000
-
-    Remove function o_delete(), which just wraps o_delete_object()
-
-commit b211658fcddb84828c437a65bf6bd73fcc4b1918
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 20:40:15 2008 +0000
-
-    Remove unused "toplevel" argument to s_conn_* functions
-
-commit ee0eaa9c885db7022b9cb5ef4ddf50b459fd92fc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 14:49:40 2008 +0000
-
-    gattrib: Bump GTK and GLIB version requirements to match gschem (2.8.x)
-    
-    Also remove a remaining 2.4 comment from the gschem configure.ac.in
-
-commit 38ce8aae73beec00d603e4cda0ca5eee738a3cb8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 19:23:22 2008 +0000
-
-    libgeda: Abstract removing objects from the page with s_page_remove ()
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit de9c919b925ff989c3f26914e666d2e38062bfe1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:02:00 2008 +0000
-
-    gschem: Fix memory undo not to update tile system
-
-commit 9dd241d9f87ad78f27772e9490d3afa2a80621bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 01:38:21 2008 +0000
-
-    libgeda: Add convenience function for adding objects to the page
-    
-    Adds s_page_append() which links the passed object to the end of the
-    page's object list.
-
-commit 54d2fd7dc6bf09dad1d9657c5cd3635bb31e14b7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 18:57:11 2008 +0000
-
-    gschem: Use libgeda's hatching routines for drawing hatched boxes.
-
-commit 3b8bbb1f0e4f549ad2e366e36365e59f7657622e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 18:43:56 2008 +0000
-
-    gschem: Use libgeda's hatching routines for drawing hatched circles.
-
-commit 2f5b7e9d890953680caa4fa111c31a0be4123d97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:16:20 2008 +0000
-
-    Adjust MINGW32 specific CFLAGS from the suite
-    
-    Console applications should not build with the -mwindows flag, otherwise
-    output reach the console. Conversely, we should build the GUI apps, gschem
-    and gattrib with -mwindows so they don't bring up a console window when
-    running.
-
-commit 939998b8b4f6742814910a043778962f4654d5a9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:15:20 2008 +0000
-
-    Use solid painting, no XOR to draw path control lines when erasing.
-    
-    When the override_color is set, we are likely to be erasing the control
-    lines inside o_erase_single(). To avoid leaving artifacts, don't use
-    the XOR drawing context in this case.
-
-commit d8f1aa4780edaee8b4552a7fd942126a07464b6d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:44:53 2008 +0000
-
-    Add support for drawing curved paths with GDK
-
-commit c01757cd814e7c92cb4c64a6e134aa670b9750d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:29:11 2008 +0000
-
-    Add rendering code to draw hatched fill in paths
-
-commit 0545db388236ea7a7aaa49d8911ad96481b4978e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 7 17:33:46 2008 +0000
-
-    Remove some old comments better explained in commit history
-    
-    Comments annotated with a dates and developers initials clutter the
-    code with historical details people may be reluctant to remove. Not
-    all of these are still relevant, and those which are should probably
-    could be kept in such a way as not to suggest code ownership. The
-    commit revision log is a better place for determining authorship.
-    
-    Fix some whitespace in surrounding areas where I couldn't resist.
-
-commit 3f607ec3eefd9477d277747be089ac94e5afbd57
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 24 01:35:02 2008 +0000
-
-    Use g_get_home_dir() if we can't find the HOME environment variable.
-    
-    NB: We can't just use g_get_home_dir() on its own without changing
-    semantics. g_get_home_dir() prefers the home directory specified
-    in the passwd file, over $HOME, so we try looking for the HOME env.
-    variable first.
-    
-    BUT: some places in gEDA do just call g_get_home_dir() directly.
-    Ideally we should tidy these up to be consistent at some point.
-
-commit cc1d5ae1489b4534ae485cdea4df0815663dcb1d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 23 17:30:37 2008 +0000
-
-    gschem: Update EXTRA_DIST list in gschem/tests/Makefile.am
-    
-    Remove reference to deleted schematic ext_chars.sch, and added new
-    schematics net_selection.sch and geda_fonts.sch
-    
-    Reformatted list to one element per line, so future diffs will be
-    easier to view.
-
-commit d2ab7cfcc4dd21e06a3d2e9ac6d756b7968c0b7a
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Nov 18 22:33:45 2008 -0500
-
-    Use the SHELL variable to locate a shell for icon-theme-installer
-    
-    /bin/sh on some systems like SunOS (solaris) is too broken but in those
-    cases SHELL is typically set to a functioning shell like /bin/ksh.  This
-    repairs the install on "shell challenged" systems.
-
-commit 70bf7f8e7470d9962af920553b2e858db0d95938
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Nov 17 20:23:26 2008 +0100
-
-    gschem: fix select state when double clicking an object
-    
-    After the o_edit() call in x_event_button_pressed() the state is
-    STARTSELECT.  If a MODAL dialog is called (arc or change picture) the
-    state will will still be STARTSELECT after closing the dialog.
-    
-    This state turns into the MOVE state right after the dialog is closed
-    and the first motion is done in gschem (x_event_motion()).
-    
-    This is not correct. The state needs to be reset to SELECT right after
-    the o_edit() call.
-
-commit 9b2b755a4cc07a5de15ea88794e78612b0d2ca00
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 16 17:35:46 2008 +0100
-
-    created a new test file for all font characters
-
-commit 8ba14774f506f7b2143f0caf74ae3eba42504930
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Sat Nov 15 12:41:09 2008 +0100
-
-    Invert assertion added in bbe251bc64ed2db2976a26116d22a69fe678b9fd.
-
-commit 27fc407b656e2996e31922be1352eea21de85422
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 9 18:21:09 2008 +0100
-
-    updated text and alignment test schematic
-    
-    Added all kinds of overbar and tabulator tests.
-    Use multiline text for all alignment tests.
-
-commit 75f53b0b7a1a2859a604b70dfecc6a439b8b57da
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Oct 29 22:37:13 2008 +0100
-
-    gschem: replaced fnameext* functions with glib functions
-    
-    Removed the functions fnameext_get, fnameext_remove and fnameext_add.
-
-commit 8801ff019dc2ccc64a3dd7367b65e7ea6ce5229e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:37:08 2008 +0000
-
-    gschem: White-space update in x_complselect.c for consistency
-    
-    Mixed tabs and spaces are driving me nuts, since I don't default to
-    having tabstop=8 in my editor. This file was pretty good before, but
-    recent commits mixed in a load of tabs.
-    
-    I've also changed call instances to "func (args);" white-space,
-    since the majority of this file already used it.
-
-commit c785af63a4d32adeaa7912a4559381d8daefde18
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:37:02 2008 +0000
-
-    gschem: Allow attribute value column in component selector to shrink
-    
-    Symbols with long values are common, and we don't want having viewed
-    those to force a h-scroll-bar on symbols with short valued attributes.
-    
-    If we don't allow them to shrink, the columns retain the width of the
-    largest item they displayed, and we often get stuck with a scroll bar
-     after displaying components with lengthy attribute values.
-    
-    When updating the model, invalidate the column width for the attribute
-    value column so it is re-sized based on the new data being shown.
-    
-    We might also consider invalidating the attribute name columns,
-    however that gives an inconsistent column division when swithing
-    between symbols, which doesn't look nice. For now, assume that
-    the name column can keep the max width gained whilst previewing.
-
-commit dab769968c3b65d5b28b6ae26996ddc8b4e311fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:36:56 2008 +0000
-
-    gschem: Use an enum for column numbers in the compselect attrib preview
-    
-    This avoids the need to use magic constants in the code when we refer to
-    a particular column by number.
-
-commit 8a53e426c09ee25c1ce1e1c720d408662374c04b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:36:50 2008 +0000
-
-    gschem: Adjust padding in component selector dialog box.
-    
-    Make the preview and attributes windows the same size as the
-    library notebook on the left, by avoiding adding a border to
-    the GtkVPaned control.
-
-commit c5db389c6f104e22ab486451283b2fe94faf2606
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:36:45 2008 +0000
-
-    gschem: Don't override GtkDialog default positioning in compselect dialog
-    
-    The old code explictly overrode the window positioning hint set by the
-    GtkDialog (GTK_WIN_POS_CENTER_ON_PARENT) to GTK_WIN_POS_NONE.
-    
-    For people with multi-screen setups, the GtkDialog default is
-    probably a better choice. We might in the future consider
-    GTK_WIN_POS_MOUSE, where the windows appears at the current
-    mouse position.
-    
-    In either case, this only affects a user's inital usage of the
-    dialog as its geometry is saved to disk for later re-use.
-
-commit 2f6e297d4ef9b5104675081a4066503779695b9d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 5 00:36:39 2008 +0000
-
-    gschem: Don't reset default properties on the component selector widgets.
-    
-    There is no point setting GtkWindow or GtkDialog properties when we don't
-    actually desire to rigidly specify those parameters. The removed settings
-    are all defaults within GTK.
-
-commit 811233695be6f5d58ba576054d9763be11c6aa4c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 2 15:25:46 2008 +0000
-
-    gschem: Take copy of "TMP" environment variable with g_strdup()
-    
-    It isn't gauranteed that the result of getenv can't get modified at
-    some point after the call (e.g. by another call to getenv), and testing
-    of the mingw32 port has revealed that the returned string was getting
-    corrupted at some point.
-    
-    Take a g_strdup() of the string immediately, so we don't have to worry.
-    
-    Since capitalised variable names should really be reserved for #define'd
-    constants, rename "TMP" to tmp_path.
-
-commit 8628c10167df204222d77b4f18e550f7486aa2a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:51:36 2008 +0000
-
-    gschem: Use gdk_display_warp_pointer() rather than an X11 specific call
-    
-    Fixes bug #2212753
-    
-    gdk_display_warp_pointer() was added in GTK/GDK 2.8, and allows
-    greater portability to other platforms supported by GDK.
-    
-    Remove the unimplemented "relative" option to x_basic_warp_cursor()
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit ab3e5337562359df11e8b679096574b2c01fdbc7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    gschem: Fix more non-literal format strings which cause compiler warnings.
-    
-    We should be careful to avoid passing arbitrary strings into functions
-    which take printf style arguments. In that case, always use the construct
-    ("%s", string) rather than passing string as the format argument.
-
-commit 333c7bc53e05e1c024486b8191b8f7031f0f506e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 00:42:24 2008 +0000
-
-    gschem: Check for visibility / toplevel->DONT_REDRAW in o_path_draw()
-    
-    These test were mistakenly removed in
-    commit 2d2d9d90d07080ed18a899dcccc34e99c83a7402
-
-commit 1aab94354f053887db67aa5702abc595795dfe82
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Oct 29 12:14:19 2008 +0000
-
-    Define select_func only in libgeda.
-    
-    Importing definitions from linkees breaks when linking libraries on
-    Windows.
-
-commit 79da8125fa7ac7a005710ed2a6340004a66402a5
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 28 19:40:04 2008 +0100
-
-    gschem: removed unsnapped arc modification special case
-    
-    When using the grips to modify an arc, then always unsnapped coords
-    have been used. There two reasons to remove that:
-    
-    * it's a special case that is not neccessary as the user can easily
-      switch off the snapping to get the unsnapped behaviour
-    
-    * with snapped arcs it's easier to draw 45° and 90° arcs
-
-commit fba1fe91258e62ad0d5ffd685adad93336542e30
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 28 19:38:52 2008 +0100
-
-    gschem: use the arc dialog to modify arc objects
-    
-    Using edit->edit now raises the arc dialog. The properties of the arc
-    can be modified and applied. The arc needs to be the first or only
-    element of the selection list.
-
-commit 91cef383fbeaa0f48afe404f15ac39009f41fda7
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Oct 27 20:59:47 2008 +0100
-
-    gschem: added radius to the arc angle dialog
-    
-    Now you can set the radius, too, when creating an arc.
-
-commit cee5dea44626c4e442fc02841c26c8f3951817b7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Oct 26 23:42:48 2008 +0000
-
-    gschem: Initialise color combobox from current selection.
-    
-    This (rather necessary) feature was unfortunately missed out in
-    219f5d708fbe5e26f77808bb08810b96dfa984eb.  Ideally, of course, the
-    combobox constructor should be passed the color index to initialise
-    itself with rather than poking global state, but for now let's just
-    get it working again.
-
-commit 986bb906bbac1198c5f8b3ae507aab84d49fb3c9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Oct 26 20:10:02 2008 +0000
-
-    gschem: Re-arrange component selection dialog.
-    
-    Most people have monitors which are wider than they are
-    tall. Therefore, it makes sense to allow them to have wide, short
-    dialog boxes.
-    
-    This patch moves the component selector attribute treeview to share
-    the right-hand side of the dialog with the preview widget.
-    
-    Signed-Off-By: Peter Clifton <pcjc2@xxxxxxxxx>
-
-commit cd01bc7d056983beb3957618cdc7557af2d40c8e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 20:07:12 2008 +0000
-
-    gschem: Add missing header file gschem_defines.h to Makefile.am
-    
-    Missed this when splitting out gschem_defines.h
-
-commit d99fb5c1cebfed26e027b134ebf2a4c3a0d524bd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Oct 26 17:51:54 2008 +0000
-
-    gschem: Put color swatches before names in combo box cells.
-    
-    It's easier to associate names with colours with a smaller gap between
-    them. (Yes, this will work properly for RTL locales).
-
-commit 2d2d9d90d07080ed18a899dcccc34e99c83a7402
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 10:42:58 2008 +0000
-
-    Add place-holders for printing paths with different line / fill styles
-    
-    Currently, paths are always drawn with a solid stroked outline, and
-    only solid filling is implemented.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit 690c85d16d63e5350ce67f4f045cfbc8bb10e8aa
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Oct 11 11:11:30 2008 +0200
-
-    gschem: save configuration of component dialog
-    
-    Save the position of the vpaned widget in the dialog configuration
-    file.
-    
-    (added static function definition suggested by Peter)
-
-commit 90413c7fe36fe73d9ab93a7ceadc0debe2b840ee
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Oct 10 10:41:26 2008 +0200
-
-    gschem: show attributes in the component select dialog [#1444029]
-    
-    gui code to show the attributes in the component select dialog. The
-    attributes are taken from the TOPLEVEL structure of the preview
-    widget.
-    
-    The attribute treeview is only created if the GList of the attributs
-    is not empty and the attributes are only updated if the treeview is
-    present.
-    
-    Added an option that will print all attributes in alphabetical
-    order. To do that the first element of the option has to be and "*":
-    (component-dialog-attributes '(*))
-
-commit 0d1615ffc21c995ddc554a407941230eb1ea6677
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Oct 8 20:10:41 2008 +0200
-
-    gschem: configs for the attributes in the select dialog [#1444029]
-    
-    configuration code to get the attribute list for the component select
-    dialog into gschem toplevel structure.
-
-commit 2e83bf2b37e093578088eef616e15ee361e85199
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 20:01:50 2008 +0100
-
-    Remove legacy PNG color specifications.
-    
-    The configuration files provide a way of specifying colors for PNG
-    output, but these are never used -- the PNG output just uses the same
-    color map used for on-screen display. Remove the redundant
-    specification and associated data structures completely.
-
-commit bbe251bc64ed2db2976a26116d22a69fe678b9fd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 18:57:16 2008 +0100
-
-    Get rid of s_color_get_index().
-    
-    This function is very clearly the Wrong Thing, and could potentially
-    result in incorrect color indices ending up in schematic files if two
-    or more color map entries have the same value.
-    
-    This patch removes the function entirely, and modifies the Scheme code
-    which uses it to simply pass color indices around instead. Note that
-    the results of s_color_get_index() were never actually *used* in the
-    existing code.
-
-commit f63b79f3483b54a064a2bb74f8355d28232e78fd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 18:17:25 2008 +0100
-
-    gschem: Add missing break statement.
-    
-    Break statement was missed in commit
-    405f5ac08806c0e7d6c91e8881182b0bdfa5838b.
-
-commit 219f5d708fbe5e26f77808bb08810b96dfa984eb
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 17:10:53 2008 +0100
-
-    gschem: Show colour swatches in color selection combobox.
-    
-    Rather than color names, show the color itself. Also hides color
-    indexes from view, as if users need to know about these during
-    day-to-day normal usage of gschem then we're doing something very
-    wrong.
-
-commit 405f5ac08806c0e7d6c91e8881182b0bdfa5838b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 17:10:50 2008 +0100
-
-    gschem: Translate color names.
-    
-    Make the color map names shown in the color selection dialog
-    translated. Also add the net junction color to the lookup table.
-
-commit 2a4fdb13021d0153e788fe3b2fc005f273dcdf4b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Oct 21 16:52:09 2008 +0100
-
-    Validate calls to scm_c_eval_string(). [2105219]
-    
-    Because the reporter's version of Guile is broken, a lovely garbage
-    collector segfault occurs if a null string is passed to
-    scm_c_eval_string().
-    
-    For now, wrap all calls to scm_c_eval_string() with mutable arguments
-    in g_scm_c_eval_string_protected(), and since the latter function
-    seems to behave when passed a NULL string this bug should just go
-    away.
-
-commit 87a19a19e52a37f8ad14ae0c4c68f3292b0c3285
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 16:21:34 2008 +0200
-
-    gschem: redraw empty preview on configure events [#2159047]
-    
-    If the preview widget contained an empty page, the redraw failed. In
-    the preview_event_configure() function the function a_zoom_extents()
-    returns without drawing if there are no objects on the page. Thus I've
-    added a complement logic to redraw the background of the preview if
-    required.
-
-commit f76f82985f325d436e3522359a5b3f7d0a2344ea
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 13:13:36 2008 +0200
-
-    gschem: prevent hierarchy symbol down there's file [#1861665]
-    
-    Only try to load real existing files.
-
-commit f0a96de8b545dbd900e87db6abf54a0b6df830ab
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 09:02:03 2008 +0200
-
-    .gitignore: log files and source tagging files added
-    
-    Added the files of the "global" source tagging program
-    and the logfiles of the gEDA programs to .gitignore.
-
-commit f5205cdb145a423012f446b16d0211005b55695e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 19:54:55 2008 +0100
-
-    Cleanup whitespace errors introduced in last commit
-    
-    (Introduces toplevel convenience variable to cut down on line lengths)
-
-commit 7e6e166d3f594ee822ef615e8766a3f712b5f80c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 5 15:54:18 2008 +0200
-
-    gschem: suggest a filename in the saveas file dialog [#2001387]
-    
-    If a schematic is saved the first time, put a suggested name
-    ("untitled.sch") into the file saveas dialog.
-
-commit f58328ec7a4d445b98b67a63b23647f25ae7bb4c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 5 10:01:03 2008 +0200
-
-    gschem: code and test file for the net selection patch
-    
-    This commit adds the main functionality to gschem. The new function
-    o_select_connected_nets() will select nets depending on the configured
-    net_selection_mode and the current net_selection_state.
-    
-    The implementation uses two stacks for traversing the connections. The
-    netnames stack contains all connected netnames and the net stack
-    contains a collection of all currently collected nets.
-    
-    Note: The search for the netnames is very expensive, because of the
-    required search of all netnames in all objects.
-    The default net_selection_mode in system-gschemrc is set to "enable-net",
-    only the directly connected nets are selected.
-    
-    The functionality can be testet with the test schematic
-    tests/net_selection.sch.
-    
-    This patches are based on the work of Franz Mottas [1895538].
-
-commit d0c0a23543aaa266a63799d4decff58768cf961b
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 5 09:58:29 2008 +0200
-
-    variables and configuration for net selection patch
-    
-    The net selection lets you select all connected segments of a single
-    net segment. The behaviour can be configured with the net-selection-mode
-    variable in system-gschemrc.
-    
-    This patch is based on the work of Franz Mottas [1895538].
-
-commit 392dd3354812e812f548eadac2c83d8430acd7bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 29 01:19:39 2008 +0100
-
-    Remove conditionally compiled code for GTK/GLIB < 2.6
-
-commit 2b36577f5634ff99e919773c4e34aa2e39dbce51
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 28 14:09:50 2008 -0400
-
-    Added code to do something more sane when trying to print tabs
-    
-    Previously if a tab character was encountered in a text string, the
-    postscript output code would output a Y with a dot on top.  This is
-    clearly not a tab character.  The patch adds explict handling of the tab
-    character to output 8 spaces instead.  Not perfect, but better behavior
-    than before.
-
-commit c9f4ae9298141915f11214d6339c4d9a27bb3eee
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:55 2008 +0100
-
-    gschem: Add ./configure support for detecting and disabling cairo
-    
-    Since some users might not have cairo installed, and the intention
-    is to retain support for the old GDK drawing code (for now),
-    --disable-cairo is added to allow conditional compilation.
-
-commit 9d9d09b0bddba85b5712cb063f3a6b806550cb3b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:55 2008 +0100
-
-    gschem: Bump minimum GTK / GLIB version requirement to 2.8
-    
-    This is needed to enable the use of cairo rendering functions.
-    
-    Remove AC_DEFINE for HAS_GTK24 since it isn't used. Switch configure.ac
-    variables such as GTK24_... to use just GTK_..., since we don't need to
-    specify the version in those. It just makes bumping the version harder.
-
-commit 900274f0d6b08031f7cfc18a332da6b1939a44d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:55 2008 +0100
-
-    Fix non-literal format strings which cause compiler warnings.
-    
-    We should be careful to avoid passing arbitrary strings into functions
-    which take printf style arguments. In that case, always use the construct
-    ("%s", string) rather than passing string as the format argument.
-    
-    Some cases were fixed by using g_strdup instead of g_strdup_printf(),
-    some simply replace printf() for puts().
-
-commit d424abcf4e93934fd6268d9cb186f7415e0e83c2
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 28 13:21:42 2008 -0400
-
-    Removed unused OBJ_ROUTE and OBJ_THRU_HOLE object types
-
-commit 2550db8e1d981ccab55b7f2ae6e9932198a53b59
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 01:03:06 2008 +0100
-
-    Make o_..._add() into o_..._new() which don't link the new OBJECT.
-    
-    Allows cleaner use of objects where we might want to insert the object
-    into a GList rather than a self-linked list of OBJECTs.
-
-commit b74ce15668b87380fb348a94aab6452eba6f5551
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 27 22:58:09 2008 +0100
-
-    Use g_return_if_fail to exit o_drawbounding() if called with a NULL list.
-    
-    Function previously returned silently, lets log this as an error
-    condition if it should happen.
-
-commit 853f1ef289fb7ebd7406ede1e48940a07772a756
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 27 22:50:20 2008 +0100
-
-    Remove some commented out code in x_window_create_main () (CODE!)
-    
-    Tidyup where the window used to be painted black at startup.
-
-commit 0f93a4b4d52da6c7c34c6420cdb93263d5b5bbdc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 27 02:03:13 2008 +0100
-
-    Make use of new object invalidating API to avoid duplicated code.
-
-commit 04774120c0ab1701e10fcc2709cd3a9963d0a54f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 27 02:00:47 2008 +0100
-
-    Add API for invalidating drawing of a given object or list of objects.
-    
-    Avoids needing to lookup and pass bounds of an object being invalidated.
-    
-    Adds:
-      void o_invalidate_all (GSCHEM_TOPLEVEL *w_current);
-      void o_invalidate (GSCHEM_TOPLEVEL *w_current, OBJECT *object);
-      void o_invalidate_list (GSCHEM_TOPLEVEL *w_current, OBJECT *list);
-      void o_invalidate_glist (GSCHEM_TOPLEVEL *w_current, GList *list);
-
-commit 1fffc27a3b62cc32a70edcc1ee89ff458318c6bc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 00:57:52 2008 +0100
-
-    Add support for arbitrary paths (filled and unfilled)
-    
-    The data-structures and on-disk format (which utiliseSVG style path
-    strings) support stright line and bezier curve segments. Paths can be
-    closed or open, and store line style and fill information in common with
-    other geda objects.
-    
-    The path string parser is based on (slightly modified) code from librsvg
-    version 2.22.2 (LGPL). Code from rsvg-path.c and rsvg-bpath-util.c
-    (Copyright (C) 2000 Eazel, Inc.) was combined to form libgeda/src/s_path.c.
-    These have been modified to use gEDA defined path data structures.
-    
-    The rendering implementation is based upon a small porion of the function
-    rsvg_cairo_render_path (..) from rsvg-cairo-draw.c
-    
-    The parser still retains support the full richness of SVG path strings,
-    although all instructions are subsequently normalised on to move, line, bezier
-    and "close path" records. This support retained for convenience when entering
-    artwork (which can be copied from an SVG editor). When saved, normalised paths
-    are written out.
-    
-    The current rendering and shortest-distance computations are limited to
-    straight line segments. Bezier segments, where encountered are treated
-    as a straight line between their two endpoints.
-
-commit e9f4a9a4bb05bc554e165b2215f8e7358b2315de
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 00:57:44 2008 +0100
-
-    Move some static variables inside o_grips.c to GSCHEM_TOPLEVEL
-    
-    This is necessary for grip manipulation of more complex OBJECT types
-    such as the forthcoming PATHs. As the entire drawing state can't of a
-    path can't conveniently be stashed in the GSCHEM_TOPLEVEL variables
-    such as first_w{x,y}, second_w{x,y} etc., we need to reference the
-    OBJECT and grip being manipulated from the drawing functions which
-    are outside o_grips.c.
-
-commit ec2e929742bb682be52d02818916b1f57c343e48
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 01:07:37 2008 +0100
-
-    libgeda: Set complex_parent on all prim objects, not just their HEAD node
-    
-    Allows a primitive object inside a COMPLEX to be linked back to the
-    COMPLEX without traversing to the HEAD node of the prim_objs list.
-
-commit b14f3bf215963529b89f650ff3bd6f0b0c90450f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 00:57:57 2008 +0100
-
-    gschem: Don't add invalid attributes to the multiattrib dialog list
-    
-    Since we can't edit them, don't treat them as attributes.
-    
-    Gschem validates attributes upon creation, so an invalid attribute
-    attached to an object must come from a hand-edited file, or a text
-    object which has been attached to an object. (Validation that the
-    text item is a valid attribute isn't performed in that code-path).
-    
-    In the future we might want to add validation of attributes at
-    file-load and at before attaching text OBJECTs to a COMPLEX.
-
-commit acb96234eed1e51ab22b17cd718d5f627d292a96
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 22 02:05:14 2008 +0100
-
-    gschem: Fix left/right scroll events to move the schematic left/right.
-    
-    Commit which broke this was 048bd6f8e2fc1c5f5b01ff3f1cad3a7c9bf43f3e.
-    
-    Looks like I broke the behaviour when I refactored the x_event_scroll()
-    to support a more "gtk" style modifier binding as well as the classic
-    gschem behaviour. The refactored code inadvertently lumped up/down and
-    left/right scroll events together as if they were up/down events.
-    
-    Up/down scroll events retain their existing behaviour and act according
-    to the (scroll-wheel "{gtk|classic}") configuration setting. Left/right
-    scroll events now always scroll the schematic left and right,
-    irrespective of modifier key.
-
-commit 45efb32383b15576cc98a95e1d93d44793e6f2e8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 22 01:54:24 2008 +0100
-
-    Move calls to attribute promotion code from inside o_complex_add()
-    
-    Previously o_complex_add() would perform attribute promotion or delete /
-    hide eligible attributes depending on the "attribute_promotion" argument
-    passed to o_complex_add(). Break these into separate operations:
-    
-    1. Get / add to OBJECT list, a single complex object with o_complex_add().
-       This object has its prim_objs exactly as the symbol exists on disk.
-    2. EITHER:
-         Promote the eligible attribtues with o_complex_promote_attribs().
-         (For GList based processing use o_complex_get_promotable(), attach
-          the returned objects as attribs and place in the appropriate GList.)
-       OR:
-         Delete / hide eligible attributes with
-         o_complex_remove_promotable_attribs()
-    
-    All behaviour relating to attribute promotion should be identical after
-    this commit. If not, it is a bug should be reported. (This includes the
-    insertion order of the OBJECT and it's attributes into the object list).
-
-commit 9993a0c13cc1b1aa5bb0c61a7355e89cd8f37fca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:33:03 2008 +0100
-
-    Remove un-necessary use of o_list_search()
-    
-    g_make_attrib_smob_list() and o_attrib_return_attribs() are passed the
-    object they are operating on directly. There is no need to prove it can
-    be found in the object list as well.
-
-commit 1745bca0359488bb6f8bd06d84f7ae952e48d665
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:24:59 2008 +0100
-
-    Remove unused TOPLEVEL variable object_parent
-
-commit 7baf5c629eb620e7db9b3fa5837cc07bdfe29f4f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 21:36:35 2008 +0100
-
-    libgeda: Tidy o_attrib_attach() harder
-    
-    Remove searching in parent_list for the attribute we're about to attach.
-    This check isn't needed, we were passed the attribute as an argument.
-    Let the caller be responsible for making sure it is linked into the
-    appropriate object list.
-
-commit 29010f3c07076c31eaaf39a0209b6b9e8cd7cadd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 18:34:35 2008 +0100
-
-    Use gtk_window_set_transient_for() not a GObject property. Fix #2075842
-    
-    Revert part of the changes made in 1aaf6613a7c6991d858c1143ed3917675a115a5a
-    
-    Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-    Date:   Fri Jul 25 17:52:40 2008 +0200
-    
-        Move selection monitoring out of the multi attrib widget.
-    
-        Reinstated the 'object' property for multi attrib widget in place of
-        the 'selection' one: the widget does not have to mess with selections,
-        it is only interested in objects. Moved the selection watch stuff
-        outside.
-    
-    This commit changed an unrelated setting from using a widely supported API,
-    to a GObject property only introduced in GTK+ 2.10. Changing it back now!
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit 6a7ab649d6f77ccab9be7f3562197c2d15d92ee7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Aug 25 18:39:22 2008 +0100
-
-    gschem: Tidy list of source files.
-    
-    Purely for readability of the Makefile.am.
-
-commit a974a4c6d2c233c9209c5b4597f7d4f86154f484
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:28 2008 +0100
-
-    Remove default-series-name from all rc files
-    
-    Fixes brokenness leftover from previous removal of "series_name".
-
-commit 9a54c6de1fa6af39ec97b8bb0cd1a251094ad3f1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 17 01:34:20 2008 +0100
-
-    Only explicitly switch object types which are "special" in o_move.c
-    
-    For other objects, which should use the default move action, use the
-    "default:" construct, rather than explicitly listing them in
-    "case OBJ_...:" statements. This makes adding new objects types simpler.
-
-commit bcda75d109f12bc4d763bcaa05c08cbf3f0451c1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 17 01:33:56 2008 +0100
-
-    Remove some unused #defines from o_text.c
-
-commit a19feb2bf0e13ad3d030dfbb126a2b0558db6add
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 22:28:52 2008 +0100
-
-    Bring back default Postscript filename.
-    
-    The print dialog has recently stopped providing a default filename for
-    the Postscript output, due to a regression introduced in
-    a3513b7e6dc7bf6c36d95d4da86082beeb79831d.
-
-commit 1a1460c65a9d4e0aee35e39fff0f083c95bd380d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 19:18:24 2008 +0100
-
-    Remove the ATTRIB struct as it only contained one variable.
-    
-    The OBJECT.attribs GList now points directly at the text objects which
-    hold and display the attribute name and value.
-
-commit 2fe94f7887ccf4b990bb285fc9def966ce857e0b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 18:32:53 2008 +0100
-
-    gschem: Use accessors to get/set TEXT strings.
-    
-    Don't access the TEXT struct directly.
-
-commit 6718a8d2187b4a871051eee299cef8bbbef02280
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 18:10:53 2008 +0100
-
-    gschem: Pass dialog to multiattrib treeview data funcs.
-    
-    The cell data funcs for the multi-attribute editor dialog's treeview
-    need to have access to a libgeda TOPLEVEL to be able to use
-    o_text_get_string(). The obvious thing to do is to pass in a pointer
-    to the dialog (which contains a pointer to the GSCHEM_TOPLEVEL, etc)
-    as the user data pointer.
-
-commit 0865651615cf79b1392c34381cbee3095faa5a01
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 16:47:10 2008 +0100
-
-    gschem: Fixup installation of drawing callbacks.
-    
-    Now libgeda properly declares them, can just set the function pointers
-    in gschem's initialisation function.
-
-commit 1bfa2bacae85a59758c6b6ddb16bc62362b9ac7e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:48:00 2008 +0100
-
-    gschem: Add #define LAST_DRAWB_MODE_NONE -1
-    
-    This flag will be used to indicate that the bounding box was not drawn
-    onto the page at all yet.
-
-commit 288d9e67af83f03534398319d0e8ad16fa631fb0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:48:00 2008 +0100
-
-    Move gschem defines from libgeda into gschem/include/gschem_defines.h
-    
-    Whilst we're at it, remove some unused definitions.
-
-commit 80f19b131300110c67d332193959e33f230f0b1d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:47:59 2008 +0100
-
-    gschem: Create new include file, "gschem.h" to various gschem headers
-
-commit a27996354d61af13a4f0a1eed2db4b979b7f148f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:47:59 2008 +0100
-
-    gschem: Pass GTK's CFLAGS into GSCHEM_CFLAGS. Don't rely on LIBGEDA_CFLAGS
-    
-    libgeda really shouldn't be pulling in GTK, so we need to do it properly
-    ourselves.
-
-commit 2e87904a34cd5ad58bc8a9511dd5915adf9df405
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:47:58 2008 +0100
-
-    libgeda: Rename gtk_[outline_]color variables gdk_... to their types
-    
-    Also added NULL initaliser for gdk_outline_color which was missing.
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 62a38eefd8d3d9f84d8aeb78e2a1e365080d819c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Aug 15 22:48:11 2008 +0100
-
-    Make some string arguments const.
-    
-    In a few places, strings are being passed into functions and no
-    changes are made to them. Mark these arguments as const.
-
-commit 11fa9b447a32bbee93734628233f6ca5b807c740
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 15 12:36:53 2008 +0100
-
-    gschem: Only add nets and buses to the stretch list. (CODE THIS TIME!)
-    
-    Only nets and buses are rubberbanded, so there is no point adding other
-    connected items (such as pins) into the stretch list.
-    
-    This fixes a bug where pins attached to nets being moved disappear if
-    the user pans whilst moving. (The objects in the stretch list are marked
-    "don't redraw" when starting a move operation.)
-    
-    To avoid nesting (yet another) huge "if" clause in the length of the loop
-    in o_move_check_endpoint(), the loop has been re-written as a "for" loop
-    to ensure its iterator is incremented when the loop is "continue"'d.
-    The various nested : if (test) {...}          // wrapping the loop's core
-    are now:             if (!test) continue;
-
-commit 25c4e8e0a45dbe9abe664be23240eafd903e7814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 15 11:26:26 2008 +0100
-
-    Check toplevel->DONT_REDRAW before redrawing text
-    
-    There is no point in trying to draw text if it is not wanted on screen.
-    Rendering of the underlying line-segments would just be stopped anyway
-    in o_line_draw(), where there is also such a test.
-
-commit 675738b3b7a0c37e3511297040c3abc59619dd0c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    libgeda: Hide o_*_recalc() from public API.
-    
-    Applications which wish to force recalculation of an OBJECT's bounds
-    should use o_recalc_single_object().
-
-commit 8f1a084c1e26cc08cdab08a1c44e7e802cbdbec8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    libgeda: Hide world_get_*_bounds() from public API.
-    
-    Applications which wish to retrieve an OBJECT's bounds should use
-    world_get_single_object_bounds().
-
-commit a504567fa312888bd3e467f01f68eadaf6c0440d
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 18:45:47 2008 +0100
-
-    gschem: Add 1.6 compat. for scm_from_locale_symbol() [2051731]
-    
-    The new Scheme prompt in gschem uses scm_from_locale_symbol(), which
-    isn't present in Guile 1.6.x. Add it to the compatibility layer.
-
-commit 57815bd72e62999193641f301af9184c0d524cf6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 23:30:35 2008 +0100
-
-    Print command is a gschem setting.
-    
-    Move print command from TOPLEVEL to GSCHEM_TOPLEVEL, and move static
-    defaults too.
-
-commit 19f5e9965dc12818b0d4f2771b020989065a83fb
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 23:30:35 2008 +0100
-
-    gschem: Add infrastructure for string options.
-    
-    There are still some gschem settings in libgeda just because they take
-    string values. This patch makes it possible to boot them out.
-
-commit 46eda8a55b9197f7a24d5b04ff94cedc1abc74fe
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 23:06:03 2008 +0100
-
-    Name i_vars_... functions consistently.
-    
-    Apps should use i_vars_blah(), libgeda uses i_vars_libgeda_blah().
-
-commit 0fe03039f1eda8b1c2aab1701948532513e920fe
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 22:38:44 2008 +0100
-
-    gschem: Don't use default_scheme_directory.
-    
-    gschem uses default_scheme_directory to find gschem.scm. It doesn't
-    need to, because libgeda should have already set the Guile load path
-    correctly by this point.
-
-commit b26a13cbf455297ab27702fb9964e947e83bd30b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 15:06:43 2008 +0100
-
-    Revert "Fix for dialogs drifting downwards on Cygwin/X."
-    
-    This reverts commit d86ac8ce4b16d41699ec64a3d88fd8d2c760b770. The
-    effects were so annoying on non-broken X servers that another solution
-    needs to be found.
-
-commit 6f42af29cfe5c70203ce6b881d48d904c1bb0fc7
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 02:18:41 2008 +0100
-
-    o_grips_start(): Propagate world coords of pointers to o_grips_start_*()
-    
-    The (unused) x and y parameters to o_grips_start_*() were previously
-    passed as 0, 0.
-    
-    It seems obviously right to me to propagate w_x and w_y, even if the
-    target object pulls the pointer position out of w_current again, which
-    itself is quite evil.
-
-commit 0db6ea2341ce7cc8c631df75c4d3c30390590b29
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:55:59 2008 +0100
-
-    Split OBJECT allocation from its initialization.
-    
-    Split memory allocation for OBJECTs out of s_basic_init_object(). Add a
-    new helper function s_basic_new_object() which allocates memory for the
-    OBJECT structure, then calls s_basic_init_object().
-    
-    These changes make it possible to embed an OBJECT structure within
-    another struct, or to initialise an OBJECT in static memory.
-    
-    (Patch modified by Peter Clifton)
-
-commit 0d28977cd5e275a799ec3773f302ddf9b9544fd3
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:48:12 2008 +0100
-
-    gschem: Erase the newly placed attribute before changing its position.
-    
-    Changing the position first then erasing causes the wrong bounding
-    rectangle on the screen to be invalidated.  We need to invalidate the
-    bounding rectangle of the *old* position.
-
-commit 6c9b043233a645f6293d62f5a8c598cd5f95940b
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:33:45 2008 +0100
-
-    o_picture_rubberbox(): Update comments to reflect reality.
-    
-    Coordinates passed are in world units, not screen.
-
-commit 7bdd0362b87bcfc29a647f650a2d610465314526
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:33:45 2008 +0100
-
-    o_arc_rubberarc(): Document the effect of moving each grip.
-    
-    The documentation was elsewhere far away.  Moving it closer to the
-    arc moving code mitigates the "action at a distance" antipattern.
-
-commit 17c64b764cb42afc8d5b80a66361029655dd644b
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Aug 12 23:36:35 2008 +0100
-
-    s_basic_init_object(): Set OBJECT type according to new parameter.
-
-commit 235d219c4c9b96409cd4b95be3960e7e9f2689eb
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Aug 12 23:36:35 2008 +0100
-
-    Add header guard.
-
-commit 3d09a3fffd1f97816583ca92d73d0c792646bf2e
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Aug 10 00:19:01 2008 +0200
-
-    Rather pass the user-supplied scripting command to a scheme dispatcher.
-    
-    Passing the command to a scheme dispatcher gives the configuration files
-    an opportunity to define the language in which these scripting commands
-    are interpreted.  It doesn't really need to be scheme, but it is for now.
-    
-    (New patch with changes suggested by Peter TB Brett.)
-
-commit 4ef611b6e1cc6eb47538148ce1d196d495313969
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Fri Jul 18 20:24:46 2008 -0700
-
-    Altered point selection mechanism to use distance instead of just a bounding box.
-    
-    This patch improves the mechanism used to select objects when using a single
-    point.  In addition to using the bounding box, this patch calculates the
-    distance between the selection point and the object itself.  This calculated
-    distance provides a more accurate means to determine the actual object the user
-    selected.
-    
-    Signed-off-by: Peter TB Brett <peter@xxxxxxxxxxxxx>
-
-commit 371c37024225e506b1018445e61f4392e13d7db9
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Thu Aug 7 01:19:04 2008 +0200
-
-    Make the current page accessible to scheme.
-    
-    Signed-off-by: Peter TB Brett <peter@xxxxxxxxxxxxx>
-
-commit 4f7b81ccb2246c8eae803ce13dd3927f5743b3ad
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 6 23:40:26 2008 +0200
-
-    Don't expect a "rest" argument in the i_callback_*() functions.
-
-commit d86ac8ce4b16d41699ec64a3d88fd8d2c760b770
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Sep 16 16:56:18 2007 -0300
-
-    Fix for dialogs drifting downwards on Cygwin/X.
-    
-    On Cygwin/X, reopening a gschem dialog restores its original position,
-    but with a small vertical offset.
-    
-    The workaround is to show the dialog before restoring its position.
-    
-    The docs for gtk_window_move() offer a possible justification:
-      "Most window managers ignore requests for initial window positions
-      (instead using a user-defined placement algorithm) and honor requests
-      after the window has already been shown."
-    
-    The downside is, if you have a slow system, you could see the dialog
-    appear briefly at the old position, I suppose.
-
-commit 713225e719fa1bab8bc4b31dfc3cd50ea6c44f4e
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Jul 8 02:15:46 2008 +0200
-
-    Add the magic colon to the global keymap.
-
-commit cae8edda94f240d5bbdae08d6f8b67a037e0e6ba
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Jul 8 01:13:49 2008 +0200
-
-    Use g_scm_c_eval_string_protected() so we don't crash on bad forms.
-
-commit 57fc3a940f9609b45d26cb73b696ffcd1df15c58
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Mon Jul 7 04:46:19 2008 +0200
-
-    Invoke scheme forms from a command prompt below the drawing area.
-
-commit 61255c9b68aeae2ae845eea82babf445036a72f1
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Sat Aug 2 12:11:19 2008 +0100
-
-    Allow key bindings to accept a REST argument list.
-    
-    In order to support adding optional arguments to key bindings, the
-    function signature of ALL the bindings has to change.
-    
-    Supply REST (if available) or SCM_EOL (no extra arguments) where the
-    caller is a C function.
-    
-    Conflicts merged by Peter B:
-    
-    	gschem/include/prototype.h
-    	gschem/src/x_event.c
-
-commit da5b6b6ae5848d988c22ed5528917bf050a54a2d
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Thu Jan 17 03:12:39 2008 +0200
-
-    Desensitise function signature to function pointer parameters.
-    
-    func_ptr gets assigned to last_callback anyway, which itself
-    does not specify any formal parameters.
-
-commit 1e247aeb7a4f568578bd8612f886d7f64f24c858
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Aug 1 14:37:48 2008 +0200
-
-    Keep raising the page changed flag local to mutation for o_attrib_toggle_*().
-    
-    Reverted the settings of the CHANGED flag in o_attrib_toggle_*(): they
-    had been moved inadvertently to i_callback_*() functions (see commits
-    903e06d9fc9253e87e530bfaec2e8386664d464f and
-    fd51b8163c5af2d8124dc7afb1ca1c4bfa944fe6) while they really should
-    stay close to where the object is modified.
-    
-    Problem reported by Bernd Jendrissek on gEDA-dev.
-
-commit f154fcb921e75e7940e0b4dbd9ad5bab6a61e704
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Sat Jun 28 12:14:00 2008 +0200
-
-    Enable promotion of attributes when adding a component from guile.
-    
-    g_add_component()/add-component-at-xy was adding component with
-    attribute promotion turned off.  This change fixes bug [#1932474].
-
-commit 0c8b23528692e0d9406503a400c71dd458cea878
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:26:07 2008 +0100
-
-    Remove the unused TEXTENTRY state
-
-commit a90588ec6566f944756800f38f74a02f867dca87
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:18:39 2008 +0100
-
-    Remove the TOPLEVEL variable internal_symbol_name which is now redundant.
-    
-    Also removes functions which set and free'd this variable:
-      o_complex_set_filename()
-      o_complex_free_filename().
-
-commit d1ff81f8d8a1d18781f8cb7c4476417947a61cec
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:18:38 2008 +0100
-
-    Remove the TOPLEVEL variable current_attribute which is now redundant.
-    
-    Also removes functions which set and free'd this variable:
-      o_attrib_set_string()
-      o_attrib_free_current().
-
-commit d3b75982a9507c05cb2699ae9d875fa344608196
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:11:27 2008 +0100
-
-    Add support for rotating whilst placing
-    
-    Due to the consolidation of the OBJECT place code, rotation can now
-    work across uniformly various different placemenet actions.
-
-commit 0eea7587957ef3e01c2d1942d7bc6c940c237e4a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:05:11 2008 +0100
-
-    Remove un-necessary variable w_current->rotated_inside.
-    
-    The rotation of placed objects is always started at zero degrees, and
-    since the rework of the copy / place code, is done on the fly. Remove
-    the old code to track the angle rotated during placement.
-    need to track the rotation angle
-
-commit 1e4eb30f7cab3f3cb9e49478ed05d24cba99858b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:05:02 2008 +0100
-
-    Remove un-necessary variable w_current->complex_rotate.
-    
-    The rotation of placed objects is always started at zero degrees, and
-    since the rework of the copy / place code, is done on the fly. Remove
-    the old code to track the angle rotated during placement.
-    need to track the rotation angle
-
-commit aa7fb5c523e57cf7e3bbb4224e0ffbbf524ab95e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:04:24 2008 +0100
-
-    Consolidate specialised o_..._rubber...() and o_..._rubber...__xor()
-    
-    Since these operations now use the same place list, we can share code.
-
-commit e931091e28f90e7bd0f755ee30665cc5b7461b74
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:00:59 2008 +0100
-
-    gschem: Combine code for operations which handle placement of OBJECTs.
-    
-    Replaces duplicated code related to component / text placement, copying /
-    multi-copying objects and pasting from buffers with a common set of
-    routines in the new file, gschem/src/o_place.c
-    
-    This refactoring lays the foundation to allow rotatation / mirroring whilst
-    performing any kind of place action, without extensive duplicate code.
-    
-    All of the above operations now use a new PAGE variable, "place_list",
-    rather than previous specialised variants complex_place_list, and
-    attrib_place_list. Paste-buffer contents are copied into the place list,
-    rather than placing directly from the paste-buffer, ensuring that any
-    rotation / mirroring of the place-buffer does not change the paste-buffer.
-    
-    Helper functions, o_text_prepare_place() and o_complex_prepare_place() are
-    added to load the place list with appropriate text, or a symbol. These are
-    passed as arguments to the respective functions, avoiding the use of state
-    stored in toplevel->current_attribute and toplevel->internal_symbol_name.
-
-commit d0d18117a483029a61077a792203df5bd1a7f22a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 01:47:11 2008 +0100
-
-    Don't drop artifacts when redrawing in the middle of a move operation
-    
-    The nets being rubberbanded should not be redrawn in their original
-    positions, so we set the "dont_redraw" flag on the rubberband objects
-    to ensure they are not drawn (in their un-stretched position) during
-    screen updates. We unset the flag in o_move_end() and o_move_cancel().
-
-commit 1ecd2a345ba49d7eb428d528d056f2c9f5e9b590
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 01:40:20 2008 +0100
-
-    gschem: Move freeing stretch list of to after move operation is ended
-    
-    Previously, the stretch list was left stale with pointers after a move
-    operation, and only cleared when commencing a new move. By clearing it
-    after each move operation (completed, or cancelled), we can ensure its
-    contents are always valid.
-    
-    This is important so that at the end / cancellation of a move operation,
-    we can operate on the stretch list without danger it was not up-to-date.
-    If a move operation is started with rubberbanding disabled, and the user
-    subsequently activates rubberbanding (during the move) with a key-stroke,
-    stale pointers in the stretch list may have been dereferenced in error.
-
-commit cc5ea879b0ccfc7815b43b30ddfae13941aff4eb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 01:20:04 2008 +0100
-
-    Add OBJECT flag "dont_redraw", to skip drawing individual objects.
-    
-    This flag is to be useful when handling move operations which hide
-    rubberbanded objects on the page whilst a temporary copy is manipulated
-    on screen.
-
-commit 29600e269da20822ec0443024c63cb5e0ae34ea2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:44:55 2008 +0100
-
-    Add redraw for items being placed from paste-buffer in o_redraw_all()
-    
-    Added missing "w_current->inside_action = 1;" to o_buffer_paste_start(),
-    noticed when the new redraw added didn't work on its own.
-    
-    Fixes ghosts left when zooming whilst pasting from a buffer.
-
-commit 1dc71988f58df1bbe828aebacc5d81d7bd21b954
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:40:13 2008 +0100
-
-    Always "undo" when cancelling from a move action
-    
-    The undo state is always saved in o_move_start(), so when cancelling
-    from a move action we should always undo.
-    
-    Adds helper function o_move_cancel() to avoid code duplication
-    of the various operations when cancelling a move action.
-
-commit 03056b53bfe6865d77c585bb7d190ce4f2aa0cd6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:29:33 2008 +0100
-
-    Add o_move_rubbermove_xor()
-    
-    Make use of o_move_rubbermove_xor() throught the code to avoid
-    duplication of o_drawbounding() calls.
-
-commit a3ee37bbb4a87379a129d6993e175136416721da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:27:13 2008 +0100
-
-    Adjust scroll pan increment to be finer
-    
-    Scrolling in a smaller steps gives a greater degree of control when
-    navigating around the schematic, with a (subjective) improvement to
-    usability.
-    
-    This commit changes the number of scroll events required to traverse
-    the viewed area from 4 to 8.
-
-commit 78f18664289a29ca137c341fac9c7bbceb17cd06
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:27:12 2008 +0100
-
-    Change default zoom-gain to from 50%, to 20% increase in size.
-    
-    Zooming in a smaller amount gives a greater degree of control when
-    navigating around the schematic, with a (subjective) improvement to
-    usability.
-
-commit 20bd89fa6fd55d757194bd7d0143f8b9fff58ee7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:27:11 2008 +0100
-
-    Make size of panning steps with the mouse scroll wheel adjustable
-    
-    The new gschemrc function, (scrollpan-steps integer) controls how many
-    scroll wheel events are required to pan across the viewed area of the
-    schematic.
-    
-    The default setting keeps gschem's previous hard-coded behaviour of 4
-    scroll events (in a particular direction) across the viewed area.
-
-commit 59cf57b8eb960b5e8041778d5377c160a4af57d3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 27 23:50:55 2008 +0100
-
-    Make the "gain" of zoom in / out operations an adjustable parameter.
-    
-    The new gschemrc function, (zoom-gain integer) controls the percentage
-    size increase when zooming into the page. Zooming out uses the inverse
-    factor such that a zoom in followed by a zoom out will return the
-    schematic to the same size.
-    
-    E.g:
-       20% increment => x 1.2 original size when zooming in
-                     => x 1 / 1.2 x original size when zooming out
-    
-    The default gain keeps gschem's previous hard-coded behaviour of zooming in
-    by a factor of 1.5. This is now specified with the command (zoom-gain 50).
-
-commit 6802a78d5a19069919e4524530b91c34c1d099fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 27 02:22:22 2008 +0100
-
-    gschem: Activating component selector rows expands / contracts groups
-    
-    Observation of a user working with gschem showed that opening the groups
-    of components from varous libraries was not particularly discoverable to
-    a user not familiar with GTK. The user was noticed to be double-clicking
-    the library sub-groups, rather than identifying the expander arrow.
-    
-    Fix this usibility issue by making double click, and other row-activation
-    methods expand / contract the library groups. Keyboard navigation
-    (where space / return activate given rows) is also easier now.
-
-commit b02d9540d1bc0cdcfd5935f84bf8ee2f52dde2bd
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:41 2008 +0200
-
-    Use functions from o_select.c rather than low-level geda_list functions.
-
-commit 1aaf6613a7c6991d858c1143ed3917675a115a5a
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:40 2008 +0200
-
-    Move selection monitoring out of the multi attrib widget.
-    
-    Reinstated the 'object' property for multi attrib widget in place of
-    the 'selection' one: the widget does not have to mess with selections,
-    it is only interested in objects. Moved the selection watch stuff
-    outside.
-
-commit 4ad46d1b431bceb665fdd45778345118dfc1d414
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:34 2008 +0200
-
-    Limit scope of gschem x_color_allocate_all().
-
-commit 67bb084eef2f0e97bd9573fdea0faa5dfd2e53bc
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:33 2008 +0200
-
-    Move color-related stuff from x_window.c to x_color.c.
-    
-    Renamed x_window_setup_colors() and x_window_free_colors() to
-    x_color_init() and x_color_free() respectively. And moved them to
-    x_color.c
-
-commit d96ad3c39121d6c7e32128493d5445f0825f1751
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:32 2008 +0200
-
-    Cleanup the stroke interface.
-    
-    Improved the API and memory allocation, added documentation.
-
-commit 19aab8901a7519879231c680060f89a69c125e85
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:31 2008 +0200
-
-    Modify o_attrib_toggle_show_name_value() to work on a single object.
-
-commit 306d5722847b4d8c152bd369bc68846b9a19abb0
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:30 2008 +0200
-
-    Modify o_attrib_toggle_visibility() to work on a single object.
-
-commit 658516c080eae8d78685113e48290bb291af0715
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:29 2008 +0200
-
-    Add new function to delete any object.
-    
-    Added o_delete() as replacement for individual object deletion
-    function. Adapted o_delete_selected() accordingly.
-
-commit 64a6741c858de019ab26058afcc417b821d37117
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:28 2008 +0200
-
-    Merge cue undrawing functions for complex and objects.
-    
-    Merged o_cue_undraw() and o_cue_undraw_complex(). Also added
-    documentation.
-
-commit 0cdcdf4cfe8bf3c6aa078b91e5696a26f7a60f23
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:27 2008 +0200
-
-    Add new function to erase grips on any object.
-
-commit 37eaad0765b34e85275706b6cffbc73ec9b5c4cd
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:26 2008 +0200
-
-    Rename o_delete() to o_delete_selected().
-
-commit 83de2270e9d0f159975e833e1fec213f952c7315
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:25 2008 +0200
-
-    Remove o_complex_delete().
-    
-    Removed function as s_delete() does the same thing.
-
-commit b86ffc45f699781c220153e2390a54f8b823a930
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:16 2008 +0200
-
-    Refactor hierarchy function searching for parent page.
-    
-    Renamed s_hierarchy_up() to s_hierarchy_find_up_page() for consistency
-    and modified it to return a pointer on the page found (as other
-    hierarchy find functions) instead of changing the current
-    page. Added description. And finally adapted gschem for this
-    refactoring.
-
-commit 06dc1e65b688f88695e47dd38cd9022eb67bbb7c
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:15 2008 +0200
-
-    Simplify prototype of functions for searching pages in hierarchy.
-    
-    Removed 3rd parameter to s_hierarchy_find_[next|prev]_page(): now
-    explicitly search for sibling page of page in 2nd parameter. Also
-    added description for functions.
-
-commit 6b15947087caebaa4c85805799362c169e09adba
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:14 2008 +0200
-
-    Rename s_hierarchy_find_page() to s_page_search_by_page_id().
-    
-    Moved s_hierarchy_find_page() to libgeda s_page.c and renamed to
-    s_page_search_by_page_id(). Also added description.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit c50ba14cea1d60e21d587164612b1866d8e58bba
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:10 2008 +0200
-
-    Replace case conversion functions with GLib functions.
-    
-    Now use GLib case conversion functions, with the added benefit of UTF8
-    support, instead of libgeda string_tolower() and
-    string_toupper(). Consequently these two functions have been removed.
-
-commit fa54e090d67849762c83231557bc6047bf035a03
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:08 2008 +0200
-
-    Cleanup detection of attribute when editing text object in gschem.
-    
-    Modified the verification on the text object in gschem o_edit() to use
-    o_attrib_get_name_value() instead of local custom testing code.
-
-commit 872287f23b4880b01babed777efe7976783feab2
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:05 2008 +0200
-
-    Cleanup of libgeda o_attrib_get_name_value().
-    
-    Rewrote o_attrib_get_name_value(): it now has support for UTF-8
-    attribute strings ; plus it can return only the name or the value or
-    both name and value.
-    
-    Finally adapted code wherever it can benefits this new feature.
-
-commit 5d97c15d614030eb32ddc30e316fadd4d1416c6c
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:03 2008 +0200
-
-    Fix memory leak in gschem.
-    
-    When processing file names passed on command line, the pathname built
-    for each one was not freed.
-
-commit a76cf5cdda91c7070f4765107d3f8be89bbd05b6
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:01 2008 +0200
-
-    Remove unnecessary strippings of trailing directory separator.
-    
-    These strippings is no more necessary as GLib functions for building
-    filenames (in particular g_build_filename()) takes care of any
-    trailing directory separator for us.
-
-commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:00 2008 +0200
-
-    Replace getcwd() with g_get_current_dir().
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit a3513b7e6dc7bf6c36d95d4da86082beeb79831d
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:57 2008 +0200
-
-    Replace standard string manipulations with GLib string utility functions.
-
-commit da1d2e7b304f9d832bdee9c8dfb9fe4604e19cc9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:56 2008 +0200
-
-    Remove tests for NULL prior to freeing with g_free().
-    
-    Testing if pointer on memory to free is not NULL is unnecessary
-    since g_free() does the test itself.
-
-commit 21bdf2fbbad2146234fd32a0fe04bddcaddb64f8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:21:00 2008 -0400
-
-    Updated versions in the important man pages
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 8773525a45c1e33a2f020ac511f628e04ff373b9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:01:37 2008 -0400
-
-    Ran make update-po in all po directories (in prep for a new release)
-
-commit 2740891d2b1a2e9b8ad0ef27ef1cb54ec47f9b74
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 21:51:28 2008 -0400
-
-    Removed some m4 files which no longer exist
-
-commit 97c1b01e1c95d2f8a334d916ffc60d35797782c2
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 09:34:01 2008 -0400
-
-    Fixed up all icon-theme-installer files to work with non-bash
-    
-    Grabbed the latest icon-theme-installer files from the pcb repository
-    since they have been fully patched to work with non-bash shells.  On
-    my ubuntu system, /bin/sh is linked to dash which prevented me from
-    running the previous version of icon-theme-installer.  This commit
-    is related to a7e7a28613abe4705ec01011d0f4308ff024251b
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit a7e7a28613abe4705ec01011d0f4308ff024251b
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jun 29 19:00:10 2008 +0200
-
-    Changed shell from bash to sh in icon-theme-installer
-    
-    Changed shell from bash to sh in icon-theme-installer.
-    This commit is still not tested in non-bash systems.
-    
-    Applied partially geda patch #1978537 (only bash to sh
-    change, not removal of $INSTALL_DATA_EXEC check) from
-    anonymous contributor and Dan McMahill's test case
-    change in line 103 from:
-    
-    http://pcb.cvs.sourceforge.net/pcb/pcb/icon-theme-installer?r1=1.1&r2=1.2
-
-commit 55b378f5eddc78f0f3f48c83f401e454323d9bd9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri May 23 17:02:51 2008 +0200
-
-    gschem: use pointer from drawing area in preview and x_attribedit
-    
-    The preview widget used in the file dialog and in the component dialog is
-    now using the pointer from the drawing area, too. The motion event function that tracked the pointer is no longer required.
-    
-    The attribedit dialog used the mouse_wx/y variables to set the attribute
-    postion when activated with the hotkey. This usage has been removed.
-    
-    Removed all mouse_wx/y occurences in x_event and in the global.h file.
-    This variables are completly gone now.
-
-commit 5681a43743b2ccfdf246679ad78f186b5a7f1f14
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri May 23 16:54:28 2008 +0200
-
-    gschem: use pointer from drawing area for all gschem callbacks
-    
-    The global variable for the pointer mouse_wx/y are no longer used.
-    The zoom and panning actions have a unsnapped position again.
-    Note: If the pointer is outside the drawing area and a hotkey action
-    is triggered the action will be ignored.
-
-commit 0b0100eefa31acbd56f41ca639856da904645e74
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri May 23 10:22:25 2008 +0200
-
-    gschem: added function to get the pointer from the drawing area
-    
-    The new function x_event_get_pointer_position() get's the mouse
-    position from a given GSCHEM_TOPLEVEL object. This function will replace
-    the global mouse_wx, mouse_wy variables in the following commits.
-
-commit 016cd29c2d4cb540f70f01c14059b0d538b801d6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 18:11:45 2008 +0100
-
-    Add o_copy_rubbercopy() and o_copy_rubbercopy_xor()
-    
-    Make use of o_copy_rubbercopy_xor() throught the code to avoid
-    duplication of o_drawbounding() calls.
-
-commit cc5017e65222ec97e084c17a3920dc29f5e65532
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 18:11:42 2008 +0100
-
-    Rework o_buffer_place_rubberplace() to follow usual semantics.
-    
-    Renames o_buffer_place_rubberplace() o_buffer_place_rubberplace_xor()
-    and re-adds o_buffer_place_rubberplace() which now follows the "undraw,
-    move, draw" sequence like the other functions with this naming pattern.
-    
-    Make use of o_buffer_rubberpaste_xor() throught the code to avoid
-    duplication of o_drawbounding() calls.
-
-commit f8bc1947ddf59f8e437702b6f83c1292cb6f50ac
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 18:10:25 2008 +0100
-
-    Rework o_text_rubberattrib() to follow usual semantics.
-    
-    Renames o_text_rubberattrib() o_text_rubberattrib_xor() and re-adds
-    o_text_rubberattrib() which now follows the "undraw, move, draw"
-    sequence like the other functions with this naming pattern.
-    
-    Make use of o_text_rubberattrib_xor() throught the code to avoid
-    duplication of o_drawbounding() calls.
-
-commit deae2c854ddc1461811c176e78f69842be738321
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 18:09:49 2008 +0100
-
-    Use o_complex_rubbercomplex_xor() where possible to simplify code.
-    
-    Adds a parameter "int drawing" to this call, which is passed on to
-    o_drawbounding(). This is used to determine whether the operation
-    is to undraw an old object (in which case, the old feedback mode is
-    used), or is drawing new objects, in which case the current action
-    feedback mode is used.
-
-commit 6359729a98bb9f34a4b460d6b42e85cf502ae010
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 15:34:29 2008 +0100
-
-    Fix rotate whilst moving to rotate about the current mouse coordinates
-    
-    Bug appears to have been introduced when changing from screen to world
-    coordiantes in 1b05cbfcbb07970159c58b2b18d583516e257a45
-
-commit 62a3123ce33d825855735ed8727c8f617b46b61e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 14:27:46 2008 +0100
-
-    Add o_move_rubbermove(...) function to keep move logic in o_move.c
-
-commit ec074cb3ca38db23516d89df6bf4f60f13229822
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 14:27:44 2008 +0100
-
-    Rework o_complex_rubbercomplex(...) to follow usual semantics.
-    
-    Renames o_complex_rubbercomplex() o_complex_rubbercomplex_xor() and
-    re-adds o_complex_rubbercomplex() which now follows the "undraw, move,
-    draw" sequence like the other functions with this naming pattern.
-
-commit 4768b20db9983ae7d0b3221d9340a61ca2a805c0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Apr 26 17:58:06 2008 +0100
-
-    Various whitespace changes and tidy-up split from code-change patches
-    
-    No code changes.
-
-commit d76dfc090cd97a1aa582fd215468ec6b6d234f57
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 13:55:38 2008 +0100
-
-    Remove bounding box undraws in DRAWTEXT and DRAWCOMP states
-    
-    These two states are used when no drawing has yet hit the screen,
-    so there should not be XOR drawing calls to "undraw" changes which
-    haven't been made.
-
-commit de5a6de1643a041e70acf1f27b02281fe16f23b7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun May 18 13:54:54 2008 +0100
-
-    Fixup prototype variable names to reflect their usage (screen vs. world)
-
-commit 2337e0a71a5c5f2181801441e4435d0cb44c5ba0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Apr 26 17:57:50 2008 +0100
-
-    Tidy up some whitespace in gschem/src/x_event.c
-
-commit 38bf778654574851469b6b280cf2aef5bc2bff0e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 20 21:55:04 2008 +0200
-
-    set rubber invisible at the end of each object draw action, cleanup
-    
-    It's more save to reset the variable GSCHEM_TOPLEVLE->rubber_visible
-    after any creation of an object. This variable is usually reset inside
-    any redraw action, too.
-    Moved some event code from o_bus to x_event. Moved setup of w_x/y variables
-    some lines up to prevent uninitialised usage.
-
-commit 73d59cd8394c172ffdcb17e860ae0d9a01b46bc9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 20 11:12:38 2008 +0200
-
-    balancing snapped and unsnapped x/y coordinates
-    
-    All object actions need snapped coords, while selecting and zooming/panning
-    need unsnapped coords.
-    Unsnapped actions are now select, select-box, zoom-box and grips actions.
-    grips motion is slightly special for arcs. While the radius is snapped
-    the manipulation of start and endangle needs to remain unsnapped.
-    All other grid motion actions (line, box, ...) still needs snapped coords.
-
-commit eb3a7b13f85c9a84b88d9de2e3ad29f1245dd865
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Apr 19 19:38:06 2008 +0200
-
-    use world coord for to find objects, cleanup
-    
-    Removed all uses of the global screen variables mouse_x, mouse_y.
-    This included changes when adding an attribut and when finding an object.
-    Additionally fixed a buggy call to o_pan.
-
-commit c484c83a3890ea22619c1c84757b83632e128ab4
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Apr 18 20:54:29 2008 +0200
-
-    switched zoom and pan to world coordinates, cleanup
-    
-    zoom and pan are the last users of the old variables start_x, start_y,
-    last_x, last_y, second_x, second_y, save_x, save_y.
-    Those variables are obsolete and have been removed from the
-    GSCHEM_TOPLEVEL structure.
-    The panning also affected the preview widget. Which needed to be fixed, too.
-
-commit 69fa323b708bc5784a475a0911d1c100927edab8
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Apr 17 23:08:20 2008 +0200
-
-    switch complex copy and complex place to world coords
-    
-    switched all functions to world coords. The temporary calculation of
-    the world coords can be removed now, as all complex objects are in
-    world coords now.
-
-commit 1e0500f9e3abb6ac431a8b69e4d97b5c17775155
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Apr 17 22:12:23 2008 +0200
-
-    switched buffer insertion mode to world coords
-
-commit eb46913531447bd975e438c8697aded9ce07ee2f
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Apr 17 21:37:48 2008 +0200
-
-    switched selection and selection box to world coords
-    
-    The holdoff distance before starting to draw the selection box
-    has been moved from x_event.c to o_select_box_start()
-
-commit 4820283ca1f6977ffbfed1565da5b2a70aa0eb77
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 15 21:44:07 2008 +0200
-
-    switched text code to world coords
-    
-    Changed all text creation functions to use world coords.
-
-commit 70afd4b31ebbb9dfc6c7a8ed0a33bb53f0ff0511
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 15 20:56:57 2008 +0200
-
-    switched o_draw_bounding and all xor drawing functions to world coords
-    
-    All object xor drawing functions are called in world dx/dy coordinates
-    now. Changed the object code and the o_draw_bounding code.
-    BUG: o_draw_bounding is still used in world and nonworld coords.
-
-commit 2d880f35530c43d5f291af6c70535c99a378ffdb
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 15 19:09:24 2008 +0200
-
-    switched move mode to world coordinates
-    
-    Switched move functions to world corrdinates.
-    This affects the net and bus when stretching them.
-    BUG: The function o_draw_bounding is used by world and nonworld
-    coordinates. This needs to be fixed with the next commits.
-
-commit 4cace928604a9b799e761a80d7b0424d45d554ce
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Apr 14 20:52:15 2008 +0200
-
-    fixed rubber color for pin and bus, fixed line erase
-    
-    The color of the rubber wasn't correct for pins and buses.
-    The o_line_eraserubber function still used start_x.
-
-commit c4abffeb78305f3c7ede736b027def82c3171181
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 13 12:00:24 2008 +0200
-
-    switched picture rubber and manipulation to world coords
-    
-    Call all picture functions with world coords.
-
-commit 6cfafdaf3c09dde2aedfa7fc3f57662dd0b25ba9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 8 21:15:36 2008 +0200
-
-    switched pin rubber drawing to world coordinates
-    
-    Call all pin functions with world coordinates. Replaced some of the
-    gdk drawing functions with object drawing functions.
-
-commit ef2871ee0ee34af000205cdfe889fb2bad3a74bb
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Apr 7 20:47:44 2008 +0200
-
-    removed redundant x event state code from o_grips.c
-    
-    The removed code for updating the state and the toolbar is already
-    present in the state code in x_event.c after the o_grips_end()
-    call. Reseting the state variables first_wx, second_wx, ... is not
-    required at all.
-
-commit 60b734ed80d7ccefba7a78a878714261a9637a67
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Apr 7 20:32:01 2008 +0200
-
-    fixed o_grips_end manipulation for net/line and pin
-    
-    Fixed the code for the end of the net line and pin manipulations.
-    Extracted the functionality to three new functions and switched them
-    to world coordinates. Removed some gdk drawing code and replaced it
-    with object drawing functions.
-
-commit f003de85165f11280f909acd6b785ebf38bacf39
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 21:41:19 2008 +0200
-
-    switched grips for line manipulation to world coords
-    
-    This also affects the line/bus and pin manipulation.
-    While start and motion is identical, the end point of the
-    manipulation has to be fixed separatly.
-
-commit 6efa4f6c16894852b409f130d50acef88d78aa22
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 20:05:25 2008 +0200
-
-    switched line rubber drawing to world coords
-    
-    Call all line functions with world coordinates. Removed
-    some unused code.
-
-commit bdcb6e63c3ed1b19f0d1d854536b0e51aad85429
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 19:10:31 2008 +0200
-
-    switched bus rubber drawing to world coords
-    
-    Call all bus function with world coordinates. Added rubberbus_xor
-    function to simplify code. Added some function documentations.
-
-commit 87aeb1ee33995af7645aa4d72265254d217f62ef
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 17:29:40 2008 +0200
-
-    switched arc rubber drawing and manipulation to world coords
-    
-    Call all arc function with world coords. Removed obsolete loc_x/y
-    variables. Removed unused functions o_arc_end2 and o_arc_end3.
-
-commit 0720815ae4594ae3a73ca96d6392ae35c2172e4a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 15:03:22 2008 +0200
-
-    switched circle rubber drawing and manipulation to world coords
-    
-    Call all cirle functions in world coords. Use rubber_visible variable
-    to protect the drawing code from erasing errors.
-
-commit 4f5cf44b196790dbf5cf318977463b487a17ec89
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 13:09:35 2008 +0200
-
-    switched box grips to world coordinates
-    
-    This fixes the manipulation of a box, that broke in the previous
-    commit.
-
-commit 693d7fbb8630bcb846ee72bb594a6c8612ec2f17
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 6 12:15:21 2008 +0200
-
-    switched box rubber drawing to world coordinates
-    
-    Call all box functions with world coordinates. Protect the rubber box
-    from erasing if the rubber box has been erased by the redraw_all
-    function. This happend if the user zoomed while drawing the box.
-    The variable w_current->rubber_visible is used for this purpose.
-
-commit 1b05cbfcbb07970159c58b2b18d583516e257a45
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Apr 26 17:09:58 2008 +0200
-
-    switched x events to world coordinates in net drawing code
-    
-    This includes the creation of w_x, w_y, mouse_wx, mouse_wy variables
-    in the x_event functions. Call all net drawing functions in world
-    coordinates. Print a warning message when connecting to offgrid pins
-    and nets.
-
-commit 3372a6ff3e99fb1d46c694b1d7bb7a586c9eebb9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 1 13:50:07 2008 +0200
-
-    removed redundant snap grid code in o_net.c
-
-commit fadb2326204bb6375749653d1e8a3035462b3479
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 1 13:37:05 2008 +0200
-
-    add world coordinates for the rubber lines, use them for net drawing
-    
-    This commit adds new variables to GSCHEM_TOPLEVEL. first_wx,
-    second_wx, third_wx. They are intended to replace the screen
-    coordinates start_x, last_x and last_y. Deployed that change in the
-    net drawing code. This should finally fix Bug [#1928544].
-
-commit 5f62a34fc821ced98f6faa7d4901ccd47e48380e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Apr 1 10:20:18 2008 +0200
-
-    switched the net rubber code from screen to world coordinates
-    
-    Using screen coordinates for start_x, second_x and last_x causes
-    integer arithmetic errors whenever the coordinates are converted between
-    the screen an the world. The conversion occurs with the fix_x function
-    and whenever the user zooms/pans in the drawing mode.
-    This change fixes bug [#1928544] pointed out by Thomas Arndt.
-    Note: This breaks the zooming and paning inside net drawing
-
-commit deacf7e8bc9a67aa4ac446f8627f177e8daa249a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Mar 31 14:42:14 2008 +0200
-
-    Add CTRL modifier key to mangetic net mode
-    
-    If magnetic net mode is active and you don't want to connect to
-    the closest possible connetion, you can use the CTRL key now.
-    Note: You're losing the ability to draw non-orthogonal nets in
-    magnetic net mode.
-
-commit 087374bd49bdc0fcefc535fe901de55439c28a17
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Mar 9 10:14:50 2008 +0100
-
-    make the net direction mode configurable (ON/OFF)
-    
-    Add all variables and callbacks to make the net direction mode
-    configurable. The configuration variable is used in o_net.c.
-
-commit c377b5f84dd046dd6716d262bc6b5c883bb9f280
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Mar 9 09:40:11 2008 +0100
-
-    guess net direction when adding nets in gschem
-    
-    When drawing a L-shape net the old behavier was to draw the horizontal
-    net first and the vertikal after. This patch guesses the direction
-    dependant of the starting point of the net. It tries to continue nets
-    and not to overwrite them.  This functionality was originally written
-    by "ar" and posted to the geda-dev mailing list.
-
-commit e089678b9fc068a4b14f41a47e7cef304d5d8221
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Apr 18 14:11:06 2008 +0100
-
-    gschem: Fix memory leak in x_window_open_page()
-
-commit 949ebc253254a4ec4798ea5faab6bce698fabbb0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Apr 17 21:55:09 2008 +0100
-
-    gschem: Use argc, rather than relying that char **argv is NULL terminated
-
-commit f1754277410f7e42fa86371ff875dbbf9f5dd100
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Apr 17 20:00:30 2008 +0100
-
-    gschem: Remove unused GDK global variable "visual"
-
-commit 84e20e053383201472c32834f4ea9995b8d20c45
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Apr 2 22:49:42 2008 +0200
-
-    fixed syntax error typo in x_image.c
-    
-    repaced ":" with ";", Typo catched by Thomas Arndt
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit fa3091a4da63abd5312be5b1cd132baefb9e77c1
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Mar 2 18:06:51 2008 +0100
-
-    show the magnetic net mode in the status bar
-
-commit 24f0395aab9589f8e98f284e63fe77e6dc2d2836
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Mar 2 16:42:06 2008 +0100
-
-    Fix drawing artefact in rubbernet drawing code
-    
-    The invalidation rectangles are to small if you're zoomed in.
-    The half of the net width needs to be added to the rectangels.
-    To do that, you need to sort the rectangle borders.
-
-commit 0b2ce2cb246fa46eae2abe53c32e2c1a2f100093
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Mar 2 16:20:27 2008 +0100
-
-    Enlarge the magnetic net marker with increasing net line width
-    
-    When zooming in the magnetic marker became small relativ to the net
-    width. This commit enlarges the magnetic marker with a constant factor
-    relative to the net width. The line width of the marker is the
-    same as the net width.
-
-commit ffd2298ca90e9e8616a2804c5708cb3d2ccb0a83
-Merge: b62e017... 1a49d46...
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Mar 1 09:43:53 2008 +0100
-
-    Merge branch 'magneticnet'
-
-commit 1a49d46192ff0e84e5727ba92829c56961119e5b
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Feb 27 20:12:26 2008 +0100
-
-    added configuration option for magnetic net mode in system-gschemrc
-    
-    Added a configuration option magnetic-net-mode and the g_rc function
-    Set the default value to enabled.
-
-commit 855f29d44df73caef03ee49bd58f19897f31b69d
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 22 21:46:21 2008 +0100
-
-    use tiles to find connections for magnetic net mode
-    
-    This commit changes the magnetic net code to use the tiles.  This
-    reduces the load when checking all the possible connections for every
-    mouse movement. The patch adds a library function to get object lists
-    which may contain objects in the region of the magnetic reach. In
-    o_net.c the object iterator code has been changed to use the new library
-    function.
-
-commit c283e8416d058258bab90b176ee94bb96308c710
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Feb 17 12:14:27 2008 +0100
-
-    Only look for visible objects in magnetic net mode
-    
-    In a large circuit the cpu load can be quite large. Checking only
-    visible objects decreases the cpu load.
-    The magnetic reach area is now a circle (Pythagoras). A rectangle
-    gives several points with the same distance at each side.
-
-commit 4b53eba9204af5eee37c308f23d396df21b2edad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 15 22:24:33 2008 +0000
-
-    Don't change back to a deleted page after the "Save changes?" dialog.
-    
-    Only switch back to the previous page being edited if that was not
-    the one just deleted. Fixes crash or memory corruption after closing
-    this dialog.
-
-commit de64a4f9ff006a80536359d148da9db57594083f
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 15 00:38:51 2008 +0000
-
-    o_delete_text(): only call o_attrib_slot_update() for COMPLEX objects.
-    
-    Fixes crash observed when deleting attributes from a net.
-
-commit 26883a66c3711ffe04eb5280c4b49c483ca50e95
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Feb 14 21:49:25 2008 +0100
-
-    added reset function to net drawing code
-    
-    This reset function cleans up all variables required to draw nets.
-    It is used before entering net drawing mode and should be used
-    whenever the STARTDRAWNET mode is entered.
-    Fixed the last drawing artefact in STARTDRAWNET state.
-
-commit aa26da60b8c2a7e66c8b4d6446e7b67de2c3537a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Feb 13 21:38:54 2008 +0100
-
-    misc cosmetic corrections for the magnetic net
-    
-    Put the magnetic marker onto grid (fix_x/y)
-    Changed the marker from a rectangle to a circle.
-    Changed the calculation of the magnetic reach from x+y to max(x,y).
-    This enlarges the reach into the 45° direction.
-
-commit 6e092d15b6e1881789561653ded80f98c5bdc2f5
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Feb 9 12:56:09 2008 +0100
-
-    connect the magnetic net mode into the net drawing functions
-    
-    The magnetic net mode is now use to set the start net point, track the
-    closest connection in the rubbernet function and to get the end point
-    of the net. The endpoint in the magnetic mode is calculated in the new
-    function o_net_finishmagnetic.
-    
-    This commit is based on the patch written by Franz Mottas and Thomas
-    Arndt [#1824420].
-
-commit 96fbd6214a4a364d0aa45b405293421623ea939c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Feb 9 11:09:10 2008 +0100
-
-    core code for magnetic net mode: find connections and draw marker
-    
-    When in STARTDRAWNET state, search for the closest connection.
-    Added code to search for that connection and to draw and erase
-    a rectangular magnetic net marker.
-    
-    This commit is based on the patch written by Franz Mottas and Thomas
-    Arndt [#1824420].
-
-commit 3a412167fe7e16526fafdfea273b3daf8be207b3
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Feb 9 08:54:45 2008 +0100
-
-    added menu entry and callbacks for magnetic net mode
-    
-    Added a entry into the options menu to toggle the magnetic net mode.
-    Added all required variables in GSCHEM_TOPLEVEL.
-    
-    This commit is based on the patch written by Franz Mottas and Thomas
-    Arndt [#1824420].
-
-commit 1d1c604d63bfe8f6eff91749953ba713f7b3745c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Feb 9 08:11:38 2008 +0100
-
-    fix drawing artefact when drawing a net and zoom/pan
-    
-    Zooming and paning redraw everything and if there are rubbernets
-    they get deleted, too. We have to tell the rubbernet function that
-    the rubbernet is no longer on the screen.
-    Thus I've added a flag rubbernet_visible as indicator. This flag needs
-    to be set when drawing, and reset when the rubbernet gets erased.
-
-commit 20e0e015622bd57d9b0704d39593f209e49a3396
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 8 20:57:09 2008 +0100
-
-    moved rubbernet drawing code into a extra function
-
-commit 921ed5c0b907fb0f11cfff2233758a2c0169c3e0
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 8 20:40:43 2008 +0100
-
-    Reuse common code from o_net_eraserubber in o_net_rubbernet
-    
-    The removal code or the rubbernets is the same in both cases, reuse
-    it.
-
-commit 3ebfd10448ffefd902325b115193cb95cbeeaaf5
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 8 20:24:14 2008 +0100
-
-    reuse common code from o_net_eraserubber in o_net_end
-    
-    reuse the o_net_eraserubber function in o_net_end. o_net_end
-    deleted a rubbernet the same way as o_net_eraserubber does.
-
-commit cf7689c9b6950c1694edacf9d750a48d87d462be
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 8 19:34:18 2008 +0100
-
-    Remove unused drawing code from function o_net_start()
-    
-    This code was never used as the line lenght of both rubbernet
-    segments was set to zero before drawing it.
-
-commit 56a787446f3f5a244c8b4cec21cdc4e489e19568
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Feb 6 21:25:58 2008 +0100
-
-    Fix documentation about list format.
-    
-      - Applied patch from Timur Aydin <ta@xxxxxxxxxx>, fixing a
-        comment on top of the list that explains each individual
-        item in that list. The comment didn't match the actual list
-        definition.
-      - Added comment about considering line width when calculating
-        a component's reference point.
-
-commit 5757ce41ac1846814b0e96885942f2e011f2d3b7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 1 13:06:15 2008 +0000
-
-    Rename translations to drop un-needed ISO-3166 country codes.
-    
-    From Debian bug #336796:
-    
-    Using a country part in a translation file is a discouraged practice
-    except in very few cases (such as pt_BR).
-    
-    Using a fr_FR.po file instead of a fr.po file prevents users of fr_CA,
-    fr_BE, fr_LU, fr_CH and all other existing and future locales for
-    French to benefit from the French translation of the program.
-    
-    In general PO files should only be named after the
-    ISO_639 code of the given language and should not use a country part
-    with a ISO-3166 code. The only accepted expcetions to this are:
-    
-    -pt_BR for Brazilian Portuguese and pt alone for "standard Portuguese"
-    -zh_CN for "Simplified Chinese" use in mailand China and Singapore
-    -zh_TW for "Traditional Chinese" used in Taiwan
-
-commit 22396b286d50c454287ff94a3c3de414b3f9a08a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 26 19:27:15 2008 +0100
-
-    update the pinnumbers if a slot attribute is deleted
-    
-    Update the slots whenever a text line that is attached to an object
-    gets deleted. The update checks the slotting even if there's no slot
-    attribut. This catches the case when the user deletes a slot attribute
-    and the current displayed pinnumbers are not the ones defined in the
-    symbol. This commit fixes [#1880221]
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 5e4ee69035885d76fba09aa453789be68481c69a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:46:06 2008 -0500
-
-    Ran make update-po one more time before the 1.4.0 release
-
-commit b11f5701b2329f1cb7ff64d2419197a6587d2008
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 27 09:24:01 2008 +0100
-
-    Updated german translation of gschem
-
-commit 58898d9db5403355c3984d4c4c970e4477d7e85a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 22:12:05 2008 -0500
-
-    Fix a crash when running a script that calls (gschem-image ...)
-    
-    x_image_lowlevel frees the last parameter (filetype).  This free was
-    causing a segfault when x_image_lowlevel was being passed a constant
-    character string.  Bernd Jendrissek found this bug during an irc
-    discussion.  Thanks.
-
-commit 5d619d94e6142ad683b26aa302348b3cf559d459
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 27 02:51:01 2008 +0000
-
-    Only call gdk_window_invalidate_rect() when drawing to a GdkWindow.
-    
-    For image export, a GdkPixmap is used in place of w_current->window,
-    and calling gdk_window_invalidate_rect() with this as an argument
-    causes lots of nasty warnings. It led to a crash when print.scm is
-    used to export from the command line.
-    
-    This "fix" is really quite a nasty hack. Since w_current->window is
-    a GObject in both cases, a test with GDK_IS_WINDOW() can be used to
-    distinguish the cases. A better fix will come from future rework of
-    the drawing code.
-
-commit bab0fb5d22b22b5452da553306555d7ff069ebd3
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 21:03:50 2008 -0500
-
-    Changed Edit/Undo and Add/Bus hotkeys
-    
-    Previously, "u" was add-bus-hotkey, which was annoying a growing number of
-    users.  Now "u" is undo and "Shift-B" is add-bus.  There are now like four
-    different keys for undo (u, Shift-U, Control-Z, and "e Shift-U") in the
-    default keymap.  Add/bus has "Shift-B" and "au" as hotkeys.
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit ecda6ee9e101563f7fed092150532256fd9b343e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:50:16 2008 -0500
-
-    Updated all dates and versions in all man pages
-
-commit 9a4bbc16c5c0e408aabbc69c1c1cc10cb4b7675f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:48:29 2008 -0500
-
-    Manually ran make update-po in all po dirs in prep for the 1.4.0 release
-
-commit 915463b5f3fe41419307e5dee4d227f3c9a9bb5e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 26 22:06:06 2008 +0000
-
-    Invalidate component cache when updating symbols. [#1880211]
-    
-    Temporary fix for Bug #1880211, "symbol update reads the symbol from
-    the cache". Ensure that when refreshing symbols, the symbol is read
-    from the component source, not from the cache. (Suggested by Peter
-    Brett).
-    
-    A more complete fix will be to add API which invalidates a single symbol
-    name, rather than the entire cache.
-
-commit 968c37becebd630b85abd8bf3546a834db419aaa
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 26 15:26:53 2008 +0000
-
-    Update the pinnumbers when updating a symbol with slots
-    
-    Fix for [#1880207]. When updating symbols, gschem loaded the
-    pinnumbers from the symbol file without respect to the slot attribute.
-
-commit fccaae6b363d7f81ab94725751314813c42b718d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 16 20:08:27 2008 +0000
-
-    Fix use after free corruption when consolidating nets
-
-commit bcea0ec85eb10a97b2f794fa240052b25d386cb9
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Fri Jan 18 22:54:33 2008 +0000
-
-    Update Afrikaans translation to fix spelling error.
-
-commit ec4b6287bbb4f709a7d3258a7474ec716933ca4b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:23:39 2008 -0500
-
-    Manually ran make update-po in all po directories in prep for the 1.3.1 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit bab45317a9e009449942e87d2ce2506287368187
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Fri Jan 11 05:10:13 2008 +0000
-
-    Add Afrikaans translation for gschem
-    
-    (af_ZA.po converted to UTF-8 encoding by Peter Clifton for consistency)
-
-commit 8eeb92aa5d10d7c4808d039e09b4b6626e380138
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 23:51:08 2008 -0500
-
-    When doing a find_text into hierarchy, the titlebar was not being updated
-    
-    Added a update call into o_edit_find_text that made sure the titlebar and
-    scrollbars are properly updated when the found attribute is displayed.
-    This addition will do a full redraw as well (not sure if that is going
-    to cause problems at this point).
-
-commit c1e3075cb263a6098d2351440b680247456ae0d0
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:27:16 2008 -0500
-
-    Updated and correct the gEDA/gaf man pages a little bit.
-    
-    This is the fix for SF Bug: [ 1556064 ] man page version out of date
-
-commit 7b0c15cea18baf9a2a3bb8c89ccb02034a821156
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Thu Jan 10 01:24:26 2008 +0000
-
-    gnetlist: Fix typo
-    
-    (Peter Clifton modified the patch to fix translations at the same time)
-
-commit 015f1dc8f08ef4ff9510dc04859b88311dedf237
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Mon Jan 7 20:22:46 2008 +0100
-
-    Updated gschem's spanish (Spain) translation.
-
-commit fd560649436835795f173f0fd3dc498133040f9a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 6 21:02:26 2008 +0000
-
-    Validate log messages to ensure they are UTF-8 before passing to GTK
-
-commit 048bd6f8e2fc1c5f5b01ff3f1cad3a7c9bf43f3e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 6 20:36:52 2008 +0000
-
-    Allow configuration of the scroll wheel's action to match GTK app. norms
-    
-    Adds configuration parameter (scroll-wheel ...) which takes either
-    "classic" or "gtk" as a string argument. "classic" remains the default.
-    
-    Tidies x_event_scroll() to deal with the various options in a neater way.
-
-commit 3aaba690a9360bfe9acd480acf5d549d05513f52
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Jan 6 12:18:06 2008 +0100
-
-    Dutch translation file reviewed for upcoming release.
-    
-    - Updated modified texts.
-    - Corrected minor typos near exclamation marks.
-    - Tried to conform to new Dutch spelling definitions.
-
-commit e800618afe70c93c3739d725172dfdba95386232
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 21:14:51 2008 -0500
-
-    Manually ran make update-po in all directories
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 6b36311d3be00d9b4901a876f5f4da4f892e3bce
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 5 22:10:31 2008 +0000
-
-    Remove extraneous printf where they duplicate log messages.
-
-commit d367e94f7d11ceb66c8ad95332052d2abf5ed09c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 4 13:33:15 2008 -0500
-
-    Added consistent border width to the in-use scrolled window
-    
-    Without this border width, switching between the in-use and library tabs
-    caused the scrolled windows to jump around.  Plus now the spacing is
-    consistent between the two tabs.
-
-commit 3fb40e7713e33a034632386a1446e3d94b25e6a5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 4 13:30:26 2008 -0500
-
-    Added refresh button to the in-use tab in the component selection dialog
-    
-    The refresh button refresh the in-use component list as well as the library
-    component list.  Before this patch, the refresh button was only in the
-    library tab and not accessible from the in-use tab.
-
-commit cf1ebffc8fc1634dc82cfd3a5e2748edadea4565
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 4 20:26:24 2008 +0000
-
-    Remove "Apply" button from the component selector.
-    
-    As the component list is de-selected when placement mode is cancelled,
-    the action of re-selecting a component to place switches back to this
-    mode without the need for an explit "Apply" button.
-
-commit 8333e806fef245815235d8f96a81fcd06b96dfa4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 4 20:23:22 2008 +0000
-
-    De-select list in the compselect dialog when placement is cancelled.
-    
-    By de-selecting the list, we ensure that the list state reflects the
-    component the user may currently place. It allows the same component
-    to be selected for again, without either using the "Apply" button,
-    or having to temporarily select a different component first.
-    
-    As a hook to de-select the list is added in o_redraw_cleanstates(), we
-    now avoid using that call as a shortcut to cleanup our last place
-    operation. It is still used if the last operation was not a component
-    placement.
-
-commit 3ae9c752b203ddc66b94c3f6cda352ee9306f13d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 4 20:06:24 2008 +0000
-
-    Add call to o_redraw_cleanstates() in the edit_{copy,mcopy,move} actions.
-    
-    Ensures that any existing action is appropriately cancelled before
-    starting the new action.
-
-commit 09c5d9fe73e0874b8b86b50c1ddc552254ee8661
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 4 18:08:22 2008 +0000
-
-    gschem: Remove extraneous debugging printf from g_hook.c
-
-commit 9aca06cdb70c3fc9595beb82713eedd90a7e1d16
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 4 12:57:58 2008 -0500
-
-    Added checks at the autogen.sh stage for missing m4 macros
-    
-    This commit adds a autoconf friendly m4 macro to check for undefined
-    macros (originally written by Peter Brett).  This macro is used in
-    configure.ac.in to check for a few troublesome macros (guile, nls,
-    gettext, intltool) that are usually missing because a required -dev
-    package is not installed/missing.
-
-commit ef9f1e110cc8d67a98310e9c689c5afe5363be25
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 19:15:14 2008 +0000
-
-    Prefix "geda-" to icon names to help namespace the icon theme.
-
-commit 1697a90e5465dde296199745991e76df8f68c3be
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 15:41:07 2008 +0000
-
-    Changed --with-xdgdir to --with-xdgdatadir for consistency
-
-commit ee47fc5fa6d418a54af62a55a78e508d95a0f913
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 02:46:14 2008 +0000
-
-    Change usage of ${datarootdir} to ${datadir} for autoconf compatibility.
-
-commit 208cb97b474b29efea9b76d8b9099ffe2bf446af
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 01:22:20 2008 +0000
-
-    Fix typo in --disable-update-desktop-database help text
-    
-    Also fixed closing comment which had "mime" instead of "desktop"
-
-commit 25557429d0ca8baaa921b4a2ce5f243f8df8dfc2
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Jan 1 16:14:09 2008 -0500
-
-    Updated gschem's autogen.sh to be identical libgeda's
-    
-    This commit also fixed up the build mechanism for gschem to recreate
-    configure.ac if configure.ac.in changes.  These changes are identical to
-    1a1cbb29f5d1ff118fb91235463e57a48ba81054
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit 0525e60123ab47ff62c9c30f4a3159ca75bbb456
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 30 20:15:19 2007 +0000
-
-    Add TAGS to some .gitignore files.
-
-commit ec101c69efe4cef25410fc6e8b9e43a3dbafd5f0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 30 20:15:19 2007 +0000
-
-    gschem: Use protected evaluator to run menu functions.
-
-commit 46f8e5671e1f22ed32d02ce7fd4f87f65f257c0f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 22:32:31 2007 -0500
-
-    Created POTFILES.skip (with intl/plural.c inside) to make distcheck happy
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 7c82238f3b2433607f8af6c873af99a642f05409
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:22:38 2007 -0500
-
-    Ran make update-po in all po directories in prep for a new release.
-
-commit ae6aeb9b656ead47d5cad5cbc7370cf59877eda7
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 29 09:00:36 2007 +0100
-
-    ignore deleted geda-gschem.pot in .gitignore
-
-commit e2f7ebf5903560592cd31168085068310c2a12fb
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 29 08:56:40 2007 +0100
-
-    gschem: updated german translations
-
-commit 15ff1a06a1352871426a9774a5037519e74759f6
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Dec 28 23:52:17 2007 -0500
-
-    Removed now machine generated file
-
-commit fdf272053572b5017fa342d91e7ed2ee559e1e2d
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Dec 28 23:36:02 2007 -0500
-
-    Fixed a minor newline typo
-
-commit 91a9b7a5391544f961c96d376186228a72410f67
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 03:12:06 2007 +0000
-
-    gschem: Fix copy-paste error handling line-style keyword in g_rc.c
-
-commit 91726e0964602983e8f896be86aa056afc96baff
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:41:14 2007 +0000
-
-    Change image embedding format to base64 encode the original files
-    
-    Previously, the format was a base64 encoding of serialised output from
-    the gdk_pixbuf used to store the image internally. Due to another bug
-    (now fixed) it is known that no official gEDA release could re-load
-    the embedded images that it saved. This hopefully provides some
-    justification as to why its OK to change the embedding format here.
-
-commit 1061b44d8af612e15b4179b71aac44c3959e09b9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:38:55 2007 +0000
-
-    gschem: Redraw after embedding or unembedding components
-
-commit cf5a697b83f1d53d6c9299a39d37d7d685f374eb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:37:18 2007 +0000
-
-    Add undo save for embed / unembed operations
-
-commit 5ad632442a79dcf8ddb0fd60cdd9a1c09acfc39a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:37:10 2007 +0000
-
-    Use gdk_pixbuf_copy(...), not gdk_pixbuf_rotate(.., 0) to copy pixbufs
-
-commit 70293381f5af9957afbd3e3fd0614d838738c7a7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:37:02 2007 +0000
-
-    Compute picture aspect ratio in double arithmetic, not integer.
-    
-    Avoids a nasty bug where coordinates would overflow when attempting to
-    grip-adjust the picture size due to this ratio being incorrect.
-
-commit c356556b29a991ec1f40b6be01e332fdfd663dac
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 00:48:09 2007 +0000
-
-    gschem: Fix erase drawing of objects
-    
-    Code which used o_..._erase() was not causing invalidations of the dirty
-    screen regions. Refactored to the code to use o_erase_single() instead,
-    and deleted the then unused o_..._erase() functions.
-
-commit 532aa7129dafe872d0993fed52d0dcba92e78399
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Fri Dec 28 22:04:26 2007 +0100
-
-    Updated the Dutch translation for gschem.
-
-commit b03232ea8fe9f911af8265c63b16425cf7ee70cb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 28 18:52:30 2007 +0000
-
-    Allow standard glob matches in the component selector's filter entry.
-
-commit f2101950cde757e1b51c8e6e70a5d764d8a7fa99
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 27 21:54:16 2007 +0000
-
-    gschem: Don't delete po/ChangeLog on make maintainer-clean
-    
-    Also removed rule to delete po/Makefile.in.in as this also exists
-    in the po/Makefile maintainer-clean rule.
-
-commit 127cff28ce52f41ce0972e8109049ecb78b09cc3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 23:09:28 2007 +0000
-
-    Add English (British) translations for libgeda and gschem
-
-commit b9f741e0906295754fa5e1301cf3079aee88ff55
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 05:12:40 2007 +0000
-
-    Remove intltool-*.in files during make maintainer-clean
-
-commit 76885149df80234cd91c42ca83752cfe5cd470f8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 06:11:31 2007 +0000
-
-    Add --with-xdgdir=... option to gschem and gattrib to match libgeda
-
-commit 5ee84ba2b7f534b11b7487c91413deaf393cb7ca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 22:55:34 2007 +0000
-
-    Add .desktop and icon files to gschem and gattrib
-    
-    Ship application icons and .desktop files for gschem and gattrib.
-    The gschem icons were contributed by Tomaz Solc, and the gattrib
-    icons created by Peter Clifton.
-    
-    Uses the intltool framework to translate the .desktop files.
-
-commit cd5263a602c8da768d3af7fdf9aca99847324d9e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 22 21:46:25 2007 +0000
-
-    gschem: Don't lose close confirmation dialog behind window
-    
-    It was possible to lose gschem's close confirmation dialog behind the
-    gschem main window, which could lead to data loss as it was then very
-    difficult to recover gracefully.
-
-commit b10a0ed7e99910a5d83565ede63a7ff9b11bc528
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 22 05:32:31 2007 +0000
-
-    Switch back to the page we were on after a saving changed pages.
-    
-    The changed page saving code switches pages with s_page_goto(), but the
-    page was not switched back. This lead to gschem being left editing a
-    different page after a cancelled close operation. No redraw or GUI
-    update was called, so the screen still showed the old page.
-
-commit ceacc48fd83d27953a9510374962f267c42e22e9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 22 05:32:28 2007 +0000
-
-    Use Save, not Save As.. after prompt when closing modified schematics
-    
-    If the schematic is changed at exit time, a prompt is given. the
-    "Save" option will save into the existing schematic file. If the
-    page is untitled, a file-chooser will be presented.This is in
-    keeping with other applications.
-
-commit f3de6fdfcd78b60d201e8786c78ea59bcc3f437e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 21 23:48:42 2007 +0000
-
-    gschem: Set default window icon to the "gschem" icon from the icon theme.
-    
-    When a "gschem" icon is found in the icon theme, this will be used as the
-    default application icon. For GTK versions < 2.6, some default sizes have
-    been picked at which to look for icons. GTK >= 2.6 will find the best icon
-    by name.
-
-commit f024b92045527776c0ddf86ac16de5dfb09837ad
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:44:15 2007 +0000
-
-    gschem: Don't use direct o_???_translate_world() funcs
-    
-    Use o_translate_world() instead of the direct functions, so we can
-    hide the internal implementation in libgeda.  Only a very small
-    performance hit.
-
-commit 52bb24c3868d14b12480037dc8f0b1450cc78d7f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:26:30 2007 +0000
-
-    libgeda: Make sure that Guile smobs are initialised.
-    
-    Rather than initialising them in gschem, which is a WTF.
-
-commit 0a5ba355c6719172ec1e6325108d5c0e716d1a2e
-Author: Robert Fitzsimons <robfitz@xxxxxxxx>
-Date:   Fri Dec 21 14:13:51 2007 +0000
-
-    gschem: Fix segfault when trying to write an image.
-    
-    The change to split out gschem TOPLEVEL variables, left some code
-    which tries to copy the TOPLEVEL variables from the old data
-    structure.  This caused a segfalut to happen on my system.
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit c290fcbcb34bd4adaee35a7ba4f655f88e4e252a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 17 23:11:47 2007 +0000
-
-    Check if bounds were found before invalidating drawn areas.
-    
-    If world_get_..._bounds() return zero (for example, in the case of
-    invisible attributes, or an empty schematic), no bound coordinates
-    are returned and we can't use them for further processing.
-
-commit 17998a71cc46a7eff3c738fcbd3851c7c8ea5930
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 17 23:11:44 2007 +0000
-
-    Fix bug #1851403: Crash after adding component while in move mode
-    
-    Ensure any operation already in progress when opening the component
-    selector is cancelled by calling o_redraw_cleanstates() first.
-    
-    Also call o_redraw_cleanstates() just before placing the component,
-    rather then directly freeing the objects in the complex place list.
-    Since the component selector isn't modal, the user may have switched
-    to a different action whilst the component selector was open.
-    
-    To avoid a similar crash, use o_redraw_cleanstates() upon closing the
-    component selector (if we are still in component placement mode).
-
-commit 83b4c4f7d62c8a0a6a52ec092c9535f81f82deac
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 17 23:03:53 2007 +0000
-
-    Fix memory leak in o_redraw_cleanstates() called during copy or place.
-    
-    For actions other than "MOVE", the objects in the complex_place_list
-    must be free'd as they are otherwise unowned.
-
-commit 95a9632f6b4970b578fe06647496f339ee5fa1f8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 17 23:03:49 2007 +0000
-
-    Fix i_callback_edit_copy_hotkey() to set new state after clearing old.
-    
-    o_redraw_cleanstates() needs to know the state it's clearing up.
-
-commit fb274693d442e16890582d7442f1d52d60e95755
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 16:53:25 2007 +0000
-
-    Add private function compselect_get_view() in x_compselect.c
-    
-    This function abstracts away an assumption we make that the tabs of the
-    GtkNotebook inside the component selection dialog are in a particular
-    order. Separating this into a function call which returns from an enum of
-    views will stop this ordering assumption spreading throughout the code.
-
-commit a5f930da86483f05c58a92ea5ae436b25e548486
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 13:42:55 2007 +0000
-
-    Remove unused functions o_{net,bus}_xorrubber()
-
-commit 79f8378827becac265f5cd3a3327ab79a2c8befc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 13:31:39 2007 +0000
-
-    Always redraw the screen using a blit from the backbuffer.
-    
-    The previous redraw scheme which would draw to the screen concurrently
-    with drawing to the backbuffer is proving to be a bottle-neck to recent
-    desktops using compositing. Every draw we make forces the X server to
-    compute a damaged region and re-composite the window.
-    
-    We now draw only into the backbuffer, and then invalidate the extents of
-    the region we've drawn.
-
-commit 33e12c8916f6b3bcd2d0df2246ef925e7b25b0dd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 13:31:38 2007 +0000
-
-    XOR draw to remove component ghost when cancelling component placement.
-    
-    Changes previous full-screen redraw when cancelling component placement
-    to use XOR drawing. Adds similar code to remove the ghost which exists
-    (usually underneath the dialog) when the component selection dialog is
-    closed. Don't rely on an expose event to re-paint it for us.
-
-commit ebf8dd81c398f39adcdbe4801d4a624ab1f73241
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 13:31:36 2007 +0000
-
-    Remove unused toplevel variable in o_grips_motion()
-
-commit 20f61e1aaebcf565e5d7dcf111b1c07cd8483fd1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 12:32:52 2007 +0000
-
-    Fix test of object_changing in o_grips_motion() to a g_return_if_fail()
-    
-    This test isn't hit unless o_grips_motion() is called before the
-    object_changing variable is set, and this would indicate a bug in
-    libgeda or its client. This could currently cause a segfault if it
-    were to happen, as the variable isn't initialised to NULL.
-    
-    Initialise object_changing to NULL, so any bug will always be caught.
-    
-    Tidy up indentation levels in o_grips_start() by returning early if we
-    don't have any object to manipulate, rather than wrapping most of the
-    funciton in an if (...) {...} test.
-
-commit 49bce50cbcfe83e7b53c4ffe76e4ca1edb333c38
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 11:37:51 2007 +0000
-
-    Remove un-needed box size computation in o_select_box_start()
-
-commit ec2269ef825369b75ab932f5395a2f64dae72847
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 11:19:48 2007 +0000
-
-    Fix stroke trail to be visible on light background color scheme
-
-commit a02bc0b501b7acbdf419ad306b46ec6a9522b61c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 15 11:12:47 2007 +0000
-
-    Erase stroke trails after an un-successful stroke recognition
-    
-    Previous behaviour was only to erase stroke trails after a
-    successful match.
-
-commit 47240f890c2282d19a1822c280de4fac18a50e66
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Dec 12 19:19:13 2007 +0000
-
-    gschem: Warn before overwriting files. [1846593]
-    
-    Also fixes a memory leak in the file save function.
-
-commit 405e7a33706d1e82d53c8d607aad11f9be8ad559
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:43 2007 +0000
-
-    General log handler improvements
-    
-    - Handle all messages above "debug" level
-    - Send all messages which are neither "message" nor "warning" levels
-      to console using default log handler
-    - Don't print to console from the gschem log handler
-
-commit 22b3fde6c98fc0219e54bf7edfcd8dcb33c5fe92
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:18 2007 +0000
-
-    gschem: Show log in pretty colours.
-
-commit 668ada22ec0f2a48adffcc62daacc6876108ee71
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Pass all log info to x_log_update_func
-    
-    In order to enable applications to do interesting things with log
-    messages, they need to have all of the log info (including severity
-    and log domain).
-
-commit e0dda20b072897d6c00fddeddf729cab283a2810
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    gschem: Show an informative message dialog when loading a file fails.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit e4a1fa8545e76b4ef82cc1253e65a844fa5fea88
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 13:32:15 2007 +0000
-
-    symbols: Nicer names for default libraries
-    
-    Use the features added in the component library backend rewrite to
-    give the default component libraries less cryptic names.
-    
-    Also, put them in a sensible order, and disable component library
-    sorting by default so that that order is preserved.
-
-commit 49059356b318abbfa2ce977e017859049fd40162
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 08:37:12 2007 +0000
-
-    gschem: Fix file loading
-    
-    commit 5cb63878f258bc836a9908b329608268c38cf64c inadvertently broken
-    file loading completely due to a logic error.
-
-commit 5cb63878f258bc836a9908b329608268c38cf64c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 01:29:16 2007 +0000
-
-    gschem: Fix new page behaviour
-    
-    Currently, gschem attempts to load "untitled-1.sch" from the cwd at
-    startup.  This is clearly wrong -- gschem should present a blank page
-    regardless of whether there is a page available on disk (consider
-    behaviour for "untitled-N.sch", N>1).
-    
-    This has the side effect of stopping gschem from trying to load backup
-    files for new pages (this is a good thing).
-
-commit 7228144a2195734300776a868ee88ee648a93df8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 00:29:15 2007 +0000
-
-    gschem: Fix "failed to set sensitivity" log spam
-    
-    A bad string in i_basic.c was making x_menus_sensitivity() spam error
-    messages to the log.  Altered the log message to make it easier to fix
-    in the future.
-    
-    Bug was introduced in commit 93199b2f50c31691722ed154fc42fd4c01a2dac5
-    by editing menu definitions in system-gschemrc without updating
-    i_basic.c.
-
-commit e97af7cb9cd0b79534cc2bf93e6e5dbf336e883a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Nov 28 14:58:15 2007 +0000
-
-    gschemdoc: Use xdg-open if available
-    
-    xdg-open is a tool from freedesktop.org which tries to use the user's
-    preferred application to open a file or URL.  This is a big
-    improvement over using a hardcoded list of applications to try.
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit 1abfd25bf917ee4e90ccdbbbe9921db6ff46c49f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Nov 24 08:34:13 2007 +0000
-
-    gschem: Fix NULL pointer risk in x_image.c [1802087]
-    
-    x_image_update_dialog_filename may attempt to deference a NULL
-    pointer.
-
-commit 74e7888ed1d23eac05d097f9d635d4a58a6576a3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Nov 23 21:43:49 2007 +0000
-
-    gschemdoc: Quote variables in case they contain spaces. [1792986]
-    
-    In the gschemdoc shell script, the variables $pdfreader and $browser
-    need quoting on lines 86, 113 and 128 (eg "${browser}"). Otherwise,
-    paths with spaces in, like "Program Files/Mozilla Firefox" commonly
-    used in Windows don't work.
-    
-    Based on anonymous SourceForge patch.
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit 0b0d1259692ffe36e3bbc617af78bbf8a1c8f716
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 21:34:57 2007 +0000
-
-    Improve object mirroring API in libgeda + gschem
-    
-    Implements the o_mirror_world() function which rotates any object, and
-    o_{glist,list}_mirror_world() functions which mirror lists of objects.
-    
-    Moves o_complex_mirror_world() from gschem into libgeda, and modifies
-    appropriate places in libgeda + gschem to use the new API. The old
-    gschem function o_mirror_world() becomes o_mirror_world_update(), a
-    convenience function calling o_glist_mirror_world() and ensuring all
-    necessary drawing and connection updates are made.
-    
-    Removes the o_complex_mirror_lowlevel() function which is made redundant
-    by the above changes.
-
-commit 21a8790b0540c374b00cfc45ad79ab474a4655b0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 21:34:35 2007 +0000
-
-    Improve object rotation API in libgeda + gschem
-    
-    Implements the o_rotate_world() function which rotates any object, and
-    o_{glist,list}_rotate_world() functions which rotate lists of objects.
-    
-    Moves o_complex_rotate_world() from gschem into libgeda, and modifies
-    appropriate places in libgeda + gschem to use this new API. The gschem
-    function o_rotate_90_world() is greatly simplified, becoming a
-    convenience function calling o_glist_rotate_world() and ensuring all
-    necessary drawing and connection updates are made. This function is
-    renamed o_rotate_world_update().
-    
-    Removes the o_{complex,text}_rotate_lowlevel() functions which are made
-    redundant with the above changes.
-
-commit 626f5c071a1dfea55e0214f6064b29908152d792
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 19:21:34 2007 +0000
-
-    Update the all drawing state SCREEN co-ordinates when zooming / panning.
-    
-    By updating all of the co-ordinate state when zooming / panning, a redraw
-    which includes a draw of any rubberbanded items will show them in the
-    correct location. This allows XOR drawing to continue without dropping
-    artifacts, or flashing up a "ghost" where the original element being moved
-    was. The explicit erase for the gost item when moving is no longer needed.
-
-commit b20fa7e79e364fc8b5188ce8f6d9d807d8185a44
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 19:19:20 2007 +0000
-
-    Rework o_drawbounding() to work without dropping artifacts in all modes.
-    
-    Simplifies both o_drawbounding(), and many functions which call it. No
-    special casing outside o_drawbounding() is needed for OUTLINE vs.
-    BOUNDINGBOX mode. Duplicated code has been reduced by making more use of
-    o_drawbounding() during copying / complex OBJECT placement.
-    
-    This commit fixes bugs in code paths which aren't normally exercised, as
-    the BOUNDINGBOX drawing mode isn't used any more. The code could be
-    simplified further by removing the BOUNDINGBOX mode if desired.
-
-commit c3e9ed7bd974e4c8f8adbd7d61b44a11ed0edfe1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 19:03:12 2007 +0000
-
-    Don't redraw the selected objects which are being manipulated by grips
-    
-    This saves the need to explicitly erase those object after every redraw.
-
-commit 0b34786f4d28b57854f5cc4851afa40ac44b4ac3
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Fri Nov 16 09:33:52 2007 -0200
-
-    MinGW does not have getuid nor getgid.
-
-commit bdd7ef7ee9047c3942b43c165396ebe48d31e95a
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 14:17:21 2007 -0200
-
-    Use g_path_is_absolute from GLIB instead of platform specific code.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit d715ba7dc3e02d77e671b9ab54b994379daefec5
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 13:34:40 2007 -0200
-
-    Tell git to ignore .exe files.
-
-commit f71ae05abf00acdafa0d5626304ca6baa9851a53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Nov 6 23:11:41 2007 +0000
-
-    Free gdk events obtained with gtk_event_get().
-    
-    gtk_event_put() copies an event given to it, so if we retrieve an event
-    and re-push it into the event queue, we still need to free our copy.
-
-commit 21f35c531c68e6ceafa09548e0de6040e1b1ce52
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Nov 6 23:11:39 2007 +0000
-
-    Refactor XOR drawing functions to avoid code duplication.
-
-commit 14da6cd4ad1e318b53f0d3b745667842a442bf66
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Nov 6 23:09:38 2007 +0000
-
-    Remove full screen redraw calls the rubberbanding and ..._end() functions.
-    
-    These calls aren't hit, as they were conditional on the inside_action flag
-    being 0, which should not be the case when these functions are called.
-    
-    Temporarily add g_assert() statments to verify inside_action != 0 to prove
-    these changes are appropriate. Assertions should be removed after testing.
-
-commit 5f08590dee1f13d4b771880d46f317e49253ccff
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Nov 2 18:27:56 2007 +0000
-
-    Remove the o_redraw_all_fast() function, as its not any faster now.
-    
-    Historically, o_redraw_all_fast() may have been used for faster drawing
-    in some cases, however the o_redraw_all() call is now equivelant, with
-    the addition of redrawing any "place" trails should gschem be mid-action.
-
-commit 23ead18086e59aab22945c37ff95f49e5747f277
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:50:39 2007 +0100
-
-    Remove the ATTRIB linked list in favour of a GList
-    
-    The ATTRIB.copied_to pointer is moved from the ATTRIB struct to reside in
-    the source OBJECT being copied.
-    
-    The ATTRIB *attached_to pointer of an attribute's text OBJECT is changed
-    to OBJECT *attached_to, pointing directly at the OBJECT to which that
-    attribute is attached. This avoids the need to traverse the ATTRIB list
-    and retrieve this pointer from the HEAD attribute node. (A HEAD node is
-    not used in the GList of ATTRIBs).
-    
-    The ATTRIB structure now only contains one element, OBJECT *object. This
-    points to the text OBJECT holding and displaying that attribute's
-    "name=value".
-
-commit 6f0ab03ed06d5cf0265a4f5bee516866efc16828
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:14:38 2007 +0100
-
-    Tidy the o_drawbounding() function to make it more readable.
-
-commit 1ec03e992136e524a24b6bd593a4e0de3ce0158f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:14:25 2007 +0100
-
-    Add function o_erase_list() to gschem, to undraw a GList of OBJECTS.
-
-commit 20df014334dbd0b62e2ec3515ff932726c2a29c9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 22:27:02 2007 +0100
-
-    Tidy o_redraw() to be more concise and have a tighter inner loop.
-
-commit ccd73092afbe22bdd6ef9f17318481dc32e50c8a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 22:05:22 2007 +0100
-
-    Avoid use of global_window_current in gschem/src/x_dialog.c: color_set()
-
-commit f914d437f4a76df5ba28e80e7dab6f55996a8b59
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 22:05:21 2007 +0100
-
-    Split out gschem specific TOPLEVEL variables into a new GSCHEM_TOPLEVEL
-    
-    GSCHEM_TOPLEVEL has a TOPLEVEL *toplevel pointer as its first elelment,
-    gschem uses this to call libgeda functions. (Almost) all gschem functions
-    now take the GSCHEM_TOPLEVEL as their first argument.
-
-commit 3da83d39b58ab2cb642b93b798ec31be0a725d81
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 20:08:26 2007 +0100
-
-    Move o_redraw_single() from libgeda to gschem
-
-commit fe4375d7185c0d5f7cc8186c1a214981fb6d0edd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 20:08:26 2007 +0100
-
-    Move libgeda's o_selection_unselect_list() into gschem.
-    
-    The function calls o_redraw_single(), so should be in gschem.
-    It is now named o_select_unselect_list().
-
-commit f217428f8248d6e8491d943256d30d5e11d808d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 19:42:01 2007 +0100
-
-    Remove OBJECT* linked list argument to o_drawbounding().
-    
-    All code is now passing GLists of objects to this function.
-
-commit 185958029cb58e26d37854c7580bef1b0869a7c9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 19:42:01 2007 +0100
-
-    Use GLists to store OBJECTs in the "object_buffers[]" paste buffers.
-    
-    Replaces o_list_copy_all_selection2() with o_glist_copy_all_to_glist().
-
-commit 38d3c48fd5a2ea57af5d772854393b39fd3b7e78
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 19:42:00 2007 +0100
-
-    Make attribute / text placing use a new attrib_place_list GList.
-
-commit d1e77cc6b87f6bd78cfc38630c292ac2c0f1f09b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:44:18 2007 +0100
-
-    Remove the redundant toplevel variables current_{show,visible}.
-    
-    These variables were previously used for an interactive method of attrib
-    placement which has since been removed. The current_visible variable was
-    also tested during non-attribute text placement, but to no effect.
-    
-    Whilst the file-format does technically allow invisible text, gschem's UI
-    pesesnts no way to achieve it, so removing this variable does no harm. The
-    ability to correctly load schematics with invisible text remains.
-
-commit aa91395ad62805ec4112d602406888a328c43519
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:36:19 2007 +0100
-
-    Remove the unused states for attrib placement: DRAWATTRIB and ENDATTRIB.
-    
-    Also removes the functions:
-      o_attrib_{start|end|rubberattrib} which are no longer used after this.
-
-commit 6a0fb625ba8dfd3d8dceb1b44055d4920e4b2658
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:35:53 2007 +0100
-
-    Remove the unused function o_erasebounding().
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit fc2b607031341f2f15b9c6f3d881e11895bdef50
-Author: Michele Petrecca <michelinux@xxxxxxxx>
-Date:   Tue Sep 11 22:49:03 2007 -0400
-
-    Updated Italian translation.
-
-commit e84c1d4ba2ad15e18f94346389d2671eb49d0cf5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Sep 11 22:37:55 2007 -0400
-
-    Fixed a whole bunch of gtk+ 2.4.x and misc issues building on an older box
-    
-    This is a fix for (Patch#) 1789290 libgeda-1.2.0 fprintf which supplied a
-    similar patch which fixes the issues in libgeda/src/s_clib.c and
-    libgeda/src/s_textbuffer.c.  In the future, all releases will be built with
-    gtk+ 2.4.x so that these sorts of problems do not get released.
-
-commit bdc4d9ce6522fca0bf5332cb9c5228e03861c079
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 14:14:44 2007 +0100
-
-    Avoid un-necessary usage of global_window_current in g_keys_execute()
-
-commit 8ca8f4d38990365a2455999ea7e649156d2f6f90
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 14:14:42 2007 +0100
-
-    Avoid use of global_window_current in gschem/src/x_compselect.c
-
-commit fcbfa052a9bafdd11092a99909dc587476ef8612
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 14:04:21 2007 +0100
-
-    Use a GObject constructor, not instance_init for compselect the dialog.
-    
-    Using a GObject constructor allows access to the construct time properties
-    of the object during initialisation, whereas at execution of the GType
-    instance_init function, those properties have not been set.
-
-commit 201b6aecab7f3f0f86b6d89479e7c229d4e6fb30
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 12:51:00 2007 +0100
-
-    Remove unused TOPLEVEL variables display_{width,height}
-
-commit 2be89fae224e359b5e349341da160cd19542d53d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:54:12 2007 +0100
-
-    Fix grid snapping in "Edit->Mirror Mode"
-    
-    Where the user selectes Edit->Mirror Mode, then clicks a point about which
-    to mirror, the snap operation on the mouse coordinates was not taking place
-    until after the mirror. Bug was introduced with noscreen changes.
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit f94d63a9a9f73e70b51c16b1e9f337bfa26b0de2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 23:26:47 2007 +0100
-
-    Use o_translate_world() to tidy up o_complex_translate_world()
-    
-    Removed o_complex_world_translate_toplevel(), and changed all useage of
-    o_complex_translate_world() for generic lists of objects to instead use
-    the new o_list_translate_world(). o_glist_translate_world() is also added.
-
-commit 36dc96b81aadceb9bb6e4c3d8b59939a2dc240e0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 23:24:27 2007 +0100
-
-    Rename o_complex_world_translate() to o_complex_translate_world()
-    
-    The function name now matches the pattern for other objects types.
-
-commit 4c7705297748e544ceeb1ac119ee44f7a72595c4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 15:26:31 2007 +0100
-
-    Remove unused function o_text_input().
-
-commit 7e04d192b78dc0821efda3326e6ec676db424472
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 00:17:05 2007 +0100
-
-    Remove o_complex_translate{2,_selection,_display_selection}()
-    
-    o_complex_translate{_selection,_display_selection}() were unused,
-    o_complex_translate2() simply wrapped o_complex_translate_display().
-
-commit 32dbd8536c17bcce9fbd9436fbb4c7efa32ee546
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 00:17:03 2007 +0100
-
-    Removed unnecessary angle parameter to o_complex_rotate_world(), fix bug.
-    
-    Fix rotation code to support angles other than 90 degrees. All current
-    users actually pass 90 degrees so this bug had no visible effect.
-
-commit 08ac872c975a587cf4125c6468c79c453661ee8f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 7 23:58:51 2007 +0100
-
-    Removed unused angle parameter to o_complex_rotate_lowlevel().
-
-commit c66d009979f49bd7ac8ba0641a6974be9e6a82d5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 7 23:57:38 2007 +0100
-
-    Removed unused angle parameter to o_text_rotate_world().
-    
-    From an old unmerged patch by Patrick Bernaud.
-
-commit 0529c40c453c6f1a958acc87a85974c7a3f871b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 7 00:20:29 2007 +0100
-
-    Avoid use of gtk_cell_renderer_stop_editing(), which is GTK 2.6+
-    
-    Instead emit the "editing-canceled" signal directly if necessary.
-
-commit 613dcf8d3c2cf0ef40278ff481cc44e68c98428a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:38:13 2007 +0100
-
-    Remove un-necessary variable re-initialisations in x_window_setup().
-    
-    The initialisations removed are the same as those in s_toplevel_new().
-
-commit bd101aa36356082f479e1bd4970ea93b01bbfa5d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:38:02 2007 +0100
-
-    Remove the un-needed TOPLEVEL variable: DONT_RECALC, and its usage.
-
-commit 5e9f49ed25bf87783207906daaf915714f43259c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:56 2007 +0100
-
-    Remove the redundant TOPLEVEL variable: DONT_RESIZE
-
-commit 863d3c63667dc1a106b21758f957d810ee6f5583
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:49 2007 +0100
-
-    Remove the redundant TOPLEVEL variable: DONT_DRAW_CONN
-
-commit bf3a364ed474ce6f5824a5f3fe94a3c17ce8bc28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:41 2007 +0100
-
-    Remove unused variables from the TOPLEVEL structure
-
-commit 96495b7a87701b2ea8d7eb6b4da206d6c169a85c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 13:46:57 2007 +0100
-
-    Fix memory corruption and possible segfault copying attributes
-    
-    If an object (but not all its attributes) was selected and copied, dangling
-    pointers were left in the un-copied attributes. A subsequent copy operation
-    containing those missed attributes would attempt to reattach them to the
-    copy of their parent. If this had been deleted in the mean time, memory
-    corruption and a possible segfault would occur.
-    
-    Consolidates the duplicated code which sets the ATTRIB property "copied_to"
-    into a helper function, o_attrib_list_copied_to(). This is also used to
-    clean up after copy operations.
-
-commit 5b2cb25e06604a8d31dff974f323477a78f02f46
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:48:32 2007 +0100
-
-    Move o_picture_set_pixbuf() from libgeda to gschem
-
-commit 07d5a095c313e031b939d45f89afcd1c0ca9bc97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:48:09 2007 +0100
-
-    Remove unused TOPLEVEL variable REMOVING_SEL.
-
-commit 70d8cc898e42b95a7ac463d9e879c959690fbd5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:47:22 2007 +0100
-
-    Remove unused dialog pointers from TOPLEVEL
-
-commit 9044d41a2305c97522bc70cfd7945f9d843482ae
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:41:28 2007 +0100
-
-    Removes the linking between TOPLEVELs, instead uses a GList in gschem
-
-commit d68adb7f7d91836a9fb4553e7cb7067c9ec2cd33
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:27 2007 +0100
-
-    Make use of o_select_unselect_all() to reduce code duplication in gschem
-
-commit bae595bf000b1d64ff83053cef76bce7839640b4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:27 2007 +0100
-
-    Remove o_unselect_all() function, instead use o_select_unselect_all()
-
-commit ebabf4fa5667d2ab74b5443367b83228fad4d6d0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:32:25 2007 +0100
-
-    Remove unused GType instance_init functions in gschem.
-
-commit 96ca8a9a2804176b689f4fe89393259ec109a6d9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 15:28:33 2007 +0100
-
-    Remove unused header file gschem/include/x_event.h
-
-commit 283c545e77ada97b7bee7834c34708a8053abe60
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 13:49:51 2007 +0100
-
-    x_compselect.c: Avoid using GValue to set properties where unnecessary
-
-commit 63ee20a80cd42e1af745f9a52cd1d632c1bc345a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:17:25 2007 +0100
-
-    Avoid using s_hierarchy_up() for traversal when we know where we're going.
-    
-    When trying to reach a specific parent we've come from before, we can use
-    s_page_goto() and avoid the search through the page list.
-
-commit a1b83a7ed4edf0d857a7bcbb98d551a5653f0476
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:17:19 2007 +0100
-
-    Fix indenting / whitespace in gschem/src/o_misc.c
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 2a79a231e0ced47d36636690614af348f47fe1d6
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 21:11:05 2007 -0400
-
-    Updated po/pot files by running make update-po
-
-commit b018b88a1f2a88d246af850a67a15be5b19825b2
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 20:54:49 2007 -0400
-
-    Fix for Bug# 1782032: Blank attibute name when attribute value starts with " "
-    
-    In order to fix this bug, we needed to validate the input attribute when:
-    1) input an attribute using the single attribute editor,
-    2) Add an attribute in the multi-attribute editor
-    3) Modify the name or value of an attribute in the multi-attribute editor
-    An attribute is not valid if the name or value are empty, name ends with a
-    space, and/or value starts with a space.  o_attrib_get_name_value does
-    this validation throughout gaf.
-
-commit 5a67f8a879c0f5bcfaa14daf6847064beebaf783
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 18:52:50 2007 -0400
-
-    Moved refresh button in component select dialog box
-    
-    The refresh button was along the very bottom of the component select
-    dialog box at the same level as Close, Apply, and OK.  The refresh
-    operation is not nearly as important or first class as these actions.
-    The refresh button was moved to the filter area.  Whether this change
-    sticks depends on what users think of the new location (I'm quite willing
-    to move it elsewhere if there is a better spot).
-
-commit f0c1bf37611b14dedcf1c4b45ac2319216f3293c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 18:21:24 2007 -0400
-
-    Added standard Control-z and Control-y keymappings for Undo and Redo
-
-commit 9f3b4e2520b8dc5adf3b77fd0dfbe1beec8398ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 23:03:54 2007 -0400
-
-    Another set of po files changed via make distcheck
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 19aacfff985ee9b478c4c50dfeeb1a8af5957c3a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:41:24 2007 -0400
-
-    Added undo-panzoom keyword to control if pan/zoom cmds are undoable
-    
-    The default is to still store the pan/zoom info when panning or zooming,
-    but now the user has a choice.
-
-commit 93199b2f50c31691722ed154fc42fd4c01a2dac5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:17:45 2007 -0400
-
-    Toplevel gschem menu tweaks
-    
-    Added ... to some entries that open up dialog boxes or other windows
-    Changed the ordering of Hotkeys and About in the Help menu
-    Removed obsolete comment about the help menu being right justified
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit e4b8aac64806c5f345d009ce725e16660d67cee4
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 14:21:53 2007 -0400
-
-    Added dist-license and use-license to the attribute-name keyword
-
-commit f90d327e8f415f35c94c686db846e8377bc0cd26
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 08:01:18 2007 -0400
-
-    Updated po files using make update-po
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit e04284b595dffa4b9931872ae33b76daede58dd7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 12 01:57:17 2007 +0100
-
-    Fix component selector filtering after using the "Refresh" button.
-
-commit 802a2fea15d9bd918bd2398ac06bf6ca9b2e75c4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 12 01:57:00 2007 +0100
-
-    Make updates faster when typing in the component selector filter.
-    
-    The filtering process doesn't happen until after the user pauses typing.
-    Reducing the update delay from 300ms to 200ms makes this feel better.
-
-commit fa2045b8e9cac268fe0c0b7af2028ea768c8e465
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 12 01:56:58 2007 +0100
-
-    Fix crash closing component selector window quickly after filtering.
-    
-    Typing in the filter box adds new update timeouts (300ms) with each
-    keystroke. If typing fast there could be more than one timer active at
-    once, however only the last added is cancelled when closing the dialog.
-    Timers which ran after the dialog closed could cause a segfault.
-    
-    We now cancel any pending timeout before adding a new one.
-
-commit 663e133ff0c0e153a8081b36404c0808222c6dcb
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Aug 10 22:00:58 2007 -0400
-
-    Added some net midpoint connections for testing purposes
-
-commit 703151a94b0eece6b24b3b18ce2465eeae068814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 9 12:36:17 2007 +0100
-
-    Remove old prototypes from various prototype.h where no function exists.
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit dbfe00a20de3f875e519ef60629b968977fc5db8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 22:52:18 2007 +0100
-
-    Avoid using s_hierarchy_up() for traversal when we know where we're going.
-    
-    When trying to reach a specific parent we've come from before, we can use
-    s_page_goto() and avoid the search through the page list.
-
-commit f1451161914a0ed0bb43123279906d82cb7d5b49
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 22:45:48 2007 +0100
-
-    Fix indenting / whitespace in gschem/src/o_misc.c
-
-commit 2ad315fc0badd16a9614d1107b22c973908893d5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:30:24 2007 +0100
-
-    Add page list "changed" signal handler to gschem's page manager dialog.
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit ee1b64a1ae07eb99eae5d63307e9fe23f9604662
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 01:32:27 2007 +0100
-
-    Add different select box behaviour for left-right and right-left drags
-    
-    Selections boxes dragged from...
-    
-      left to right: select elements entirely contained within the box.
-      right to left: select any element partially inside the box.
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit 512561395fb348a0fb71625edb4fe1ec96553c3f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:17:58 2007 +0100
-
-    Fix to allow automatic loading of untitled backup files
-
-commit 4cbb0c15240f649cfd69b120e7ed7ecd6c752896
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:16:22 2007 +0100
-
-    Fix drawing artifact when dragging a net / bus to zero length.
-    
-    The grip dragging code cancels editing if you resize to a zero length line
-    segment. Don't attempt to undraw the (zero length) rubberbanded line after
-    the coordinates have been invalidated.
-
-commit 8dc511639494940987582871d9f2efa09ecc2b37
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:07:30 2007 +0100
-
-    Refactor code in o_grips.c to reduce duplication
-    
-    Also make many whitespace fixes. The code paths should remain the same.
-
-commit 92ef419c46d5a41aa33b399d43ccde2ba2a99998
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:06:09 2007 +0100
-
-    Fix drawing of cues after moving a single line segment
-
-commit 0a7ab22a482a896818dff52fbf289856d76efc87
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Aug 1 22:58:05 2007 +0100
-
-    Alter grammar in gschem's "Unsaved changes" dialog box.
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit 30a86f3458c5a1562d97d33b06320647ed23132e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jul 28 01:18:44 2007 +0100
-
-    Change color in the multi-attrib dialog "value" entry when insensitive.
-    
-    Makes the "value" GtkTextView look the same as its neighbouring widgets
-    when insensitive. Unfortunately GtkTextView always appears to render using
-    the style's GTK_STATE_NORMAL text color. We save that initial value, and
-    copy across either the saved value, or the GTK_STATE_INSENSITIVE text color
-    when setting the widget sensitivities.
-    
-    NB: This is just a workaround for what appears to be a bug in GTK+.
-
-commit f8f5c1f05c9c2dfa1d2566a113e9c295049f7564
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jul 28 00:05:03 2007 +0100
-
-    Update the multi-attrib dialog after an undo operation.
-    
-    The undo mechanism replaces the page (and selection object), so we need to
-    poke the multi-attrib dialog after an undo operation for it to watch the
-    new page's selection object.
-
-commit ae2ddeb6839ae4e2c9e9c73272b0372c63810717
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jul 25 15:36:42 2007 +0100
-
-    Don't blank the add attribute boxes in the Multiattrib dialog.
-    
-    Leaving the text present after adding an attribute makes it is easier to
-    add the same attribute to multiple objects. Instead we add a "grab-focus"
-    signal handler to select the text box contents as we tab into it.
-
-commit 31f65059cf1ce5be9b8a0987d4538fed075a6805
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jul 25 02:09:15 2007 +0100
-
-    Fixed two calls to free() where g_free() should have been used.
-    
-    Updated Doxygen comments to note where memory should be freed with g_free()
-    rather than free(). Commented three instances where free() is correct.
-
-commit 852786d7dc90eebdc677e5d2af916d577d5f3aaa
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 17:12:12 2007 +0100
-
-    Clamp page canvas size in the preview to the size of the page contents
-    
-    Ensures the user can't zoom way off the page contents being previewed.
-
-commit 41ce0eb61b4b91d407d788a7ae1eb823d60fbdfd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 17:12:08 2007 +0100
-
-    Alter panning code to center the page in the viewport if under-zoomed
-    
-    Centering is independant in the X and Y directions. When the viewport is
-    larger than the page canvas in a particular direction the page is
-    re-centered in that direction. This is necessary for a nice preview.
-    Also change preview widget code to remove the A_PAN_IGNORE_BORDERS flag
-    from zoom operations, which is no-longer needed with the above changes.
-
-commit 42034b5e81a0a4d40254aa2ef557083531d38291
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 14:32:05 2007 +0100
-
-    Stop scroll events wraping the pointer when the preview widget is inavtive
-    
-    Also corrects the prototype of the scroll event handler to return gboolean
-
-commit 3345932d7fcaad0570ebd793f88253696a014895
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 14:15:35 2007 +0100
-
-    Clear the preview  when no valid file is selected in the file chooser
-    
-    Previously the preview widget would continue to display the last
-    schematic or symbol which had been selected.
-
-commit 867525cce75bcf9996992db1681f506f4fcdc84f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 14:14:37 2007 +0100
-
-    Clear preview and stop placing components when no valid symbol is selected.
-    
-    Previously the component selector preview would continue to display the
-    last symbol which selected, and component placement could continue.
-
-commit c217b2b5160867c85ef89d53c5035adfc430da09
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 14:02:12 2007 +0100
-
-    Fix some memory leaks when placing components.
-    
-    In several places the complex_place_list glist was freed,
-    but its contents were not.
-
-commit ac28aaa56a684a07fe3ee5590a31baf3fa8adbe7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 05:33:42 2007 +0100
-
-    Save/restore which component selector source tab was last used.
-
-commit 7f54d6e4996f15d14781a49b3400ce89a39a60dd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 05:10:27 2007 +0100
-
-    Make the preview widget resizable
-    
-    Added handler for the configure event to resize the backing store and
-    re-zoom the preview. Added the A_PAN_IGNORE_BORDERS flag to the zoom
-    extents calls - giving a nice centered preview.
-    
-    Altered component selector dialog's alignment widget to allow the preview
-    widget to expand to fill the available space.
-
-commit 50a6da87868ce9d0f3cc788a8a9918fd9210a536
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 04:52:23 2007 +0100
-
-    Fix mouse initiated zoom / panning operations on the preview widget
-    
-    The preview widget isn't called with a filename for previewing component
-    sources, so the test for filename != NULL in the mouse event handlers
-    stopped those callbacks working.
-    
-    Also added a scroll event handler to allow zooming with the mouse wheel.
-
-commit 8ad905e0d55b7ed60b3f5c63cf6056ddccee7a8b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 22 04:49:35 2007 +0100
-
-    Fix zoom extents to work correctly first time. Closes bug #1699959.
-    
-    A page's visible area is intialised to be the same size as the canvas
-    extents. The zoom extents code scales based on this visible area, however
-    this initialisation isn't correct, since the aspect ratio of the screen
-    doesn't always match the canvas extents. The first call to zoom extents
-    would fix this by correctly setting the visible area.
-    
-    By making the zoom extents code work from the screen aspect ratio (scaled
-    to world coordinates), we can zoom to the visible extents in one shot.
-    
-    Also fixed some /2 operations, which for doubles should be /2.0
-
-commit e4f7225254cb5168131d31347a8de277181f41ea
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jul 21 19:16:50 2007 +0100
-
-    Save/restore geometry of the GtkHPaned in the component selection dialog.
-
-commit a139f2ed1ec50ad2a0fec4e91c7e51dd690d983a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jul 21 19:16:24 2007 +0100
-
-    Extend GschemDialog to allow hooking to save/restore internal geometry
-    
-    GschemDialog now emits "geometry-save" and "geometry-restore" signals
-    which instances can connect to. Subclasses may over-ride and chain the
-    "geometry_save" and "geometry_restore" class members. These signal handlers
-    are passed a pointer to the GKeyFile and a text string identifying the
-    group it expects data to be saved under.
-    
-    The code relies on features only available in GLIB 2.6 onwards. When using
-    this functionality the code must be surrounded with an appropriate test as
-    the class functions are not defined when compiling against an older GLIB.
-
-commit 91ffb796f41ca6ee7a5ed1063917f7bb3fd03464
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jul 21 19:16:09 2007 +0100
-
-    Separate the list and preview with a GtkHPaned in the compselect dialog.
-
-commit 5e47599e07b5bed9d24b5c295db7a5e05f7c4624
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jul 20 17:36:39 2007 +0100
-
-    Added missing test to allow pins to work with the multiattrib dialog
-
-commit 6287df1357bdfc0188f5fa60df5d88f5fc5e4b40
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jul 20 14:15:10 2007 +0100
-
-    Make the multi-attribute editor non-modal
-    
-    This implementation only supports editing when a single object which can
-    have attributes is selected. Work is required to act more intelligently if
-    an attribute its-self is selected, and with multiple selections.
-
-commit 1dfb3a4b9907ff81552de57080d2897ab40e512c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:13:03 2007 +0100
-
-    Make the Escape key cancel editing in the multiattrib dialog.
-    
-    The previous behaviour where it would quit editing but save the changes is
-    counter-intuitive for the user.
-
-commit c06b6684296a2ec6765036b28e8c48a50c2b8928
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:13:00 2007 +0100
-
-    Remove workaround for an unknown property with GTK 2.2 in x_multiattrib.c
-
-commit cb9c4ee19ca58158308a234782fdad6fb60257da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:09:56 2007 +0100
-
-    Change selection code to use a generic GedaList typecast to SELECTION.
-    
-    GedaList allows various parts of the program to keep track of changes
-    to the selection via callbacks attached to the GedaList object.
-
-commit b5caa78a6dd9227d328397cb77ac4b0731c7d1c9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 15 12:55:54 2007 +0100
-
-    Remove unused function e_gtk_button_new_with_icon() from x_pagesel.c
-
-commit 5dfe42146dfee7dd0909cda7615279228bc09d70
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jul 15 12:55:47 2007 +0100
-
-    Split out update(s) when notify::toplevel on GschemDialog is recieved.
-    
-    We need to perform various setup actions when the toplevel property of our
-    parent GschemDialog is set. We need to make this a specific function, as
-    the current method of just calling pagesel_update isn't correct for all
-    future cases.
-
-commit cd7db8026b00934afc6acc1ff8f5467021194287
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jun 24 04:21:39 2007 +0100
-
-    Fixed memory leak placing components.
-    
-    When placing components we free'd the complex_place_list without removing
-    the objects it pointed to. The code now uses s_delete_object_glist(..)
-    rather than g_list_free(..) to free the complex_place list and its objects.
-
-commit 9cc487143fe371181bc0fea41e94c03a54b776f9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Jul 10 17:32:59 2007 +0200
-
-    gschem: updated german translation
-
-commit b41713e02347002424ca8c18aaa0f9f6a4a6e660
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Mon Jul 9 19:33:45 2007 +0200
-
-    Updated spanish translation.
-
-commit ff036cbb89336c48106b064af499b6e841c7d8a5
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Mon Jul 9 18:36:36 2007 +0200
-
-    Disable rotating while copying, & fix hitting rotate hotkey/menu while moving.
-    
-    Rotating while copying is still not supported, so disable it.
-    Fix behaviour when hitting the rotate hotkey, or select the edit->rotate menu
-    while moving.
-    Previously the move action was cancelled and then the selection was rotated.
-    Now, the objects being moved are rotated, and the move action continues.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit e653983c3177bdadfecb56f49662f5cb39c5749b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:17:28 2007 -0400
-
-    Updated all pot/po files (via make update-po).
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit 3cf1cca33ed2e567b959ad8486cad0d4cdbb47e9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 13:55:38 2007 -0400
-
-    Added some missing code to controlling junction color (more for #1746675)
-
-commit 4f245d7023eec872e5dd484530dff9a77ff77dfc
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 19:47:14 2007 +0200
-
-    Set the focus to the filter entry only if it is visible.
-    
-    In the compselect window, focus can be set to the filter entry only
-    if it is visible (i.e.: its ancestor is the current tab). Otherwise,
-    GTK is confused.
-
-commit 29f4868bb8ac570445da493c69afb91aafcf69d0
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jul 7 01:03:41 2007 +0200
-
-    Disable rotating using middle mouse button while copying.
-    
-    Rotating while copying is still not supported, so it should be disabled.
-    Now middle mouse button does nothing while copying.
-
-commit f30cf1a2fd45898b62e236116a84059bd0df9544
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jul 7 00:55:05 2007 +0200
-
-    Fixed drawing bug when attribute autoplacing is enabled.
-    
-    When rotating while placing a new component, the refdes was drawn
-    wrongly, and it was shown fixed in the screen despite the component
-    being moved.
-    This was due to attribute autoplacing function was called before drawing
-    the component. This function erases the old text (which wasn't drawn), thus
-    drawing the text in the screen permanently.
-    This fix disables all drawing functions when calling autoplacing function,
-    and renables them afterwards.
-
-commit ecf159040422c5625de6b615c1070b7a1d58c511
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jul 7 00:41:05 2007 +0200
-
-    Fixed drawing bug when using attribute autoplacing.
-    
-    When placing a new component, if attribute autoplacing was enabled,
-    the refdes was drawn wrongly, and it was shown fixed in the screen despite
-    the component being moved.
-    This was due to attribute autoplacing function was called before drawing
-    the component. This function erases the old text (which wasn't drawn), thus
-    drawing the text in the screen permanently.
-    This fix disables all drawing functions when calling autoplacing function,
-    and renables them afterwards.
-
-commit 5dc09fc232bf36dc219e86e78bad92631d2c244a
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jul 7 00:35:07 2007 +0200
-
-    Moved default attrib positions out of system-gschemrc.
-    
-    All default attribute positions, used for attribute autoplacing, have been
-    moved into its own file, scheme/default-attrib-positions.scm .
-    The above file is loaded in system-gschemrc.
-
-commit 411ddc16df3bf9388d80107503c165a8c88304b1
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Fri Jul 6 23:38:31 2007 +0200
-
-    Consider line's width when calculing net directions.
-    
-    In text autoplacing function get-net-connection-sides, consider line's
-    width when guessing net directions.
-
-commit 68b495e6b75b802a9c77889c223d680e8359ce91
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Fri Jul 6 23:13:03 2007 +0200
-
-    Display a warning message if can't guess net direction.
-    
-    In attribute autoplacing, display a warning message if net direction can't
-    be guessed.
-
-commit 1361831fc9e44bcc719f73d68f4d5b119963bb57
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Thu Jul 5 09:18:48 2007 -0400
-
-    Possible fix for bug #1748079: CRASH: gschem segfault on file save or open
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit a680faf8e3121c2b999bc5168a2910fb83f11ffc
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:57:07 2007 -0400
-
-    Updated all pot/po files (via make update-po).  Added new menus to rcstrings.c.
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit dbf600e34e2284fe1ec59242d541334bc27d3d49
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 16:51:32 2007 -0400
-
-    Implemented the ability to change the color of junctions (code for #1746675).
-    
-    The filled circles (at the junction of nets) and filled boxes (at the
-    end of unconnected nets) were the same color and it was hard to tell the
-    difference from a distance.  This patch addes (junction-color ...) rc
-    keyword and allows the user to change the junction color.  The default
-    color for the dark color scheme is yellow and the default color for the
-    light color scheme is purple.
-
-commit ca4571b1a6a49c97feb8fc6cc8cb926acc287ece
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    libgeda: s_clib_toplevel_get_symbol_names() is poorly named.
-    
-    s_clib_toplevel_get_symbol_names() returns symbols, not names of
-    symbols, so rename it to s_clib_toplevel_get_symbols().
-
-commit 96f9c87ef4063b52dd4d13f51958b916ba4e5939
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    gschem: Add "In Use" view to component selector.
-    
-    The "In Use" view shows symbols which are instantiated in open
-    schematics, for ease of adding more symbols similar to the ones
-    already present.  This is particularly useful for frequently-used
-    symbols such as resistors and capacitors.
-
-commit b1733d4d69d3a2e6fcb64e91a26dab2768f4e171
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    gschem: Add a "Refresh" button to component selector.
-    
-    In order to update the symbol library, a "Refresh" button is needed
-    (because we don't do it automatically any more).
-
-commit cb6e4e5e98ed45427f60d718f7dbb5d5439eecef
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    gschem: Don't use generic response IDs for compselect actions.
-    
-    The component selector "OK" and "Apply" buttons aren't actually "OK"
-    and "Apply" actions, so they shouldn't use those response IDs -- it's
-    confusing.
-    
-    This patch adds special response IDs for these actions. This is a
-    preparation for using "proper" Place and Hide icons & text.
-
-commit 7c6419f49cb211ce74e7a8787148d2fd624482e7
-Author: Alex Precosky <precosky@xxxxxxx>
-Date:   Sun Jul 1 16:55:13 2007 -0700
-
-    gschem: Fix a race condition with mouse wheel scroll events (1740327)
-    
-    If more than one mouse wheel scroll events are received into the event
-    queue before the first one can be processed, then the program was
-    zooming in to the wrong location.  This is because the mouse moved
-    event handler, which is triggered by a call to warp the cursor in the
-    scroll event handler, must run to update the mouse postion global
-    variables that the scroll event handler needs.
-
-commit 62b214780e34aea9b56993f2b699cb78d50d4769
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Jul 4 17:35:06 2007 +0200
-
-    Set default button for single attribute edit dialog
-    
-    Fixed wrong setting of the default button in the dialog.
-    Added the set property to the value entry.
-                             [Suggested by Kai-Martin Knaak]
-
-commit b034307ae05d909a726c09d4eb02a5eed6f401ea
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 18:08:04 2007 +0100
-
-    gschem: Support preview of symbols from all library types.
-
-commit 907857c70c12707f00696d0688eb8392ac1e9294
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 18:08:00 2007 +0100
-
-    gschem: Preview data from a buffer.
-    
-    Add the ability to parse & preview a gEDA schematic or symbol from a
-    character buffer.
-
-commit c144221daf8ef133f39e14c76447a1b556c54853
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 15:50:31 2007 +0100
-
-    libgeda: Add fine-grained control over f_open() behaviour.
-    
-    Add a function f_open_flags() which takes an extra argument which is a
-    set of flags controlling actions taking while opening a file. f_open()
-    wraps this with a default set of flags.
-    
-    Coincidentally, this also leads to a trivial fix for the file open
-    dialog backup-message bug.
-
-commit dc88c870d8d9ba66855f03fd3bc678d8b9f34cf2
-Author: Ivan Stankovic <ivan.stankovic@xxxxxx>
-Date:   Wed Jun 27 19:47:46 2007 +0100
-
-    This patch removes most of the unused code from gschem.
-
-commit 2a0abb503110a7b7cfe5739f26bc1e4c7d939fff
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jun 27 16:47:20 2007 +0100
-
-    Correct some typos in gschem default texts.
-
-commit 2b8cc26ddbb4af4db653d913c49f6d365dc89df9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Jun 26 22:25:01 2007 +0200
-
-    updated german translation
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit daa5d16aee1f0ec58cced5ca835dcb4f53339339
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 21:23:32 2007 -0400
-
-    Updated Makefile.am to not include VOCABULARY file.
-
-commit 0ad58a2c8e82ff00b71c600d54cf76bc4860e24a
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:57:16 2007 -0400
-
-    Removed ancient VOCABULARY file.
-    
-    This file has been superceeded by the glossary that is in the wiki.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit 1c76ee9d84ea4fcdc924d992ecc3a828887eff4f
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:17:03 2007 -0400
-
-    Removed all trace of libgd usage and removed some old ps printing routines.
-    
-    All trace of libgd and HAS_LIBGD has been removed.  Some obsoleted and
-
-commit 868d31c36736b1ceebdd9a7cea6d12d12ecf89a9
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 15:46:46 2007 -0400
-
-    Removed libgd and indent tests from configure scripts.
-    
-    indent is no longer use since noweb was removed a long time ago.
-    libgd is no longer used since libgeda/gschem uses mage export support in gdk.
-
-commit cb63bf6506caf145d44f454734a1f4d712fa9216
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 15:07:58 2007 -0400
-
-    Compile fix to the NL translation.
-
-commit cdd6b8669301baafb118ef3d76bb54a2f99a077b
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sat Jun 23 23:47:06 2007 +0200
-
-    Update gschem Dutch translations.
-
-commit df71a28480510dd3c82eb1e551325f17ae16f958
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jun 24 06:37:21 2007 +0100
-
-    Always draw text placeholder box in correct place (#1740620).
-    
-    When dragging text in "fast" mode (where the text is replaced by a
-    bounding box), the box was drawn in the wrong place if the text isn't
-    anchored in the usual bottom-left position.
-
-commit adb2dc9eedb72dc180e081ded2fc1ed20dde0a23
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jun 24 03:48:30 2007 +0100
-
-    Fix bug #1741452, segfault on "Include component as individual objects"
-    
-    Inserted a missing line to set the complex place list to NULL after freeing
-    its contents.
-
-commit 214166747c3146cd21af1e346c8ad1b1351dcde8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 20:07:36 2007 +0100
-
-    Revert po file changes in edff766e8b15c311505810241528026f722e30b6.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit 67038ed9bece3a1317757b58a982ed29af2831c6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 13:50:57 2007 +0100
-
-    Don't cache symbol pointers in persistent structures.
-    
-    Several persistent structures, including TOPLEVEL and OBJECT, cache
-    pointers to CLibSymbols.  This is bad, because it makes removing
-    component sources or rescanning them likely to cause stale pointers
-    around the place.
-    
-    With fast hashtable-cached searches in place, this is no longer
-    necessary.  This patch ensures that only symbol names are stored
-    persistently.
-    
-    This patch also enables descending into embedded symbols using a
-    component library lookup on the embedded symbol's name.
-
-commit 1c226a4ebe5f297460cccf8568b7d7b7b2179253
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 13:32:45 2007 +0100
-
-    Factor out TOPLEVEL.current_clib.
-
-commit fe621022acfbe69688878b70d4c40883f8f2a3df
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 22 08:34:33 2007 +0100
-
-    Add s_clib_get_symbol_by_name().
-    
-    Add a new function which returns the first exact match for a given
-    symbol name, printing log messages if either there are more than one
-    match or no matches are found at all.  Also update
-    s_clib_symbol_get_data_by_name() to use new function and remove
-    o_complex_add_by_name() as more or less redundant.
-
-commit 01fd87d78aa26d3c29b4141878b5f48edab264ec
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:05:53 2007 +0100
-
-    Make comp. library search faster and more flexible
-    
-    Replace s_clib_glob() with s_clib_search(), which can operate in
-    either exact matching or glob matching mode.  Use a hashtable to cache
-    the results of library searches. The hashtable is cleared every time
-    it is invalidated (for instance if a component source is added or
-    removed, or the component sources are rescanned).
-
-commit 9dde0233ebed32065511b567445f9f34d4b3bea1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:06:56 2007 +0100
-
-    Refactor system RC files
-    
-    Moved system-gafrc into the libgeda package, where it belongs.
-    Removed all environment and configure substitutions.  Created separate
-    font and component library setup scripts in the symbols package,
-    automatically loaded by system-gafrc if they exist.  Updated
-    system-gschemrc to use new infrastructure.
-
-commit 7067e71ef1558ceb94772a703cde1463233460fe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Jun 13 16:59:29 2007 +0000
-
-    Removed code handling escape key presses in dialogs.
-    
-    Since GTK takes care of escape key presses, this code
-    is not needed. Applied patch from Ivan Stankovic.
-    Fixes bug #1710818 for gschem. Thanks.
-
-commit 2a2fa60eee536f48cc27c16f2577106e78250ed6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 9 20:30:14 2007 +0000
-
-    Fix gschem's sort-component-library option
-    
-    In the last release, the sort-component-library gschemrc option did
-    nothing.  This patch corrects the issue, by adding an argument to
-    s_clib_get_sources which enables or disables sorting the list of
-    component sources.
-
-commit 1b18f93b85cc01a9d091795f94f4559372d165ad
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 19:09:13 2007 +0000
-
-    Load the GTK missing image pixmap if a pixmap is not found.
-    
-    Improve fix for bug #171449, loading the GTK missing image pixmap if
-    a pixmap is not found.
-
-commit 378040ccd23339eedffd06e9d84867ca719fa659
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:42:34 2007 +0000
-
-    Added check for missing pixmap file.
-    
-    Fix for bug #1714493. If a pixmap file doesn't exist, write
-    a message to the log window. Thanks to the anonymous submitter.
-
-commit eed0be648afd9bc421a8d0059de621df778c5fbe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:09:36 2007 +0000
-
-    Avoid writting '\r' to files on MinGW.
-    
-    Applied patch #1733826 from Cesar Strauss. Thanks.
-    When using the "w" mode in fopen, MinGW translates LF into CR-LF.
-    This creates havoc when reading the same file again, when sharing
-    schematics files with other systems, and when placing them in a VCS.
-    
-    This can be avoided by using the "wb" mode. The "b" is ignored on
-    all POSIX conforming systems, according to these sources:
-    
-    http://www.die.net/doc/linux/man/man3/fopen.3.html
-    http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
-    
-    There are other ways, however. Adding
-    
-    #include <fcntl.h>
-    int _fmode = _O_BINARY;
-    
-    on some source file should work as well. Another way is linking
-    against the MinGW supplied binmode.o, which does exactly that.
-
-commit 21d3dbc1ef88701b60aacc700d2cc9fec1a88f8d
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jun 9 15:14:07 2007 +0000
-
-    Applied a few patches from Ivan Stankovic
-
-commit 419b4d152b0b2ae6546052ccb8d87ef26fa83752
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 14:59:01 2007 +0000
-
-    Added EPS support.
-    
-    Applied patch #1713747 (with minor tweaks) from Wojciech Kazubski
-    adding support for EPS when writing an image. Thanks.
-
-commit 4e55d9355a69f2005b9afc2596526a133caf8524
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 9 14:54:33 2007 +0000
-
-    Added call to g_thread_init() in Gschem and Gattrib.
-    
-    Gschem and Gattrib aren't threaded, but some of GTK's file chooser
-    backends uses threading so we need to call g_thread_init().
-
-commit ef0ca7042e49ed3f26ec61c71085378ab04fef6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jun 9 14:44:27 2007 +0000
-
-    Applied patch from Ivan Stankovic that displays entered characters in
-    the status bar
-
-commit 251771e1f9acab07a3721d5828873464f56fa347
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 12:59:32 2007 +0000
-
-    Changed nil by #f.
-    
-    Nil is no longer supported by guile 1.8. Applied patch from
-    Peter Clifton changing nil by #f. Thanks.
-    Note there are still some files using nil.
-
-commit bca8aacb0b3dd8f03851fa7c50d287b458eb045e
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 12:17:28 2007 +0000
-
-    Set alternative button order after buttons are created.
-    
-    Apply patch from Cesar Strauss, moving the
-    gtk_dialog_set_alternative_button_order call after buttons are
-    created, in the component selector window. Thanks.
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-commit 66fb25858496cdf33e1456b835d68a16bb7ccdcd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 2 16:33:34 2007 +0000
-
-    Improve Guile configure checks & remove 1.4 compat. code.
-    
-    Removes compatibility code for Guile 1.4, and makes configure scripts
-    check for actual Guile version.
-
-commit 14fb224ec0f09b0b95a083abcaf3f5eaaf41b74f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jun 2 01:02:42 2007 +0000
-
-    Fixed a behavior where you would cancel (via right mouse button or escape)
-    the placing of components, but gschem would still be in the add component
-    mode (and clicks would still place components).
-
-commit dcb48381f14f16e8786f70c4dae231f170539aac
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu May 31 21:29:47 2007 +0000
-
-    Cleanup code for status bar messages.
-    
-    Applied patch from Ivan Stankovic cleaning up code used for displaying
-    status bar messages.
-
-commit a50de86a4c0f45a1202c3fac77ba1b712de29330
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Wed May 30 04:11:07 2007 +0000
-
-    Use "=" instead of "==" as an operator for test as the former
-    is portable and the latter is a bash-ism
-
-commit 103524d50813c8a9490c9f4ebba1b72a3e4f36b5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed May 30 00:10:22 2007 +0000
-
-    Committing src/gschem_dialog.c and include/gschem_dialog.h
-    which were missed in the last commit.
-
-commit 98e738a12c2351a2613f3fef9ff0400df62247c3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue May 29 23:06:04 2007 +0000
-
-    Applied patch by Ivan Stankovic making dialogs within gschem save
-    their position and size on exit and restore it on opening.
-    Geometry is saved to {$HOME}/.gEDA/gschem-dialog-geometry
-    
-    Dialogs inherit this functionality by using, or deriving from the
-    new GschemDialog class (A GtkDialog subclass).
-
-commit 4eca6e40036bdeb68e15588180636c14c56fd71d
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:42:19 2007 +0000
-
-    Implement new component library system in gschem.
-    
-    A new component library model was introduced into libgeda to
-    allow gschem etc. to work well with database systems.  This
-    patch updates gschem to use the new library system.  Most code
-    dealing with creating, updating and (un)embedding symbols is
-    affected.  However, this patch should not introduce any
-    changes for the end-user.
-
-commit b0810d4d71e27bc32e0e0b1e903d230d97ca9ad6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat May 26 19:21:28 2007 +0000
-
-    Help menu updates.
-    
-    Change help menu now that all documentation is in the wiki.
-
-
-#GCL#
diff --git a/gschem/Makefile.am b/gschem/Makefile.am
index 9ed6048..f309277 100644
--- a/gschem/Makefile.am
+++ b/gschem/Makefile.am
@@ -2,7 +2,12 @@ SUBDIRS = \
 	po bitmap data docs examples include lib scheme scripts \
 	src tests
 
-EXTRA_DIST = BUGS ChangeLog-1.0
+EXTRA_DIST = BUGS ChangeLog ChangeLog-1.0
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 maintainer-clean-local:
 	-rm -rf po/*.sed po/*.header po/*.sin po/*.template po/Rules-quot
diff --git a/gschem/scripts/.gitignore b/gschem/scripts/.gitignore
index 826a324..f4ff245 100644
--- a/gschem/scripts/.gitignore
+++ b/gschem/scripts/.gitignore
@@ -3,3 +3,4 @@ Makefile.in
 config.sh
 gschemdoc
 *~
+ChangeLog
diff --git a/gschem/scripts/ChangeLog b/gschem/scripts/ChangeLog
deleted file mode 100644
index 61b3185..0000000
--- a/gschem/scripts/ChangeLog
+++ /dev/null
@@ -1,137 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit e97af7cb9cd0b79534cc2bf93e6e5dbf336e883a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Nov 28 14:58:15 2007 +0000
-
-    gschemdoc: Use xdg-open if available
-    
-    xdg-open is a tool from freedesktop.org which tries to use the user's
-    preferred application to open a file or URL.  This is a big
-    improvement over using a hardcoded list of applications to try.
-
-commit 74e7888ed1d23eac05d097f9d635d4a58a6576a3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Nov 23 21:43:49 2007 +0000
-
-    gschemdoc: Quote variables in case they contain spaces. [1792986]
-    
-    In the gschemdoc shell script, the variables $pdfreader and $browser
-    need quoting on lines 86, 113 and 128 (eg "${browser}"). Otherwise,
-    paths with spaces in, like "Program Files/Mozilla Firefox" commonly
-    used in Windows don't work.
-    
-    Based on anonymous SourceForge patch.
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-
-#GCL#
diff --git a/gschem/scripts/Makefile.am b/gschem/scripts/Makefile.am
index 2dd99d1..ab4b3e4 100644
--- a/gschem/scripts/Makefile.am
+++ b/gschem/scripts/Makefile.am
@@ -5,6 +5,11 @@ bin_SCRIPTS = gschemdoc
 EXTRA_DIST = ChangeLog ChangeLog-1.0 makeallimages \
              gschemdoc.sh makeimages print.scm image.scm
 
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
+
 gschemdoc: gschemdoc.sh
 	sed -e 's:[@]DOCDIR@:$(docdir):' < $(srcdir)/gschemdoc.sh > tmp_gschemdoc
 	chmod a+x tmp_gschemdoc
diff --git a/gsymcheck/.gitignore b/gsymcheck/.gitignore
index 0bfd58c..402aafc 100644
--- a/gsymcheck/.gitignore
+++ b/gsymcheck/.gitignore
@@ -2,3 +2,4 @@ Makefile
 Makefile.in
 *~
 *#
+ChangeLog
diff --git a/gsymcheck/ChangeLog b/gsymcheck/ChangeLog
deleted file mode 100644
index a230b05..0000000
--- a/gsymcheck/ChangeLog
+++ /dev/null
@@ -1,921 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 21e8c0b232e08927fd091a1d46413990b4c61358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:18:34 2009 -0400
-
-    Updated all dates in the relavent man pages (for 1.5.2.20090328)
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit c3081930ed224394f645de4bfb51e86fa3e15e65
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 20 23:26:12 2009 +0000
-
-    Remove obsolete references to libgd and libgdgeda
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit ee250c9bd2e88bf352a03d1719603b7d54fe430c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:30 2009 +0000
-
-    Avoid underlinking of apps due to missing explicit depends
-    
-    These went unnoticed because the apps were resolving the necessary
-    symbols when pulling in libgeda and its dependencies.
-    
-    Fix applications using GLib and guile within the suite to explicitly
-    pull in the appropriate CFLAGS and LIBS. This commit removes some
-    LDFLAGS and LIBS from grenum, since they weren't being used.
-
-commit 1645fda42758a837c7ccf1efd32fd3b484e22421
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:17:44 2009 +0000
-
-    Remove unused GTK dependencies from text-based tools
-
-commit a344ff9c33b9bbb7b1a622b70dcedf393e1de09a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 20:41:43 2009 +0000
-
-    Remove some unused Gdk* typed variables from globals.[ch] across the suite
-
-commit 373becd3a5156236963b82e7f9a27be8f90db0c4
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Jan 2 20:39:56 2009 +0100
-
-    gsymcheck: checks for overbars and escaping
-    
-    Test for single overbar markers '\_label' and print a warning.
-    libgeda currently closes an open overbar at the end of the string
-    but a different implementation could drop the overbar.
-    
-    It also tests for single backslash characters. They will
-    be invisible as a '\x' combination will only print the second
-    char 'x'. The user should decide whether he likes to remove
-    the backslash or whether to escape it and write '\\x'
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit ca6556ace0a06ec1dd697852f7a1f0ffb86bfb97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:57 2008 +0000
-
-    Add "const" to some places where we deal with GLists of OBJECTs.
-    
-    These GLists themselves are not (and shouldn't be) modified, although
-    the OBJECTs they point at may well be.
-
-commit 87974a03e1184d58edb1382f6006a13c47bcbc77
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 27 18:29:20 2008 +0100
-
-    gsymcheck: warning message if show_name_value is weird [#2470862]
-    
-    If a text object is not an attribute the show_name_value field
-    of the text object should be SHOW_NAME_VALUE.
-    
-    Create a warning if it's SHOW_NAME or SHOW_VALUE. It's not really
-    an error, thus only create a warning
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 4f9f4336a123f91318ec2d1ffd8e9739eb756348
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:10:23 2008 -0500
-
-    Updated dates and versions in all man pages
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit 6e10a7fbe26c858a6fa85f430d2bfe256a668c28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 17:29:37 2008 +0000
-
-    gsymcheck: Remove unused "utils" directiory
-    
-    Only an automake was left in this directory.
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit 94ced454b33f96700d003ebab7cf1df5fab7ecbe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 13:17:00 2008 +0000
-
-    gsymcheck: Don't export x_log_update_func, it is a libgeda symbol
-    
-    We set libgeda's exported x_log_update_func variable from
-    gsymcheck.c. (This is declared as extern in libgeda's funcs.h)
-    
-    Move the logging function s_log_update() from globals.c (where
-    it didn't belong) into its own file, s_log.c, making minor edits
-    along the way. The log handler isn't called when "do_logging"
-    is FALSE, so we don't need to test that from within the handler.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit f0a96de8b545dbd900e87db6abf54a0b6df830ab
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 09:02:03 2008 +0200
-
-    .gitignore: log files and source tagging files added
-    
-    Added the files of the "global" source tagging program
-    and the logfiles of the gEDA programs to .gitignore.
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit a974a4c6d2c233c9209c5b4597f7d4f86154f484
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:28 2008 +0100
-
-    Remove default-series-name from all rc files
-    
-    Fixes brokenness leftover from previous removal of "series_name".
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 723e8d1c735b27f2bfc39dec296464bb8d5b2020
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    Don't register recalc funcs as draw funcs.
-    
-    Some applications which don't draw schematics set the draw funcs to be
-    the recalc funcs. This is silly.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit a76cf5cdda91c7070f4765107d3f8be89bbd05b6
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:01 2008 +0200
-
-    Remove unnecessary strippings of trailing directory separator.
-    
-    These strippings is no more necessary as GLib functions for building
-    filenames (in particular g_build_filename()) takes care of any
-    trailing directory separator for us.
-
-commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:00 2008 +0200
-
-    Replace getcwd() with g_get_current_dir().
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit a3513b7e6dc7bf6c36d95d4da86082beeb79831d
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:57 2008 +0200
-
-    Replace standard string manipulations with GLib string utility functions.
-
-commit da1d2e7b304f9d832bdee9c8dfb9fe4604e19cc9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:56 2008 +0200
-
-    Remove tests for NULL prior to freeing with g_free().
-    
-    Testing if pointer on memory to free is not NULL is unnecessary
-    since g_free() does the test itself.
-
-commit 21bdf2fbbad2146234fd32a0fe04bddcaddb64f8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:21:00 2008 -0400
-
-    Updated versions in the important man pages
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit e1ba38c43fb8d0fda7609e607e5489046fef4a8f
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 19 19:45:29 2008 +0100
-
-    gsymcheck: modified symbol for improved duplicate net test
-
-commit 77e0e0f4ffe9573316ebdfdc12d319ccff1074a3
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 14 19:49:49 2008 +0100
-
-    gsymcheck: test for number in pinlabel and net attribute
-    
-    If a number is in a net attribute and a value of any pinlabel
-    attribute then print a warning with some text. The previous patch
-    removed the error message, this one adds warning. Whether this
-    situation is an error or not depends on the users intention.
-
-commit a6f4710a198a8bcb66b8a26185ad7bd60c6c599a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 13 20:42:55 2008 +0100
-
-    gsymcheck: improved pinnumber check
-    
-    The changes will check for duplicate pins in net definitions.
-    It also checks the net definitions and the pinlabel definition
-    seperatly, thus a power pin can have a pinlabel and a net pin.
-
-commit b14328d429866910fc2a1da2e8291467e3fc27b9
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 13 18:08:51 2008 +0100
-
-    gsymcheck: check for unknown attributes
-    
-    This test will check for all attributes that are not in a valid
-    attributes list. A warning messages is printed. This will also catch
-    old style attributes like slot#=# and pin#=#.
-    And some often used attributes class, pins, footprint2.
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit ecda6ee9e101563f7fed092150532256fd9b343e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:50:16 2008 -0500
-
-    Updated all dates and versions in all man pages
-
-commit 5d9f43178c3846100c149c0baef38c26126ec233
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 12 00:08:06 2008 +0100
-
-    gsymcheck: moved obsolete and forbidden attribute checks
-    
-    This is a code cleanup patch, it moves the tests for obsolete and
-    forbidden attributes to the symbol_structure test. Deleted the old
-    check s_check_obsolete_forbidden_attributes() function and it's unused
-    variables. In the output files, some format changes occured, but the
-    meaning is still the same.
-
-commit a049385144979f770fae60aaa66a86302f82b56e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Jan 11 23:15:23 2008 +0100
-
-    gsymcheck: test for misplaced attributes
-    
-    The tests detect pin attributes are attached to nonpins or are
-    detached. And attributes that are attached to any other objects.
-    Attributes attached to pins that are not pin attributes
-
-commit c48d7f28e55424ce4e87e34f4de3b5324eb43edf
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Jan 11 19:26:50 2008 +0100
-
-    Added new pintype test symbol and output to EXTRA_DIST
-
-commit c823516a64dc7977fd8542e61a720c52f38d298e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Jan 10 22:14:02 2008 +0100
-
-    gsymcheck: improved the pintype check, added test case
-    
-    added a check that contains all valid and five different case of
-    invalid pintype values.
-    Removed unused code in s_check_pintype() and added a function to
-    check whether a string is in a list of strings.
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit d9e245524db9399a11fe533a2f4caccb06d89f75
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 21:06:30 2008 -0500
-
-    Added new off pin grid symbol and golden output to EXTRA_DIST
-
-commit 9f96048f1c9c9989f709e8b07d6195628fd79115
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 21:02:45 2008 -0500
-
-    Removed misleading "pin count from footprint=" attribute check
-    
-    This check wasn't working correctly for all footprint= values.
-    It probably worked fine for the DIP# and related footprints (ending
-    with the number of pins in the footprin), but for others it was giving
-    incorrect info/warnings.  This check will be replaced with something a
-    little bit more flexible going forward in a later release.
-
-commit c1e3075cb263a6098d2351440b680247456ae0d0
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:27:16 2008 -0500
-
-    Updated and correct the gEDA/gaf man pages a little bit.
-    
-    This is the fix for SF Bug: [ 1556064 ] man page version out of date
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 20f81d3f3c6d9cbf426eeb134e418ebe2cd0e64e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 5 17:13:16 2008 +0100
-
-    gsymcheck: add test for the pin_ongrid test
-    
-    Testfile and a golden output file added
-
-commit 7fa854ce519498782f90bb390910112fb8d6bb09
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 5 16:13:41 2008 +0100
-
-    gsymcheck: added checks for offgrid pins
-    
-    The check prints an error message if the active end is offgrid and a
-    warning message if the not active end is offgrid. The active end is
-    detected with the whichend property.
-    This fixes the feature request [#1565593]
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit b9ffb4675fbca6e92a4f713c28486e74dcbbeef4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 15:42:13 2008 +0000
-
-    Fix configure checks for Guile.
-    
-    Quote variables to protect them and alter version test logic so that
-    it doesn't think version 2.1 is older than 1.8.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit 668ada22ec0f2a48adffcc62daacc6876108ee71
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Pass all log info to x_log_update_func
-    
-    In order to enable applications to do interesting things with log
-    messages, they need to have all of the log info (including severity
-    and log domain).
-
-commit b635ebb641383360e5e7864830d42d13cf7f4d12
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Print useful messages when f_open() fails.
-    
-    This reinstates error messages removed by the patch which modified
-    f_open() to use GError for error reporting.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit 43b571362e5fb663115ee1630b94c88cb74f0c13
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 18:24:10 2007 -0200
-
-    Replace index and rindex by strchr and strrchr.
-    
-    These are functionally equivalent, and more portable to MinGW.
-
-commit bdd7ef7ee9047c3942b43c165396ebe48d31e95a
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 14:17:21 2007 -0200
-
-    Use g_path_is_absolute from GLIB instead of platform specific code.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit d715ba7dc3e02d77e671b9ab54b994379daefec5
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 13:34:40 2007 -0200
-
-    Tell git to ignore .exe files.
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit 525b4a0ff3a1b8cc321f117513796e4571702da8
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 09:56:33 2007 -0400
-
-    Applied patch to use $(GROFF) instead of which groff
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 9627ac695a2d20171fdc44ff0a295b8430399f6f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:41:21 2007 -0400
-
-    Added tests in gschem/tests to run durning make check.
-    
-    This is the other part of thie fix for bug #1748153: gsymcheck crashes
-    on invalid_slotdef1.sym.  Fixed a couple of the the tests to actually
-    test the right thing.  Added a bunch of golden files (*.output) and the
-    necessary run_test.sh script.
-
-commit a35dc18f2f3c159c021a4bcb542780f7bfbe7196
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:36:52 2007 -0400
-
-    Fixed comment warning message and improved newly added comment
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 6fc2856767979c34ed216aebe4f8efb231d5a4b1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:14:25 2007 -0400
-
-    Fix for [ 1748153 ] gsymcheck crashes on invalid_slotdef1.sym
-    
-    The fix for this bug was to check the built up pinlist array and make sure
-    that none of the items were null.  Added error message and log entry when
-    this error condition.
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-
-#GCL#
diff --git a/gsymcheck/Makefile.am b/gsymcheck/Makefile.am
index 8c63960..40ad7ba 100644
--- a/gsymcheck/Makefile.am
+++ b/gsymcheck/Makefile.am
@@ -1,7 +1,12 @@
 
 SUBDIRS = src include lib docs tests
 
-EXTRA_DIST = BUGS ChangeLog-1.0
+EXTRA_DIST = BUGS ChangeLog ChangeLog-1.0
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
diff --git a/libgeda/.gitignore b/libgeda/.gitignore
index 81f1686..220e353 100644
--- a/libgeda/.gitignore
+++ b/libgeda/.gitignore
@@ -11,3 +11,4 @@ GTAGS
 HTML
 docs/images/*png
 docs/images/*pdf
+ChangeLog
diff --git a/libgeda/ChangeLog b/libgeda/ChangeLog
deleted file mode 100644
index 30f0ba1..0000000
--- a/libgeda/ChangeLog
+++ /dev/null
@@ -1,5156 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 42236bdddb4f04de9facf246ce20fff6854d022a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:48:56 2009 -0400
-
-    Added missing libgeda.dox so that it gets packaged up in the release tarballs
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit b297d32b70c02bfe800b7bf4c434d1fd4447e2f5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 14:55:22 2009 -0400
-
-    Updated all po files by running make update-po
-
-commit c3081930ed224394f645de4bfb51e86fa3e15e65
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 20 23:26:12 2009 +0000
-
-    Remove obsolete references to libgd and libgdgeda
-
-commit 246acd46e591e542ac3f00f9064905ae0311b0ec
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jan 24 16:08:43 2009 +0000
-
-    Make o_save(), o_read() and friends take an object list argument.
-    
-    Sometimes we may want to save or read in a list of objects which isn't
-    the current page. This adds a new function o_save_curr_page() which
-    behaves the same as o_save() previously did.
-
-commit 4d83eae30b789deb8ab9235a89c191630ebf18be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 21:17:01 2009 +0000
-
-    libgeda: Refactor load backup query callback.
-    
-    Passing user data allows the gschem callback to be called with a
-    GSCHEM_TOPLEVEL instead of a TOPLEVEL.
-
-commit 44028f9c988a134748c8cea5e439983377ae3fd3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 21:16:59 2009 +0000
-
-    libgeda: Don't use compiled-in GEDADATA on Windows.
-    
-    On Windows, the compiled-in data path set with configure is unlikely
-    to be the same as the path gEDA is actually installed to -- so don't
-    use it. Instead, permit the s_path_*() funcs to return NULL.
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit 7cc4a67795c9ee8dcb28edc6d71b895c5b4f1dc9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:10:41 2009 +0000
-
-    Refactor finding paths for config etc.
-    
-    This is intended to provide a centralised place for determining the
-    paths more "smartly" in the future (e.g. for platforms with different
-    conventions on where config should go).
-    
-    Only user-visible change should be that log messages when loading
-    config files no longer hardcode "~/.gEDA".
-
-commit b5fbfa5f8734c215fb632a29699889b7decf910c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 02:11:17 2009 +0000
-
-    libgeda: Do not use "Requires.private" in libgeda.pc
-    
-    We cannot use "Requires.private", as the behaviour is not consistent
-    across distros due to an ongoing disagreement about what the semantics
-    of "Requires.private" should be. In particular, Fedora's pkgconfig
-    package has patches installed which break that functionality. Instead,
-    use "Requires".
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit bb074bdd2a30fd3b941be2683c905a99d330243a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 17 22:48:41 2009 +0000
-
-    libgeda: Fix printing of colours.
-    
-    To avoid emitting a colour change for each object printed, libgeda caches
-    the last colour it wrote into a postscript file, and doesn't emit a new
-    colour change command when the next object is the same colour.
-    
-    Drawing of complex and text objects are wrapped by a "gsave" and "grestore"
-    pair, which resets the postscript interpreter's current colour, so we need
-    to restore our variable tracking the last drawn colour after these groups.
-    
-    Fixes mis-drawn colours noted by DJ on the geda-user list.
-
-commit 28ee7866d44c74927401d362aceec4474bb5075c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 17 22:30:13 2009 +0000
-
-    libgeda: Use AC_LIBTOOL_WIN32_DLL to build DLL on Win32 platform.
-    
-    This (albiet deprecated) option is required to make a shared DLL on
-    Win32. The non-deprecated syntax isn't compatible with older libtool,
-    so lets use this for now.
-
-commit 333ccc55a1a1dc7c0c6ae92daefdfb83c54d511f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jan 14 21:03:41 2009 -0500
-
-    Revert part of a commit that changed how libtool is initialized
-    
-    This commit reverts part of b47b0d1276a9535e3a66e4f8535f6c552849490f
-    back to the original way of initializing libtool (using AM_PROG_LIBTOOL).
-    The other changes in b47b0d1276a9535e3a66e4f8535f6c552849490f seem
-    reasonable enough.
-
-commit a37263740000929363492726a069d92b161ab64c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 14 00:37:54 2009 +0000
-
-    libgeda: Make colormap hex codec functions more portable.
-    
-    The 'hh' length modifier was added in "The Open Group Base
-    Specifications Issue 6". (IEEE Std 1003.1, 2004 Edition).
-    
-    Testing on wine's implementation of msvcrt.dll has shown
-    that this modifier isn't implemented, leading to memory
-    corruption / misread colour maps.
-    
-    Commit message ammended by Peter Clifton.
-
-commit b47b0d1276a9535e3a66e4f8535f6c552849490f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:45 2009 +0000
-
-    libgeda: Ensure we build a shared DLL on MINGW32.
-    
-    Pass -no-undefined to libtool, and initalise in configure.ac.in
-    with LT_INIT([win32-dll],[shared]). Tested not to affect Linux.
-
-commit 09e4b6a6c3fb7d9a95340f4de4a2b84193318f33
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:41 2009 +0000
-
-    libgeda: Define libraries necessary for statically linking libgeda
-    
-    Following removal of extraneous CFLAGS and LIBS from libgeda's pkg-config
-    file, there are problems statically linking the library.  We actually need
-    to provide a list of required libraries to link with for static linking,
-    and would ordinarily use Requires.private for that.
-    
-    Since guile 1.6 doesn't use pkg-config, avoid around the problem by adding
-    guile's LIBS to libgeda.pc's Libs.private.
-
-commit 0cfeefc37856c30fc57f9ca803ffb1f7f11310e7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:05 2009 +0000
-
-    libgeda, utils: Check for same glib version as rest of suite; 2.8.x
-
-commit aabcb89e83bfbe3f601a023f8c5aa4da725a3c17
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 11 00:28:15 2009 +0000
-
-    libgeda: Fix picture aspect ratios to compute width/height
-    
-    For some reason, libgeda was computing height / width, whilst gschem
-    used width / height.
-
-commit 700d5c08aa33009128491007ff4d3f6e91ce0489
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:54:09 2009 +0000
-
-    libgeda: Move include files to be compatible with non-installed build
-    
-    By placing public libgeda include files in a directory libgeda/*, it is
-    possible to point the rest of the suite's builds to include that directly.
-
-commit 02fa8f658d315796df7c6ab8790e5310e8548d37
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:29:21 2009 +0000
-
-    Remove explicit checks for X11 - we're not using X11 APIs directly
-
-commit 51c7b2770c01b851f4f7bd0624eed0533c69c376
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 21:35:58 2009 +0000
-
-    libgeda: Use "Requires.private" feature in pkg-config to avoid overlinking
-    
-    When libgeda declares that it requires gdk-pixbuf-2.0, using the
-    Requires.private field allows the required CFLAGS to be passed on without
-    forcing programs linking against libgeda to explicitly link with gdk-pixbuf
-    
-    This causes programs using libgeda to require a version of pkg-config >0.18
-    (although that hasn't been determined experimentally). This was released in
-    2005/2006, so ought to be fairly ubiqutous.
-
-commit 2742d7a50cbf126ea5a901e2f9faa6259263ae75
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 21:21:39 2009 +0000
-
-    libgeda: Avoid overlinking against libraies we don't actually use
-    
-    The only libraries we need to specify for libgeda is -lgeda, and an
-    appropriate search path.
-    
-    For CFLAGS, we need to specify the path to libgeda's include files.
-    
-    We must also reference the libraries we depend upon being installed
-    for our API / header files. This is currently guile and gdk-pixbuf.
-    Since difrerent guile versions have different pkg-config files, this
-    is not particulary simple to achieve. To avoid the problem, lets
-    just not pass any guile CFLAGS on from libgeda's pkg-config file.
-    
-    Libgeda requires its callers to have correctly initialised guile, so
-    imposing the requirement that guile's include files are available is
-    not a great extra burden. (They must be available for the app to be
-    calling the correct initalisation functions).
-
-commit bb9b1321c59714e432c1c6a196a39baf56a437f9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 20:41:59 2009 +0000
-
-    libgeda: Don't depend upon GDK. We need gdk-pixbuf, which is separate.
-    
-    We don't need to call gdk_init() in o_picture.c, since gdk-pixbuf is not
-    an internal part of GDK. Dropping the call to gdk_init() means it is now
-    possible to run gnetlist on a schametic with images, without an X server
-    available (for GDK build targetting X11).
-    
-    We only explicitly require GdkPixbuf for libgeda's external APIs.
-    Move the #include <gdk-pixbuf/gdk-pixbuf.h> before we include our local
-    prototype.h and struct.h though, since gdk.h no longer pulls this in.
-
-commit fc660d554159c44e41a456fbb888fbe977666269
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 9 01:43:56 2009 +0000
-
-    libgeda/gschem: Try a smaller cue circle for net junctions
-
-commit 42a5bebc27f842b1955d9626f2521eea124259a0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 9 01:04:14 2009 +0000
-
-    gnetlist: Teach netlist traversal code to understand buses (still disabled)
-    
-    Up until recently, the connection scanning code has rejected some, but not
-    all buses. This means that it is unlikely graphical buses formed a useful
-    part of anyone's design, since the netlist code in s_traverse_net()
-    would not follow connections to another bus segment. The only possible
-    bus-pin connectivity has ever been "pin-bus-pin", or "pin-bus-net-...".
-    
-    This behaviour appears to have been accidental, and would not have been
-    easy for a user to take advantage of. The traversal code would not move
-    on to a subsequent bus, but would, for example, allow a pin->bus->!bus
-    connection, which could then connect onwards. The bus mixed up in this
-    would for all intents and purposes behave as a net.
-    
-    The pin->bus validity bug was actually fixed in libgeda when adding
-    support for bus pins. This commit formalises it further, since if
-    support for netlisting bus pins were enabled it would otherwise still
-    be possible to get a buspin-bus-net-... connection if you tried hard.
-    
-    Introduce type-checking between pins, nets and buses such that they can
-    not netlist where the object types don't match. For buses, the code to
-    name a connection based on "netname", "net" or "label" attributes is
-    disabled - pending decision as to what constructs we wish to use for
-    naming buses. Add a gnetlistrc setting (unnamed-busname ...) which sets
-    the default naming (if the connection scanning code were run on bus pins).
-    
-    This commit lays some of the ground work for shared connection scanning
-    code for determining the connectivity of buses and bus pins.
-
-commit efb5dba68395549c7e970f3506148194eb4b30c6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 8 01:16:08 2009 +0000
-
-    libgeda: Use strlen rather than strnlen, which is a GNU extension.
-    
-    Helps buy us some portabilty. In the case changed, the string is
-    going to be NULL terminted, so the length cap doesn't buy us anything.
-
-commit 330e6bc49a83a176c549644011d186dbc5e1d8b9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 7 13:47:27 2009 +0000
-
-    libgeda: Font-renderer-specific text bounds functions.
-    
-    When using arbitrary fonts, libgeda can't know the world extents of a
-    TEXT object without reference to the font renderer.
-    
-    This patch adds a mechanism for applications (i.e. gschem) to register
-    a callback to be used by libgeda for calculating the bounds of a TEXT
-    object.
-
-commit 600c870c0486edfe0afae031a6857ccddfec7e08
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Dec 31 13:59:23 2008 +0100
-
-    libgeda: access functions for filltype and linestyle
-    
-    Created the function o_get_fill_options and o_get_line_options to
-    get the properties of an object.
-
-commit 95432ccffdbb39434981f87050433c00f40125da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 19:38:11 2009 +0000
-
-    gschem: Revert change in cue size "fixed" when introducing bus pins.
-    
-    The old behaviour was intentional.. smaller cues were in fact supposed
-    to be used for buses, so that the dot was contained inside the bus
-    graphic.
-    
-    Rename the variables defining the sizes to be clear about their purpose.
-
-commit ba15c06da1ec82e3ff063e211def6d8a983f1bde
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 18:44:00 2009 +0000
-
-    libgeda: Fix hit-detection of arcs with negative end_angle
-
-commit 975fc0827bf61e3e88ec374d3440b0887c2d5ef2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 4 18:43:27 2009 +0000
-
-    libgeda: Fix calculation of arc bounds for arc with 360 degree sweep
-
-commit 2874ca6c016115363ab9edb7809d5ca66509ca14
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 19:54:04 2009 +0000
-
-    Move world <-> screen coordinate transformation functions into gschem
-    
-    Convert them and their callers to use a GSCHEM_TOPLEVEL as an arguemnt
-    rather than TOPLEVEL.
-    
-    This commit moves most of libgeda/src/m_basic.c to a new file,
-    gschem/src/m_basic.c
-
-commit 4d79aa73981d6caa2c803250d1be266d7657f0c2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 19:54:03 2009 +0000
-
-    Move o_line_visible() from libgeda into gschem
-    
-    This function relates to on-screen visibility, so should be in gschem.
-
-commit f37c893edfeb016e57aae5e92f48093608e5cdfb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 3 02:38:29 2009 +0000
-
-    gschem: Add interface to toggle a pin between net pin and bus pin types.
-    
-    This allows schematic diagrams of hierarchical connections to include
-    buses. Since gnetlist does not currently support buses, this feature is
-    useful only for diagrams, or when used with a custom netlister.
-    
-    Since we don't want to mislead users into thinking bus pins netlist,
-    the option to set pin type is only present on the page's popup menu,
-    and is marked "(graphical)".
-
-commit 7d01d4ae87fd329ffa3e93df9e286dd6e56e225c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 23:14:53 2009 +0000
-
-    libgeda: Fix bus/net to bus/net pin connectivity checking rules
-    
-    Previously, the type of pin was not checked when computing connections,
-    and buses were disallowed from connecting to any type of pin.
-    
-    Refactor s_conn_update_line_object() to concicely check the following:
-    
-      Allow connections between matching pin types only.
-      Allow connections between nets, other nets and net pins.
-      Allow connections between nets and the mid-points of a bus.
-      Allow connections between buses, other buses and bus pins.
-
-commit 998e8546754fe2ab41a57ce112c3966190c501df
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 23:14:52 2009 +0000
-
-    gschem: Add support for rendering and adding pins with type PIN_TYPE_BUS
-    
-    Bus pins are rendered thicker, and with a bigger cue than standard pins
-    of PIN_TYPE_NET.
-    
-    This commit also fixes a bug where the wrong sized cue circle was drawn
-    for net-net interconnections.
-
-commit 08db7a435330db92db7ce99267ca6c624481e053
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 20 17:53:12 2008 +0100
-
-    libgeda: check whether a attribute is attached to an object
-    
-    Simple test function added.
-
-commit 48c35116377abd95e0914e6f28c00c9786392e70
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 20 17:49:31 2008 +0100
-
-    libgeda: functions to get the position of an object
-    
-    added a function o_get_position() to get the world position
-    of an object.
-    
-    The returned position is dependant on the object type.
-    For the box and picture object the lower left corner is used.
-    For line, net, bus, path, the first point is used.
-    For pin the whichend is used.
-    For circle and arc the center is returned.
-    Complex and text object return it's base coordinate.
-
-commit 2ee50f8ed4a738880d3ca04fd5a27c66b89bc743
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 16 12:50:17 2008 +0100
-
-    libgeda: new snap state and snap cleanups
-    
-    Switched toplevel->snap into a enum type and use the newly added
-    states.
-    
-    removed unused and broken function on_snap(). Removed misc
-    wrong comments about the snapping mechanism.
-
-commit 8a1b27af48d06ffe4fa2dc71a67810f7b4a71e32
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 2 14:17:31 2009 +0000
-
-    Update en_GB translations for libgeda and gschem
-
-commit 5d7b92b9f4cf9fb750c61b5b9124598692cbe6aa
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Fri Jan 2 14:13:28 2009 +0000
-
-    Updated the Dutch translations for libgeda.
-    
-    (Patched PO file updated on 2009-01-02 by Peter Clifton)
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit ca6556ace0a06ec1dd697852f7a1f0ffb86bfb97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:57 2008 +0000
-
-    Add "const" to some places where we deal with GLists of OBJECTs.
-    
-    These GLists themselves are not (and shouldn't be) modified, although
-    the OBJECTs they point at may well be.
-
-commit 15ed098497ddac2bc671657c4d4347eb509f7449
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:50 2008 +0000
-
-    Refactor o_complex_promote_attribs() not to link the promoted objects.
-    
-    By returning the GList of promoted attributes, we allow the caller to
-    use whatever specialised linking procedures are appropriate for the
-    list they are linking to. For example, linking objects into the PAGE's
-    object_list might in future require calling notification functions.
-
-commit 4971020530b55ac275cf30e48fd4c10cd6d8fb4c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:25:43 2008 +0000
-
-    libgeda: Add new API for adding a GList of objects to the page
-    
-    s_page_append_list (PAGE *page, GList *obj_list) will take the GList
-    passed as an argument and append it to the page's object list.
-    
-    The passed GList is not copied, so the caller must not free it after
-    calling this function.
-
-commit f013cb1d70d868093ad9aa3ae1e38a5c9079ecc9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 22:08:49 2008 +0000
-
-    gschem: Add a code to draw a mesh grid with major / minor lines.
-    
-    Adds new configuration option (mesh-grid-display-threshold {pixels}) which
-    configures the minimum line pitch rendered before switching off the minor,
-    then subsequently major grid lines.
-    
-    (NB: This grid mode is currently not accessible.)
-
-commit 059f1be046494e1d1171953138f259b0af90409b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 21:25:16 2008 +0000
-
-    gschem: Separate out dotted grid drawing and tidy up the code somewhat.
-    
-    Creates a separate static function for drawing the dotted style of grid,
-    and a switch function to pick which grid drawing routine is in use, which
-    is currently just dotted grids or nothing.
-    
-    Adds doxygen documentation for the grid drawing functions.
-    
-    Renames the "grid-color" colour map index and other dotted grid specific
-    config parameters to prepend "dots-".
-
-commit aa6e2f9f4eda4b6c3cd11eabd679c2a710b4f222
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 20:11:22 2008 +0000
-
-    libgeda: Fix mis-matched default colour map definition
-    
-    Reorder the mapping in color-map.scm into strictly numerical order,
-    and annotate the default color maps with their index numbers so this
-    kind of mistake is less likely to reoccur.
-
-commit 165de888d86506583241dab79573e81f2cf44dd7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 25 15:46:09 2008 +0000
-
-    Remove GSCHEM_TOPLEVEL and TOPLEVEL indirection for fixed colour indices
-    
-    Colour indices such as grid_colour and select_color are not changed at
-    run-time since (by definition) those graphic elements are always drawn
-    with the sepcified index. Remove the indirection through GSCHEM_TOPLEVEL
-    or TOPLEVEL, and use the appropriate index constant instead.
-    
-    The background_color indirection remains, since swapping this is used
-    to override the background to white when exporting black and white image.
-
-commit 02c551b77e47fb0fbf2de3bfa62d43a095862a52
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Dec 23 09:30:01 2008 +0000
-
-    libgeda: Update Guile 1.6 compatibility headers.
-    
-    Add scm_cdr() to Guile 1.6 compatibility checks, and remove uses of
-    scm_is_null().
-
-commit 0029ee5696a4f8c0fd2a0edb64c0096792e24912
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 23 03:46:50 2008 +0000
-
-    Fix attribute colours for embedded objects [#2157598]
-    
-    Add an argument, "set_color" to o_attrib_attach[_list]() to specify
-    whether the colour of the attribute should be reset to the default
-    attribute colour when performing the attachment.
-    
-    We set this to true when promoting toplevel unattached attributes
-    inside a symbol onto the schematic page, when the user explicitly
-    attaches an attribute inside gschem. It is FALSE in other cases.
-    
-    In cases where we're creating new attributes, such as o_slot_end(),
-    we specify the attribute colour we want to o_text_new().
-    
-    Remove colour setting from o_attrib_add(), since there is no point
-    having this code in two places. o_attrib_add() just deals with the
-    datastructures now.
-
-commit eed07fa8c85fbeda15e974f186a69f546506fb12
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 21:16:36 2008 +0000
-
-    libgeda: Only output PostScript color commands if color changes.
-
-commit 736c635ef2f5bfb822169a8c024ebb92cdd17cf0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 20:22:08 2008 +0000
-
-    libgeda: Fix dark background lock color.
-    
-    Drawing of locked objects was accidentally disabled.
-
-commit 5453f2680e45dd3f2ffde73f442ba18a6a180437
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:39 2008 +0000
-
-    libgeda: Don't pro-actively calculate text bounds, wait until needed.
-
-commit b43dd2d3dfa1f50c788c87215a3e080bdb4448ea
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:33 2008 +0000
-
-    libgeda: Add missing case in o_recalc_single_object() for text OBJECTs
-
-commit 96ac0c7622c909604f925ae2a5e242a46ed0b53a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:25 2008 +0000
-
-    Use world_get_single_object_bounds() in s_page_get_objects_in_regions()
-    
-    This allows us to ensure the bounds are valid, and trigger a recalc as
-    necessary.
-
-commit 56985b0d059fc0487f7b8245cad7b468e737f2fe
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:18 2008 +0000
-
-    Change s_page_get_objects_in_region[s]() to take a TOPLEVEL parameter
-    
-    This is needed in case we have to re-calculate the bounds of any object.
-
-commit d63a40cef31791c8c5209f3695f14c3cdf29ba5d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:33:14 2008 +0000
-
-    libgeda: Fix selection of non-filled paths along their closing edge.
-    
-    If the path is closed, we want to be able to select along the
-    closing line.
-
-commit e7fe069ae882f8c0d398cac1b426b8a7df6fff53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 22 19:08:35 2008 +0000
-
-    libgeda: Fix s_color_rgba_decode() to default the alpha channel
-    
-    Fixes cases where the colour map doesn't specify an alpha.
-    
-    Signed-off-by: Peter TB Brett <peter@xxxxxxxxxxxxx>
-
-commit 2e4ec93e8689501983a891280d8b1869901113c9
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 16:38:38 2008 +0000
-
-    Revert "Use light background color maps as the default."
-    
-    This reverts commit 01bd6420ecad411d804f4a1a3d41af67d901ce6a, and
-    corrects the comments to refer to the dark background as the default.
-
-commit 04e17b33aea43f01079d2a0fd1ac9457062aa392
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:43:55 2008 +0000
-
-    libgeda: Load confd files as last action in system-gafrc.
-    
-    Without loading the configuration files from the confd last in the
-    system-gafrc, it is impossible to override e.g. attribute promotion
-    settings from confd scripts.
-
-commit 01bd6420ecad411d804f4a1a3d41af67d901ce6a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:43:17 2008 +0000
-
-    Use light background color maps as the default.
-    
-    The comments in the rc files have stated for a while that a light
-    background is the default. Furthermore, all the cool CAD software uses
-    light backgrounds these days.
-
-commit 619aea627a81a5621036b0a2949e774bb5cb2e6e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:42:46 2008 +0000
-
-    Separate display and print color map config files.
-    
-    We should be able to print in color using libgeda without needing
-    gschem.
-
-commit 12d9e2127329a880ed8532808635d3ffdbf46caa
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:51 2008 +0000
-
-    Remove display colormaps from libgeda.
-    
-    Libgeda doesn't need to know about the color maps used by gschem at
-    all. Add a generic function for initialising a color map to a built-in
-    default, and get gschem to use it for its main and outline maps.
-
-commit 9f5e54f022b73adb429633461ca88c81c394fd16
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:51 2008 +0000
-
-    Remove (ab)use of "customary" colors.
-    
-    colors.h defines a number of color index index constants with color
-    names (white, black, cyan, etc.) This is evil and bad, because the
-    color map might actually be loaded with entirely different colors.
-    
-    This also adds a DEFAULT_COLOR macro, usable in most places the "evil"
-    existing contacts are used.
-
-commit a8b55895fd6833fa36ef92c6bc7c82490ea3a294
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:50 2008 +0000
-
-    Remove legacy color Guile functions and variables.
-    
-    Remove the color-mapping functions and variables obsoleted by the new
-    system.
-
-commit 06449db86b91db91bf5d4551acc2794cf34c97f1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:29:47 2008 +0000
-
-    New Scheme colormap syntax.
-    
-    Add new color map functions for setting multiple colors at a time with
-    a simple list-based structure. Use one per color map rather than one
-    per color.
-    
-    Use a wrapper macro in Scheme to make it easier to construct Scheme
-    color map structures by using symbols instead of indexes to specify
-    map entries.
-
-commit af4756b843d6da32b8355a50bf3bb1f2bee0a539
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:20:17 2008 +0000
-
-    Store colors as components rather than as strings.
-    
-    Rather than storing colors in libgeda as strings or GdkColor
-    structures, store them as a set of four 8-bit unsigned integers.
-    
-    Since the GdkColor structure is renderer-specific, remove all trace of
-    it from libgeda -- only gschem needs to know about it.
-
-commit 05c77c57cc78b0963e52a91e6f56e8005089690a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 15:20:14 2008 +0000
-
-    Specify colors with RGB/RGBA hexadecimal notation only.
-    
-    Transparency (alpha channel) is used as follows for PostScript: if
-    alpha is non-zero, objects are drawn fully opaque. If alpha is zero,
-    objects are not drawn.
-    
-    The alpha channel is ignored for GDK drawing.
-
-commit e2d6f2bfb1c24d5dfaf193dfae4aaa7cf4d0f236
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 22 00:36:27 2008 +0000
-
-    Add explicit 'enabled' field to COLOR structure.
-    
-    Colors are implicitly 'enabled' by having values specified in the
-    configuration file. Up until now, whether a given color is enabled has
-    been checked by checking if the color name strings are NULL.
-    
-    This patch adds an explicit 'enabled' field to the COLOR structure. It
-    is set TRUE when s_color_request() is called for that color index.
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit e97e63ac7955c34f6fbd820cbdea9ea9b90e9ec9
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Dec 21 22:16:33 2008 +0100
-
-    Updated spanish translation for libgeda and gschem.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 84d3b0199bec40652b1381474f7f76d7b24a6ff7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:48:42 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    This is in prep for the upcomging 1.5.1 release.
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit c84879ae316698d0d1a85048cdc8417e71ec167e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 11:35:25 2008 -0500
-
-    Added missing file (configure.ac) from maintainer-clean files
-    
-    configure.ac is generated from configure.ac.in and should not survive
-    make maintainer-clean.
-
-commit 2c1c7ff82e5ba02c432eb9e1e9fe44ac97e5ecc7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 11:24:43 2008 -0500
-
-    Added libintl.rc to .gitignore to make git status less cluttered
-
-commit 7289597377b3a0efd00c29b5da08956b25dffafc
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Dec 21 12:32:57 2008 +0100
-
-    gschem/libgeda: updated german translation
-
-commit 9e9b1ab60ff8740f4039471efaa5435193d83c14
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 20 18:12:46 2008 -0500
-
-    Manually ran make update-po in all the po directories
-    
-    make update-po was run in prep for an upcoming release.  It will probably
-    have to be run one more time before the final release is done.
-
-commit d8cc920d932f1557f3d93da6abd1d99e690f39ef
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 21:47:12 2008 +0000
-
-    gnetlist: Optimise connection traversal algorithm
-    
-    Increase performance for traversing schematic connections by
-    optimising tracking of how many times objects have been visited.
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 978a127bf1f7174fd5146371d0cbbfc6a8f2baf8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:25:06 2008 +0000
-
-    Avoid and remove OBJECT variable draw_grips
-    
-    We can infer the required logic from OBJECT->selected, and the
-    resulting code is cleaner.
-
-commit 68f782583cc41b542dc237cb9173f64ffc01ce76
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 08:09:57 2008 +0000
-
-    gschem: Just redraw everything when we get an expose event
-    
-    Disable generation of our backing pixmap and remove o_invalidate_rect()
-    calls from various drawing functions. The backingstore is straight to the
-    screen, so there is no need to make that call (it causes a redraw loop).
-
-commit 67daa4d705d62d16133feb2d9a3a77cacb9b34de
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 05:49:39 2008 +0000
-
-    Allow bounds of lines and arcs inside a COMPLEX to form a selectable box.
-    
-    This allows existing symbols, such as logic gates etc.. which have no
-    outer box, nor yet make use of closed paths, to be easily selectable.
-
-commit 94602fdc724dd31527c3ceed2092ddeee1d954e0
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 04:42:25 2008 +0000
-
-    Symbols now selectable by clicking inside their shapes.
-    
-    This patch changes the selection behavior by allowing symbols to
-    be selected by clicking inside any contained shape.  This behavior
-    works for symbols with boxes, circles, and paths.
-    
-    Patch modified by Peter Clifton:
-    
-      Added m_line_shortest_distance(), (m_line.c) and make use of that
-      in m_polygon_shortest_distance() rather than faking a line OBJECT.
-    
-      Change all o_*_shortest_distance() functions to take a parameter
-      "force_solid" so we avoid having to use a specialised dispatch
-      function to treat constituent primitive objects inside a COMPLEX
-      as solid.
-
-commit d785f7cf34f581bbb18fbc73dced8e44bc28ab90
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 20 04:35:30 2008 +0000
-
-    libgeda: Simplify shortest distance test for text
-    
-    Since we're always treating the text bouning box as a solid area,
-    some of the conditionals can be simplified, as in the picture case.
-
-commit 6e8f757d3aa23219bb0259064dbed5ffa64fb341
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 19 00:59:52 2008 +0000
-
-    Remove next/prev linking from the STRETCH structure. Use GLists instead.
-    
-    The PAGE now maintains a GList of STRETCH objects instead. This keeps the
-    code a lot simpler and allows us to use more standard GList functions.
-
-commit 5ac7d324af0630fc8ad6f8692bcd80fe3d7b81d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 23:01:16 2008 +0000
-
-    libgeda: Fix memory leak in g_get_attrib_value_by_attrib_name()
-
-commit ba936e6bb6c321b7c9d433a8276d7cccd17c9889
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 18 22:52:42 2008 +0000
-
-    libgeda: Fix complex_parent for prim_objs of embedded objects
-    
-    When we read in the embedded objects for a complex, we need to
-    set the complex_parent argument for each of them to point at the
-    complex.
-    
-    This bug manifested in failed netlisting for embedded objects,
-    and has been manifest since:
-    commit f4dab83b1ca0e197f02f520a6ae525aeac5a252d
-    gnetlist: Use the complex_parent property of an OBJECT, not the HEAD node.
-    
-    The omission which made this a latent bug was in:
-    commit ec2e929742bb682be52d02818916b1f57c343e48
-    libgeda: Set complex_parent on all prim objects, not just their HEAD node
-
-commit 2aabf7fa7200f55b6bf3825cdf382af901484f0a
-Author: Gabriel Paubert <paubert@xxxxxxx>
-Date:   Wed Dec 17 14:31:12 2008 +0000
-
-    libgeda: Fix type parameter to s_basic_new_object, which should be an int
-    
-    The type parameter is stored as int in the OBJECT structure, so we should
-    be careful that this function can accept any valid type number.
-
-commit 645ddeba66b2bb589e6d5097dc8ead13529fd26f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 17 01:34:14 2008 +0000
-
-    libgeda: Fix mistake leftover from cleaning up o_*_shortest_distance()
-    
-    m_polygon_shortest_distance() calls o_line_shortest_distance() (which I
-    missed). It fills in geometry to a LINE structure, then calls the above
-    function. Make up a fake OBJECT structure as well, since we changed it
-    to take an OBEJCT * instead of a LINE *.
-
-commit 1a38d368b89110372d311ddcd22a515b88d87ca0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 17 01:09:05 2008 +0000
-
-    libgeda: Select text using the OBJECT's bounding box, not prim_objs
-    
-    Makes selection of text objects much easier, and will be needed when
-    we use an external text rendering API rather than our own internal font.
-
-commit abb681ddca37e729c3f17c48ca6d8d46e2f3dd2b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 17 00:29:41 2008 +0000
-
-    libgeda: Clean up o_*_shortest_distance() functions
-    
-    Make all functions take an OBJECT * as their first argument, rather
-    than a BOX, CIRCLE etc.. This keeps the function signature uniform
-    and allows the routines full access to the whole OBJECT state.
-    
-    Also use g_return_val_if_fail() as elsewhere in the code. Favour
-    primitive types such as double and int, rather than gdouble and gint
-    to be consistent with the majority of the gEDA codebase.
-
-commit 822d04bc29291979b91dd3222a27bbcb295e7b56
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 15 22:50:24 2008 +0000
-
-    Delete references to the non-existent object type OBJ_HEAD. (CODE!)
-    
-    Ok, cleaned up some whitespace as well.. couldn't resist.
-
-commit 07c7ea85f21c05b24513f1b087d839f098456408
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 13 17:56:36 2008 +0000
-
-    libgeda: Add function s_page_objects_in_region()
-    
-    s_page_objects_in_region() returns a GList of OBJECTs which are inside,
-    or which intersect with the given region.
-
-commit c24af025cba433db83db48d4b614632b2d5a517c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 16:08:43 2008 +0000
-
-    Replace calls to s_conn_return_complex_others() with s_conn_return_others()
-    
-    Teach s_conn_return_others() to understand COMPLEX objects.
-
-commit 7f4ec05b6812bf412ad23da67b82c9378c57aa0c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 15:28:07 2008 +0000
-
-    Replace calls to s_conn_..._complex with a non-specialised version
-    
-    Renamed s_conn_remove() to s_conn_remove_object()
-    s_conn_..._object() can then call s_conn_..._complex() as needed.
-
-commit 136efaf13287e97165bf511f146714ec94796d9a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 15:26:43 2008 +0000
-
-    Replace calls to s_tile_add_line_object() with a non-specialised version
-    
-    s_tile_add_object() can then call s_tile_add_line_object() as needed.
-
-commit 77541e1ec2efdc989b0a17864c1c0802080ff835
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 14:03:27 2008 +0000
-
-    Remove un-necessary copying of line end-points in o_..._copy()
-    
-    The end-points are already set when o_..._copy() calls o_..._new().
-
-commit d2877ab739c26ed6330fdeac2711326442395640
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 12 13:29:55 2008 +0000
-
-    libgeda: Only add buses to the tile system if ADDING_SEL is FALSE
-    
-    No functional changes here, since s_tile_add_line_object() silently
-    returns if ADDING_SEL is TRUE. To make the code similar to other
-    OBEJCTs, don't call s_tile_add_line_object() in the first place.
-
-commit eca34fca24e6d29a1b42c95daee0602c452fecd6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 22:26:56 2008 +0000
-
-    Revert "Remove unused "toplevel" argument to s_conn_* functions"
-    
-    This reverts commit b211658fcddb84828c437a65bf6bd73fcc4b1918.
-
-commit 28e12a770b23ffbe08c994cbd98d21a581b2cd2d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 21:44:24 2008 +0000
-
-    Add API s_page_delete_objects() to delete all OBJECTs on a page
-
-commit 921a39edd130ed3bbfe83d9c39c3a9085c405d9a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 21:21:03 2008 +0000
-
-    Remove function o_delete(), which just wraps o_delete_object()
-
-commit b211658fcddb84828c437a65bf6bd73fcc4b1918
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 20:40:15 2008 +0000
-
-    Remove unused "toplevel" argument to s_conn_* functions
-
-commit c13d8d0cee5f8d6695b5a8a6592a144bbacf86a2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 14:23:55 2008 +0000
-
-    libgeda: Minor edit to prototype for o_attrib_return_attribs()
-    
-    Use the same variable name in the prototype and the code.
-
-commit 4c6af30bf52cfe9c25057eaca2cf3f2edd7e76c3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 13:25:25 2008 +0000
-
-    libgeda: Tweak o_save_objects() so it can be used to save attributes
-    
-    This allows us to use o_save_objects() recursively for saving attributes,
-    and remove o_save_attribs() which was otherwise almost identical.
-
-commit 955a025379dae2a1c39b31a4653e7daa335013ad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Dec 11 13:25:15 2008 +0000
-
-    libgeda: Fixup doxygen comments for o_complex_get_toplevel_attribs()
-
-commit beeb987b7d7858bbc4956f8f2d9a5fd4a894a158
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 19:28:34 2008 +0000
-
-    libgeda: Check for NULL before updating slots after attaching attribs
-    
-    If reading a file which contains an illegal object type (which fails to
-    read), then contains syntax attaching attributes to that object, we may
-    attempt to update the slot on a NULL, or incorrect object.
-    
-    Updating slots on the wrong object is harmless, but causes a crash for
-    NULL objects. Check for the NULL pointer before doing the update.
-    
-    Also check for NULL before handling embedded object data, and set
-    new_obj to NULL when we read an invalid object.
-
-commit 38ce8aae73beec00d603e4cda0ca5eee738a3cb8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 19:23:22 2008 +0000
-
-    libgeda: Abstract removing objects from the page with s_page_remove ()
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit 6e5b34f6b333158481c67a031353cb8a8b4ba7e3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 13:56:19 2008 +0000
-
-    libgeda: Add doxygen comment for s_page_append()
-
-commit 33b897881891a4a7bce7fab0db73f4923d701cbd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 01:46:06 2008 +0000
-
-    libgeda: Fix build error in s_page_append()
-
-commit 9dd241d9f87ad78f27772e9490d3afa2a80621bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 01:38:21 2008 +0000
-
-    libgeda: Add convenience function for adding objects to the page
-    
-    Adds s_page_append() which links the passed object to the end of the
-    page's object list.
-
-commit d089b532b3b5ca2b5e155a23994ed35fb85ec4a5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 18:42:41 2008 +0000
-
-    libgeda: Make box and circle hatching functions public
-    
-    Allows them to be used in the GUI for hatching these objects.
-
-commit 2f5b7e9d890953680caa4fa111c31a0be4123d97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:16:20 2008 +0000
-
-    Adjust MINGW32 specific CFLAGS from the suite
-    
-    Console applications should not build with the -mwindows flag, otherwise
-    output reach the console. Conversely, we should build the GUI apps, gschem
-    and gattrib with -mwindows so they don't bring up a console window when
-    running.
-
-commit 7648acbe63cf2b12e9afd3dbb4456cb4ee02512e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:44:42 2008 +0000
-
-    Make functions in m_polygon.c public
-
-commit 0542fb0af9756b35641b6683dc3301bda9e4d792
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:44:36 2008 +0000
-
-    Revert change which moved sPOINT into a private header file
-    
-    This structure is needed in gschem for interacting with the
-    polygon routines in m_polygon.c
-
-commit c01757cd814e7c92cb4c64a6e134aa670b9750d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:29:11 2008 +0000
-
-    Add rendering code to draw hatched fill in paths
-
-commit 42b77331701214e518a9249e07b0e04c6c6d501b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:29:08 2008 +0000
-
-    Better path printing support
-    
-    Allow printing of hatched paths thanks to Ed Hennessy's code to
-    hatch arbitrary polygons.
-
-commit 7ad1508b5dfa3a38f30176a72b288d5eb68f5050
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Mon Dec 8 16:29:05 2008 +0000
-
-    Implemented distance selection mechaism for path objects
-    
-    This patch implements the distance calculation to path objects that may
-    include both line segments and Bezier curves.  Also, the distance from
-    a point to a line (o_line_shortest_distance()) is enhanced to handle the
-    case where both endpoints are equal.
-    
-    Minor formatting edits by Peter Clifton
-
-commit 53193798aec9d4f833126b3e7d7811511c8b2cf3
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Mon Dec 8 16:23:40 2008 +0000
-
-    Path selection and hatching support
-    
-    Added utility functions for path selection and path hatching.
-    
-    Edited to s/POINT/sPOINT/ and other minor formatting mods by Peter Clifton
-
-commit 2155126bafe11b36ca5dfaa1a9c0a06a63f136ee
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 16:18:23 2008 +0000
-
-    libgeda: Fix doxygen headers to start consistently
-    
-    Use the "Qt" style /*!  */ rather than the JavaDoc style /**  */
-
-commit 0545db388236ea7a7aaa49d8911ad96481b4978e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 7 17:33:46 2008 +0000
-
-    Remove some old comments better explained in commit history
-    
-    Comments annotated with a dates and developers initials clutter the
-    code with historical details people may be reluctant to remove. Not
-    all of these are still relevant, and those which are should probably
-    could be kept in such a way as not to suggest code ownership. The
-    commit revision log is a better place for determining authorship.
-    
-    Fix some whitespace in surrounding areas where I couldn't resist.
-
-commit 27ce6d5531d9dac2bf6c1933df6ba6ff88c3d2ae
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 7 17:13:04 2008 +0000
-
-    o_..._read(): Remove redundant variable assignemnt and tidy whitespace.
-
-commit ae116565a078a4f781ca5c32944d0b8193d1c3d2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 7 16:59:02 2008 +0000
-
-    libgeda: Consistent tab/spaces and sort order in Makefile.am
-
-commit 31c00dd1779cfe122951c29b2632e2ad838d423a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 24 14:59:55 2008 +0000
-
-    libgeda: Don't prompt to run g{sch|sym}update on version 1 files
-    
-    These utilities were designed for upgrading files prior to the
-    introduction of numbered versions, and running these utilities
-    could be damaging to people's version 1 schematics.
-
-commit 3f607ec3eefd9477d277747be089ac94e5afbd57
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 24 01:35:02 2008 +0000
-
-    Use g_get_home_dir() if we can't find the HOME environment variable.
-    
-    NB: We can't just use g_get_home_dir() on its own without changing
-    semantics. g_get_home_dir() prefers the home directory specified
-    in the passwd file, over $HOME, so we try looking for the HOME env.
-    variable first.
-    
-    BUT: some places in gEDA do just call g_get_home_dir() directly.
-    Ideally we should tidy these up to be consistent at some point.
-
-commit 4e4ea9e5fae8436e6e830965fbb5f8b60f191d64
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 23 14:24:20 2008 +0100
-
-    doxygen: documentation for s_page, o_attrib and o_basic
-    
-    Added overview pictures for the page system the attribute object
-    relation and some docs for the basic OBJECT.
-    
-    This commit aims to be an updated replacement for Stuarts
-    great overview diagram: gEDA_Structures_20050108.pdf
-
-commit d2ab7cfcc4dd21e06a3d2e9ac6d756b7968c0b7a
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Tue Nov 18 22:33:45 2008 -0500
-
-    Use the SHELL variable to locate a shell for icon-theme-installer
-    
-    /bin/sh on some systems like SunOS (solaris) is too broken but in those
-    cases SHELL is typically set to a functioning shell like /bin/ksh.  This
-    repairs the install on "shell challenged" systems.
-
-commit 626cf786f28b1c8f5f7727f30576947de1e30509
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Nov 13 23:17:00 2008 +0100
-
-    doxygen: libgeda text and and font documentation
-    
-    Added some more detailed description and pictures to the
-    o_text_basic.c file.
-
-commit 1d9a97190ebf91c11ae29bbab69c4871033f92bb
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 9 18:23:04 2008 +0100
-
-    libgeda: rewrote parts of o_text_create_string [#2247421]
-    
-    Fixed the text overbar issue if the negation line spans over
-    more than one line:
-      \_negation line
-      with newline\_
-    
-    Rewrote the logic of the function, splitted it into a state
-    machine part and an exectution part.
-    
-    It's much easier now to follow the meaning of the code, now.
-
-commit 4cb7cfe82698bb20f0afc92bb354415143ec4a8c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 9 17:11:03 2008 +0100
-
-    libgeda: fixed text read function for fileformat version 2
-    
-    Reading multiline text with file format 2 failed.
-    This happend because the file format was checked for version 1.
-    
-    Let's check for a file format verion greater than 1 for the
-    multiline text feature.
-    
-    The bug appears since the file format version bump in
-    c2c94821ec6c9a83d0144adad7f6fa190f403af3
-
-commit c2c94821ec6c9a83d0144adad7f6fa190f403af3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 3 00:23:52 2008 +0000
-
-    Bump fileformat verison to 2
-    
-    Since we've added path support, we need to bump the file-format
-    version before any new release is made.
-
-commit beae647a1e0217dc5802084a6e00522a59ad5a28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 2 20:20:32 2008 +0000
-
-    libgeda: Emit each segment of paths on separate lines
-    
-    This allows greater redability of the path output, and simpler
-    diffs when a single control point changes.
-    
-    Update the stock symbols which had paths emitted on a single line.
-    Both read-back fine, but its best that we ship symbols in a state
-    where a load / save cycle would not change the formatting.
-
-commit b6f3379b8144b72492e3a9922939ba99ab4d4480
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 2 19:47:37 2008 +0000
-
-    libgeda: Attempt to fix f_nomalize_filename for win32 systems
-    
-    Patrick's re-written code for this made the assumption that the
-    root portion of an absolute path in windows is 3 characters long,
-    e.g. C:\. This is an invalid assumption to make.
-    
-    Unfortunatey, g_path_is_absolute() regards paths such as \foo as
-    absolute, from which our code then assumed it could strip off the
-    first 3 characters. There are also UNC paths such as \\server\share\
-    where the root portion is an arbitrary length, which would not be
-    handled correctly.
-    
-    g_path_skip_root() is aware of these details, and could be used to
-    pick out the root portion of a path accurately, but it doesn't help
-    in all cases. We could use it to determine that we need to add a
-    current drive-letter to a "semi-absolute" path without one, however
-    there is also the case with a path such as "C:foo", where we would
-    need to insert the CWD from a particular drive.
-    
-    Path            ->  Root
-    ----                ----
-    \\srv\share\foo ->  \\serv\bar\  (fine, path is absolute)
-    C:\foo          ->  C:\          (fine, path is absolute)
-    C:foo           ->  C: (?)       (needs current directory from drive C)
-    \foo            ->  \            (needs current working drive or UNC share)
-    foo             ->               (needs current working drive and directory)
-    
-    Rather than trying to implement the logic to normalise paths on
-    Windows, conditionally compile in usage of the Win32 API function
-    GetFullPathName() when _WIN32 is defined. This implementation is
-    slightly modified from the Windows portion of libiberty's lrealpath
-    function. (GPL V2+).
-    
-    f_normalize_filename() now differs slightly in its sematics on Win32,
-    as GetFullPathName() doesn't require or check that the file exists
-    on disk. We could add this feature if it turns out to be required.
-
-commit 35c1fad3cfab34053fcd850e2a0208db54558baf
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 2 14:59:14 2008 +0100
-
-    remove unused print functions from o_text_basic.c
-    
-    The following functions are obsolete:
-      o_text_print_text_width,
-      o_text_print_text_height
-      o_text_print_text_height_full
-    
-    They are no longer used since the rework of the postscript code in the
-    commit 1b6e818196f268a3ea1fca7135e413147a36ed6a by Mike Jarabek
-
-commit a0bd1fa71f376b01212f655bfdcd9da4fb046868
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 2 14:42:56 2008 +0100
-
-    doxygen: documentation for libgeda o_text_basic.c
-
-commit ad9d7ca705f1135a957d6e76244b164e94328ef1
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Nov 2 11:13:32 2008 +0100
-
-    remove unused defines from o_text_basic.c ...
-    
-    and move some variables in front of all functions
-
-commit 2f30918c3ae433204df9149e6b494b32e2db8559
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 28 22:20:36 2008 +0100
-
-    doxygen: libgeda: fixed more warnings from the doxygen log
-    
-    added some documentation, too.
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit 2c2bfc91b4cff115df6528d375042096d8046664
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Placeholders for fixing some warn-unused bugs in libgeda
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit f9f3eec945746a3f1ed6683fb861d21c4e8a2048
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 15:47:01 2008 +0000
-
-    libgeda: Remove obsolete bug comment from getcwd call.
-    
-    getcwd call was replaced with g_get_current_dir() call in
-    commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-
-commit 01a544083a1161bfae9a976962823488e09b0ed7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Oct 27 00:19:19 2008 +0000
-
-    libgeda: Split sPOINT definition into new struct_priv.h.
-    
-    sPOINT is unused outside libgeda itself, and is not a member of the
-    public API, so hide its definition in a private header file. There are
-    probably many other structure definitions which are also candidates
-    for being moved into the newly-added struct_priv.h.
-
-commit 3741fec77dde128ad41921926a1f5c26f8b32d9f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Oct 27 00:19:16 2008 +0000
-
-    libgeda: Get rid of more unused color stuff.
-    
-    
-    There are some completely unused externed declarations in libgeda
-    relating to colors. Remove them.
-
-commit 9cf8c8ac92c43eb50f2639c576722a287e73017f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 20:07:12 2008 +0000
-
-    Rename POINT to sPOINT (as used in m_basic.c), to avoid clash on win32.
-
-commit f7b1d8d15b0e7679332f4ab3695676aba0f890fd
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 26 18:06:10 2008 +0100
-
-    doxygen: misc fixes of doxygen warnings
-
-commit 8898cd06ea5e7faffe349fcf6cba4660f6557d18
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 26 17:35:13 2008 +0100
-
-    doxygen: documentation for libgeda o_complex_basic.c
-
-commit bbb3342a28c451bc40b7fa5406e5698ee3433dcb
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 26 15:12:38 2008 +0100
-
-    libgeda: removed unused box macros in o_box_basic.c
-
-commit d4c19f00f07050376c4ddac731d7569983a1817d
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Sun Oct 26 10:45:54 2008 +0000
-
-    Changed postscript output functions to use generic hatch algorithms.
-    
-    Changed both box and circle postscript output functions to use the generic
-    hatching algorithms.
-
-commit 69cf1b86ca4c8e4011efdbdaab3b4f858980714b
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Sun Oct 26 10:45:28 2008 +0000
-
-    Added functionality to hatch arbitrary polygons.
-    
-    Added functions to hatch arbitrary polygons.  This patch also includes functions
-    with similar signatures to hatch boxes and circles.  This patch also includes
-    geometric transformations, which is required by the hatching functions.
-
-commit 49536f111d55100ea12574a445264074fee321e3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Oct 26 10:42:58 2008 +0000
-
-    Add place-holders for printing paths with different line / fill styles
-    
-    Currently, paths are always drawn with a solid stroked outline, and
-    only solid filling is implemented.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit 19765672b4293cae3cf7237a633f7741ce3e4883
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:30 2008 +0000
-
-    libgeda: Conditionally include sys/wait.h depending on its presence.
-    
-    Some platforms (e.g. MinGW) do not have sys/wait.h. In those cases,
-    define the WIFSIGNALED, WTERMSIG, WIFEXITED, WEXITSTATUS macros as
-    constants, allowing us to use command backed symbol library sources,
-    but with reduced error handling.
-
-commit d322f0919b078b4ae553224477678008915dfb0c
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:27 2008 +0000
-
-    Add configure test for platform's support of the getlogin() function.
-    
-    If the getlogin() function isn't present on the host platform (e.g.
-    MinGW), don't emit the %%Author comment in libgeda's postscript output.
-
-commit dbd70154fa54654121c200946c161839b28c349f
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 25 22:10:57 2008 +0200
-
-    doxygen: documentation for libgeda o_bus_basic.c ...
-    
-    and some file headers.
-
-commit 15c0ec6270423dc3be610fff89c6e922e0e6975a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 25 21:11:56 2008 +0200
-
-    libgeda: removed duplicate file format definition
-    
-    VERSION_20020825 was defined in o_basic, but it's allready defined in
-    defines.h.
-
-commit e8324b367c8bb23536e72593192b53723d22c3d4
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 25 10:51:29 2008 +0200
-
-    doxygen: documentation for libgeda o_pin_basic.c
-
-commit 232b3fc9ddbfaa67bf2552c4cf6dc47a736fec3e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Oct 23 21:48:33 2008 +0200
-
-    doxygen: documentation for libgeda o_net.c
-    
-    added function documentations to o_net.c
-    small documentation fixes in s_tile.c
-
-commit 4043c6326d7d56e01cd878a81d1e86c0fcb774b8
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Oct 10 10:33:02 2008 +0200
-
-    libgeda: apply GList usage of always-promote-attributes [#2072230]
-    
-    Changed all variables from char* to GList*.
-    Changed initialisation of that variable.
-    Use the GList in o_complex.c to check the list.
-
-commit a4144872c28b3d4f8d192aa31f10e77eed811542
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Oct 10 08:59:42 2008 +0200
-
-    libgeda: always-promote-attributes: accept list and string [#2072230]
-    
-    The function g_rc_always_promote_attributes accepts list and strings
-    now. The space separated attributes in a string are marked as
-    deprecated. The user should use a scm list in future.
-
-commit 2e83bf2b37e093578088eef616e15ee361e85199
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 20:01:50 2008 +0100
-
-    Remove legacy PNG color specifications.
-    
-    The configuration files provide a way of specifying colors for PNG
-    output, but these are never used -- the PNG output just uses the same
-    color map used for on-screen display. Remove the redundant
-    specification and associated data structures completely.
-
-commit ee89ff1fbf0364843861c0797bb4f0d3a425e5fe
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 20:09:09 2008 +0100
-
-    libgeda: Remove COLOR.image_color and two unused functions.
-    
-    The image_color member of the COLOR struct is never used. Remove it.
-    Similarly, the s_color_get_name() and s_color_image_int() are unused
-    and therefore removed by this patch.
-
-commit bbe251bc64ed2db2976a26116d22a69fe678b9fd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Oct 25 18:57:16 2008 +0100
-
-    Get rid of s_color_get_index().
-    
-    This function is very clearly the Wrong Thing, and could potentially
-    result in incorrect color indices ending up in schematic files if two
-    or more color map entries have the same value.
-    
-    This patch removes the function entirely, and modifies the Scheme code
-    which uses it to simply pass color indices around instead. Note that
-    the results of s_color_get_index() were never actually *used* in the
-    existing code.
-
-commit 2a4fdb13021d0153e788fe3b2fc005f273dcdf4b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Oct 21 16:52:09 2008 +0100
-
-    Validate calls to scm_c_eval_string(). [2105219]
-    
-    Because the reporter's version of Guile is broken, a lovely garbage
-    collector segfault occurs if a null string is passed to
-    scm_c_eval_string().
-    
-    For now, wrap all calls to scm_c_eval_string() with mutable arguments
-    in g_scm_c_eval_string_protected(), and since the latter function
-    seems to behave when passed a NULL string this bug should just go
-    away.
-
-commit 67b4f6d41a25e4847f0f611512c1c44887a18d49
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 18 16:04:20 2008 +0200
-
-    libgeda: memory leak fixes in s_clib.c and o_text_basic.c
-
-commit cfd3bf75707dc8d031deb58d6edea3936384b027
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 18 11:14:42 2008 +0200
-
-    Makefile to convert svg images to png and pdf
-    
-    If inscape doesn't work, try convert.
-
-commit e10b58d0b01553a1c600ef3a9532d1615171ff78
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 18 10:44:46 2008 +0200
-
-    doxygen documentation of st_tile and s_tile.c
-    
-    added svg images for s_conn and s_tile
-
-commit 8731bb244e698f067ee18ad932240ba2b266a007
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Oct 17 20:11:46 2008 +0200
-
-    doxygen comments for the connection system st_conn and s_conn.c
-
-commit 80ef18d6f79a12ba5a4d9269d0a77c0fa45217f4
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 14 19:36:03 2008 +0200
-
-    doxygen: fixed UTF-8 encoding error
-    
-    generating libgeda pdf docs failed because of some non-UTF-8 characters.
-
-commit f0a96de8b545dbd900e87db6abf54a0b6df830ab
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Oct 11 09:02:03 2008 +0200
-
-    .gitignore: log files and source tagging files added
-    
-    Added the files of the "global" source tagging program
-    and the logfiles of the gEDA programs to .gitignore.
-
-commit 0a823197e4d511cc5fdfb38013808847781dd2f5
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Oct 10 18:15:06 2008 +0200
-
-    libgeda: changed object adding flag for embeded symbols [#1692626]
-    
-    Copying embeded symbols in gschem had ghost connections. When copying
-    objects into the place buffer, the ADDING_SEL flag has to be set.
-
-commit 92f154a486073fe0a0b224469d7e17a680985283
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 23:12:05 2008 +0100
-
-    Fix memory leak introduced in o_complex_get_promotable()
-    
-    Need to free the GList of attributes returned from
-    o_complex_get_toplevel_attribs().
-
-commit 9c79c0782ad64813a6a302f185299403853d1386
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 22:05:13 2008 +0100
-
-    Clean up o_complex_get_promotable and o_complex_is_eligible_attribute
-    
-    Use a helper function to get the list of toplevel attributes, then filter
-    down.
-
-commit d8c1f320b40451a1a83b7c442c8dc376d3d0f4e1
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Wed Oct 8 22:01:10 2008 +0100
-
-    libgeda: function to get all unattached attributes
-    
-    New function o_complex_get_toplevel_attribs() that returns
-    a GList of all text objects that are not attached to other objects
-    like pins, nets.
-    
-    It will be use to get all attributes from a symbol.
-    
-    (Slightly modified due to merge conflict by Peter Clifton)
-
-commit bd149a6b4797272b362ecf48a7044f0bfbf0f4bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 21:57:47 2008 +0100
-
-    Remove un-necessary "attribute" flag of OBJECT structure.
-    
-    Attributes can be detected just as well by looking at the
-    OBJECT->attached_to pointer.
-
-commit 47bc5e1dcd9ed7e47c600567afe1862fa8c2a63d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 21:55:47 2008 +0100
-
-    libgeda: o_save_objects(): Don't make un-needed casts of return values
-    
-    Casting just hides real bugs. The return values, and the type being
-    assigned are the same - no need to cast.
-
-commit 7188a0ad5b8ab28a5dd8c60141b5e5b36d1b0690
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 8 21:30:05 2008 +0100
-
-    When copying text in o_list_copy_to(), there is no need to set visibility.
-    
-    o_text_copy() copies the visibility of the object being copied, so the code
-    following the call to o_text_copy() was a NOP:
-    
-      if (selected->attribute &&
-          selected->visibility == INVISIBLE) {
-        new_obj->visibility = INVISIBLE;
-      }
-
-commit 2b36577f5634ff99e919773c4e34aa2e39dbce51
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 28 14:09:50 2008 -0400
-
-    Added code to do something more sane when trying to print tabs
-    
-    Previously if a tab character was encountered in a text string, the
-    postscript output code would output a Y with a dot on top.  This is
-    clearly not a tab character.  The patch adds explict handling of the tab
-    character to output 8 spaces instead.  Not perfect, but better behavior
-    than before.
-
-commit fa9ee5f3a5776cda1df419457864c0e51d8585b4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:58:53 2008 +0100
-
-    libgeda: Add scm_c_define for "OBJ_PATH" type for consistency. (CODE)
-    
-    This was missed when path support was introduced.
-
-commit 900274f0d6b08031f7cfc18a332da6b1939a44d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:55 2008 +0100
-
-    Fix non-literal format strings which cause compiler warnings.
-    
-    We should be careful to avoid passing arbitrary strings into functions
-    which take printf style arguments. In that case, always use the construct
-    ("%s", string) rather than passing string as the format argument.
-    
-    Some cases were fixed by using g_strdup instead of g_strdup_printf(),
-    some simply replace printf() for puts().
-
-commit 3f780a7f86e4c994c108146898419f4708e7fc48
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:54 2008 +0100
-
-    libgeda: Fix object fill breakage caused when making o_..._new()
-    
-    Ensure we call o_set_line_options() and o_set_fill_options() on the new
-    object directly. In a couple of places, "object_list" was used, but the
-    code in commit #2550db8e1d981ccab55b7f2ae6e9932198a53b59 meant that the
-    new object wasn't yet linked into that list.
-
-commit d424abcf4e93934fd6268d9cb186f7415e0e83c2
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 28 13:21:42 2008 -0400
-
-    Removed unused OBJ_ROUTE and OBJ_THRU_HOLE object types
-
-commit 635d287d3d0d41d431a88d7164c2de2b536c241a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 14:28:05 2008 +0100
-
-    Fix path printing to obey the (output-color "enabled|disabled") setting
-    
-    Bug noted by Ales during testing. Thanks!
-
-commit 53439f075b0be1edd2ae18e34f8a0f8f4d503e08
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 14:27:59 2008 +0100
-
-    Rename "path" object identifier in the fileformat from "p" to "H"
-    
-    All other OBJECT type identifiers are upper case, and for consistency,
-    now patHs are too.
-    
-    NB: No releases have been made since path support was added, so this
-        change is still permissable.
-
-commit b7f477143e79138c4d5d33e1dec1421b8419791c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 01:03:12 2008 +0100
-
-    Make o_..._copy () return the new OBJECT without linking it into any list.
-    
-    Allows cleaner use of objects where we might want to insert the copied
-    object into a GList rather than a self-linked list of OBJECTs.
-
-commit 2550db8e1d981ccab55b7f2ae6e9932198a53b59
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 01:03:06 2008 +0100
-
-    Make o_..._add() into o_..._new() which don't link the new OBJECT.
-    
-    Allows cleaner use of objects where we might want to insert the object
-    into a GList rather than a self-linked list of OBJECTs.
-
-commit 70e6c7c4e5c765a30137c0f93b4ec08fd5802030
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 01:02:59 2008 +0100
-
-    Add critical warning for unknown object types in o_list_copy_to ()
-    
-    This makes the switch on object->type consistent with many of the other
-    functions which use this construct.
-
-commit 46b923ea26b1732c757267e77c514d15912a1514
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 01:26:27 2008 +0100
-
-    Fixup copy-paste comments in o_path_basic.c
-
-commit 1fffc27a3b62cc32a70edcc1ee89ff458318c6bc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 00:57:52 2008 +0100
-
-    Add support for arbitrary paths (filled and unfilled)
-    
-    The data-structures and on-disk format (which utiliseSVG style path
-    strings) support stright line and bezier curve segments. Paths can be
-    closed or open, and store line style and fill information in common with
-    other geda objects.
-    
-    The path string parser is based on (slightly modified) code from librsvg
-    version 2.22.2 (LGPL). Code from rsvg-path.c and rsvg-bpath-util.c
-    (Copyright (C) 2000 Eazel, Inc.) was combined to form libgeda/src/s_path.c.
-    These have been modified to use gEDA defined path data structures.
-    
-    The rendering implementation is based upon a small porion of the function
-    rsvg_cairo_render_path (..) from rsvg-cairo-draw.c
-    
-    The parser still retains support the full richness of SVG path strings,
-    although all instructions are subsequently normalised on to move, line, bezier
-    and "close path" records. This support retained for convenience when entering
-    artwork (which can be copied from an SVG editor). When saved, normalised paths
-    are written out.
-    
-    The current rendering and shortest-distance computations are limited to
-    straight line segments. Bezier segments, where encountered are treated
-    as a straight line between their two endpoints.
-
-commit 699f46d8a598c1cfa972f0ddf80e39d18c907ece
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 00:57:37 2008 +0100
-
-    Fix f_print_set_line_width() to emit valid postscript
-    
-    Previously this function emitted "%d mils setlinewidth\n". The "mils"
-    portion seems to be left over from previous printing code, as "mils"
-    isn't defined to be anything in prolog.ps, nor in the headers we emit.
-    Our units are scaled to mils, so we can just emit "%d setlinewidth\n".
-
-commit ec2e929742bb682be52d02818916b1f57c343e48
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 24 01:07:37 2008 +0100
-
-    libgeda: Set complex_parent on all prim objects, not just their HEAD node
-    
-    Allows a primitive object inside a COMPLEX to be linked back to the
-    COMPLEX without traversing to the HEAD node of the prim_objs list.
-
-commit 45efb32383b15576cc98a95e1d93d44793e6f2e8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 22 01:54:24 2008 +0100
-
-    Move calls to attribute promotion code from inside o_complex_add()
-    
-    Previously o_complex_add() would perform attribute promotion or delete /
-    hide eligible attributes depending on the "attribute_promotion" argument
-    passed to o_complex_add(). Break these into separate operations:
-    
-    1. Get / add to OBJECT list, a single complex object with o_complex_add().
-       This object has its prim_objs exactly as the symbol exists on disk.
-    2. EITHER:
-         Promote the eligible attribtues with o_complex_promote_attribs().
-         (For GList based processing use o_complex_get_promotable(), attach
-          the returned objects as attribs and place in the appropriate GList.)
-       OR:
-         Delete / hide eligible attributes with
-         o_complex_remove_promotable_attribs()
-    
-    All behaviour relating to attribute promotion should be identical after
-    this commit. If not, it is a bug should be reported. (This includes the
-    insertion order of the OBJECT and it's attributes into the object list).
-
-commit 806065ae428b105340fc6380918514bfe9746d86
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:34:14 2008 +0100
-
-    libgeda: Remove unused function o_list_search()
-
-commit 9993a0c13cc1b1aa5bb0c61a7355e89cd8f37fca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:33:03 2008 +0100
-
-    Remove un-necessary use of o_list_search()
-    
-    g_make_attrib_smob_list() and o_attrib_return_attribs() are passed the
-    object they are operating on directly. There is no need to prove it can
-    be found in the object list as well.
-
-commit 52fe25b3614b70a3ab059ecd1f980ddde447d108
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:32:53 2008 +0100
-
-    libgeda: Remove unused function o_list_delete()
-
-commit 0090ef6ff6e9adfc8ab48d7d7aa110dbab1bed79
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:25:00 2008 +0100
-
-    libgeda: Add convenience function o_attrib_attach_list()
-    
-    Calls o_attrib_attach() for each item in the passed GList
-
-commit 68e398b00526dacc4ce1d610af192d4a2977db4d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:24:59 2008 +0100
-
-    libgeda: Tidy / simplify o_glist_copy_all_to_glist()
-    
-    Since we no longer have to pass o_attrib_attach() a linked object list
-    for it to find the attrib to attach, we don't have to link the objects
-    up as we copy them, and can call o_glist_relink_objects() at the end.
-
-commit 1745bca0359488bb6f8bd06d84f7ae952e48d665
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 17 19:24:59 2008 +0100
-
-    Remove unused TOPLEVEL variable object_parent
-
-commit 7baf5c629eb620e7db9b3fa5837cc07bdfe29f4f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 21:36:35 2008 +0100
-
-    libgeda: Tidy o_attrib_attach() harder
-    
-    Remove searching in parent_list for the attribute we're about to attach.
-    This check isn't needed, we were passed the attribute as an argument.
-    Let the caller be responsible for making sure it is linked into the
-    appropriate object list.
-
-commit 6b78047686ad919b90b8119250acde3f50bd3dc8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 21:33:09 2008 +0100
-
-    libgeda: Remove assertion buffer != NULL in o_read().
-    
-    buffer should never _be_ NULL since we catch errors from
-    g_file_get_contents(), but if somehow it was, the error is
-    caught more gracefully in o_read_buffer().
-
-commit 78224abe91c881df499244aff2691432f0e61b55
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Sep 11 21:31:30 2008 +0100
-
-    Change f_open_flags to only return FALSE when the return GError is set.
-    
-    Callers assuming the GError is set when we return FALSE may crash
-    if we return FALSE without setting it. Such a crash was noticed with
-    development code where o_read() returned NULL without setting the GError.
-    
-    In the current code, o_read() should never return FALSE without setting
-    the GError, and those cases where it could potentially in the future are
-    g_return_val_if_fail() constructs used to detect programming errors.
-    Programming errors are NOT meant to be reported via the GError mechanism.
-    
-    Call o_read() with a temporary GError, so we can still return FALSE from
-    f_open_flags() if we encounter a problem and the user has passed
-    err = NULL, disabling detailed error reporting.
-    
-    Don't test for NULL returns from o_read(), continue as if the page loaded
-    was empty. If o_read() were to return a GList in the future, these errors
-    become indistinguishable from an empty list. Tests returning NULL
-    should log appropriate error messages via g_return_val_if_fail().
-    
-    Since we don't test it, don't assign the return value of o_read() to the
-    page's object_tail. We already re-assign object_tail based on walking the
-    linked list from its head anyway, so there is no need.
-
-commit eb77a42fd47ae8dfd8218fadca1eb1ab6fd6b8e0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Sep 9 01:23:03 2008 +0100
-
-    Fix error message given when file cannot be found.
-    
-    The codes used in the GError are not the same as those returned in errno.
-    Construct our message using the string from the GError, rather than
-    incorrectly using the GError's code with g_strerror.
-
-commit 0726171f20b716c9de69d0ae843b338d78ac22ad
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 7 23:37:45 2008 +0100
-
-    Add comment in s_page_delete() regarding toplevel->page_current
-    
-    The page being deleted still has to be made current because of
-    assumptions made in s_delete_object()
-
-commit 3f6f9afbb9eb6770520f785e094169d9f2b164dc
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 7 23:37:45 2008 +0100
-
-    Re-add wanted portions of #95923f7de815ec58819eaf94ab9332d51a28fbb9
-    
-    Simplify prototype of s_tile_remove_object().
-    
-    Don't pass TOPLEVEL and PAGE arguments which aren't needed.
-
-commit e350d47b39bd358f55949e787511eab54b0048be
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 7 23:37:45 2008 +0100
-
-    Revert commit #95923f7de815ec58819eaf94ab9332d51a28fbb9
-    
-    This commit, "Simplify prototype of s_tile_remove_object()."
-    removed code to make a page being deleted the current page.
-    
-    This change introduced a crash when closing gschem with multiple
-    pages open. We shouldn't really need a page to be current to delete
-    it's objects, but this is an underlying bug which should be fixed
-    before this part of the patch is re-applied.
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit 24ca3cf1c066ae4b21d4834ae0d0210fb7a78f91
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Aug 25 02:02:30 2008 +0100
-
-    libgeda: Tidy implementation of o_attrib_attach()
-    
-    Various cleanup and restructuring of the code. Should be identical
-    in functionality, but with an extra g_critical warning instead of
-    a silent return in the case attrib is not found in parent_list.
-    
-    Changed printf to the console for g_warning or g_critical messages.
-    Some of these cases where we can't attach an attribute probably ought
-    to be caught in gschem, in which case we could make these warnings a
-    higher severity, such as g_critical.
-
-commit e9a15f504113e61933fc8ffadc4941b976dabfbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Aug 25 01:03:55 2008 +0100
-
-    libgeda: Make o_list_search() emit warnings if passed NULL pointers
-
-commit 4c335d84aed6c972899de27c7d9d4249aec6761d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:29 2008 +0100
-
-    libgeda: Tidy implementation of o_complex_is_eligible_attribute()
-    
-    Don't pass promote_invisible as an argument, it can be retrieved from
-    the TOPLEVEL * passed instead. Since we have one caller, remove the
-    public prototype and make the function static in o_complex_basic.c
-
-commit a767fbe5a20ef936f98dc91deeb8349e37bb5b94
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:29 2008 +0100
-
-    libgeda: Add convenience function o_glist_relink_objects()
-    
-    This function is used to walk a GList of OBJECTs and ensure that their
-    next / prev pointers chain up to the same objects as in the GList.
-    
-    Make use of this function to make o_complex_add() more readable.
-
-commit 50396f1fecc6f26fc9b8b62fd8e8abef88e4fdee
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:29 2008 +0100
-
-    libgeda: Change "C" attribute promotion defaults to match shipped config
-
-commit c95bd0a1f21be899510e07af28d0190fc09dc469
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:29 2008 +0100
-
-    Remove unused #define DEFAULT_SERIES_NAME ... defines
-
-commit 1ffd8a568339d23a3fe6c17fbb698b455e288805
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 20:41:21 2008 +0100
-
-    libgeda: Fixup some comments about attribute promotion / hiding / removal
-
-commit c8fffac5b00946ae8d709e7947c62893615e1263
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 20:12:08 2008 +0100
-
-    Remove unused toplevel variable "series_name"
-
-commit 04d0eb73a3324d1383ba14bc3ab2834972e041b2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 15:01:15 2008 +0100
-
-    Restore comment about returned strings in o_attrib_get_name_value()
-    
-    Restores a useful comment about string ownership which was removed in
-    commit 872287f23b4880b01babed777efe7976783feab2.
-
-commit 17a95f57912f9ee5ac63044188054948e58332ca
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 14:57:04 2008 +0100
-
-    Restore o_attrib_get_name_value() returning NULL strings on failure
-    
-    Revert removal of this behaviour in
-    commit 872287f23b4880b01babed777efe7976783feab2.
-    
-    If passed a location to return strings, set the pointer to NULL
-    before returning FALSE for an invalid attribute. It provides a
-    potentially convenient means to catch the invalid attribute.
-
-commit 7de36c95b7b8d465024b2767466ed246e5591dc2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 14:56:28 2008 +0100
-
-    Revert allowing attributes with empty value in o_attrib_get_name_value()
-    
-    Another un-wanted change in 872287f23b4880b01babed777efe7976783feab2.
-    Attributes are not legal if they have an empty ("") value part.
-
-commit 70590a2312e2650f61a220980f9cf58bdad88987
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 14:47:05 2008 +0100
-
-    Revert "name = value" space handling in o_attrib_get_name_value()
-    
-    commit 872287f23b4880b01babed777efe7976783feab2 re-wrote this function
-    using UTF-8 string manipulation functions, and changed a test for " "
-    characters either side of the attribute's "=" to use g_unichar_isspace().
-    
-    This g_unichar_isspace() also tests positive for tabs and newline
-    characters, making previously legal attributes illegal after this commit.
-    Revert usage of g_unichar_isspace() in favour of single byte tests.
-    
-    An important property of UTF8 encoding is that the 7-bit ASCII codes are
-    not used within bytes of a multi-byte character. Given the start of a
-    chacacter in UTF8, testing if the first byte compares to the 7-bit ASCII
-    code we want is a sufficient test.
-
-commit 71607a1b433a12192039cb4a0edf62b95c63440c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 19 19:23:05 2008 +0100
-
-    libgeda: Provide definition for do_logging.
-    
-    This allows libgeda to build on systems where shared libraries are not
-    permitted to export symbols that are only resolved at link time.
-
-commit b215d134d1271c6a1723e406f1a0b67be8f59bc6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Aug 17 02:36:35 2008 +0100
-
-    libgeda: Clean PostScript strings.
-    
-    Tools like PSTricks override the PostScript 'show' command to do
-    magic. The existing text code only called 'show' for one character at
-    a time, making such tools very hard to use.
-    
-    This patch draws the overbars for each line, and then calls show for
-    the line as a whole. It also lets overbars be applied over multiple
-    lines of text.
-
-commit 6e8e2e48d54fa3e121d540d86ba1aabf322d3d95
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Aug 17 02:36:35 2008 +0100
-
-    libgeda: Unbreak text accessors.
-    
-    Tests added in 4ad986d333e12980f92325d1a66884bc5b5388fe should have
-    had opposite logic.
-
-commit 908ea935a7bb807927402eb8f5aa6c6a703e1792
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 17 01:34:11 2008 +0100
-
-    Add libgeda/po/POTFILES.skip for intl/plural.c
-    
-    Fixes make distcheck.
-
-commit 3ac41f06858892ececf94264b0f6b6cacfd168a5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 22:28:52 2008 +0100
-
-    libgeda: Add bounds validity flag.
-    
-    Adds a flag to OBJECT marking whether they are valid (i.e. whether
-    they've been updated since the last operation which modified it). Each
-    of the per-type recalc functions is updated to set the flag, although
-    nothing clears it yet (this will be in a later patch).
-    
-    When world_get_single_object_bounds() is called, it checks the flag,
-    and if not set it calls the appropriate recalc function. If the flag
-    is -still- not set, it fails.
-
-commit 4ad986d333e12980f92325d1a66884bc5b5388fe
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 22:28:52 2008 +0100
-
-    libgeda: Use g_return_val_if_fail in text accessors.
-    
-    Almost as good, and improves readability.
-
-commit 1fa51c0ccf1cf09ba184493e9b9aa7670f0752a3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 19:59:57 2008 +0100
-
-    o_complex_add: Remove un-needed save/restore of PAGE->object_tail (CODE!)
-    
-    (* FOR GOODNESS SAKE PETER, TRY TO COMMIT THE CODE WITH THE COMMIT!)
-    
-    toplevel->page_current->object_tail was saved and restored around
-    symbol data loading and subsequent attribute promotion.
-    
-    The PAGE->object_tail is not altered during this block of code.
-    This was experimentally verified during significant "real work"
-    usage conducted with a g_assert() prior to the restore step.
-
-commit 1a1460c65a9d4e0aee35e39fff0f083c95bd380d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 19:18:24 2008 +0100
-
-    Remove the ATTRIB struct as it only contained one variable.
-    
-    The OBJECT.attribs GList now points directly at the text objects which
-    hold and display the attribute name and value.
-
-commit df8478a9706694220919f3e3f6304a351a7eca68
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 18:10:21 2008 +0100
-
-    libgeda: Add static update_disp_string() function.
-    
-    Adds update_disp_string() to o_text_basic.c, to reduce code
-    duplication between o_text_recreate() and o_text_add().
-
-commit e44826c49a0db40b0c5e981431fd005b6e8d9048
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 18:08:31 2008 +0100
-
-    libgeda: Add field to TEXT for storing displayed string.
-    
-    Sometimes, the string to be displayed is different from the whole
-    string contained by a TEXT object (for instance, when an attribute has
-    either its name or value unshown). When using "real" fonts we don't
-    want to fix this up each and every time the string is rendered, so
-    it needs to be stashed somewhere.
-
-commit 89c9af836536c13d97fde7d8b408e084f4b0e1d5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 18:04:22 2008 +0100
-
-    libgeda: Add accessors to get/set a text object's string.
-    
-    In later commits, direct application accesses to the string in the
-    TEXT structure will be removed.
-
-commit efedc62995467645feb5800485783c677730cc40
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 16:05:07 2008 +0100
-
-    libgeda: Remove deprecated include <guile/gh.h> from o_picture.c (CODE!)
-
-commit 288d9e67af83f03534398319d0e8ad16fa631fb0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:48:00 2008 +0100
-
-    Move gschem defines from libgeda into gschem/include/gschem_defines.h
-    
-    Whilst we're at it, remove some unused definitions.
-
-commit 51843b80f3ab5b2d5f0a3cb52bb09b9001ae80ae
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:48:00 2008 +0100
-
-    libgeda: Delete unused #define's from libgeda/include/defines.h
-
-commit 692a7d38eac4800e355623fe9cbbbf4ffb7c412d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:47:59 2008 +0100
-
-    libgeda: Remove gtk header includes from libgeda.h and libgeda_priv.h
-    
-    Libgeda doesn't use Gtk, only a small spattering of Gdk. Improve
-    cleanliness and compilation time by removing those header includes.
-
-commit 2e87904a34cd5ad58bc8a9511dd5915adf9df405
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 16 15:47:58 2008 +0100
-
-    libgeda: Rename gtk_[outline_]color variables gdk_... to their types
-    
-    Also added NULL initaliser for gdk_outline_color which was missing.
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 938cdb93795422fceb56ee3b88bffd1602f8cdf4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 14:09:03 2008 +0100
-
-    libgeda: Only update bounds in o_*_recalc()
-    
-    Some constructors & modification functions were updating directly
-    rather than calling the appropriate recalc function to do it.
-
-commit 62a38eefd8d3d9f84d8aeb78e2a1e365080d819c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Aug 15 22:48:11 2008 +0100
-
-    Make some string arguments const.
-    
-    In a few places, strings are being passed into functions and no
-    changes are made to them. Mark these arguments as const.
-
-commit b47f576ff69476362941eaa7ad592e6d98ec233f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Aug 15 18:46:20 2008 +0100
-
-    libgeda: Tidy up o_text_recreate() a bit.
-    
-    Mostly by adding a local variable with a pointer to the current
-    OBJECT's TEXT struct.
-
-commit 675738b3b7a0c37e3511297040c3abc59619dd0c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    libgeda: Hide o_*_recalc() from public API.
-    
-    Applications which wish to force recalculation of an OBJECT's bounds
-    should use o_recalc_single_object().
-
-commit 8f1a084c1e26cc08cdab08a1c44e7e802cbdbec8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    libgeda: Hide world_get_*_bounds() from public API.
-    
-    Applications which wish to retrieve an OBJECT's bounds should use
-    world_get_single_object_bounds().
-
-commit 3c4ccd08c2f08e37cd7b3894a073e2ae4787420a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:11 2008 +0100
-
-    libgeda: Fix unused variable warning.
-    
-    Left over from 7fcd7db7e5b191a0d5024b129ee2c1cda64a82d7.
-
-commit 4c15bbcf06a1840b410f33645d658322c5a38253
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 18:55:55 2008 +0100
-
-    Don't crash on zero snap grid spacing [2026598]
-    
-    If snap grid spacing is set to zero, behave the same as if snap is
-    disabled.
-
-commit 7fcd7db7e5b191a0d5024b129ee2c1cda64a82d7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 07:16:54 2008 +0100
-
-    libgeda: More follow_symlinks() fixes.
-    
-    Make sure that follow_symlinks() plays nicely with files in the root
-    directory, and also with relative paths to symlinks.
-
-commit cfefe89a2b974b9aaa7ff13cb054565c11045b34
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 19:42:06 2008 +0100
-
-    libgeda: Make follow_symlinks() actually use its GError.
-
-commit 16a171a9e37c2234d83fb3c6800370be2dd50ed0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 17:14:44 2008 +0100
-
-    libgeda: Make sure GError properly freed in f_open_flags().
-    
-    There was a corner case where a GError used internally to
-    f_open_flags() wasn't getting freed correctly.
-
-commit 57815bd72e62999193641f301af9184c0d524cf6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 23:30:35 2008 +0100
-
-    Print command is a gschem setting.
-    
-    Move print command from TOPLEVEL to GSCHEM_TOPLEVEL, and move static
-    defaults too.
-
-commit 46eda8a55b9197f7a24d5b04ff94cedc1abc74fe
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 23:06:03 2008 +0100
-
-    Name i_vars_... functions consistently.
-    
-    Apps should use i_vars_blah(), libgeda uses i_vars_libgeda_blah().
-
-commit 7522ef33777ed3f6cec8dbe8b16620657c3edcce
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Aug 13 19:53:05 2008 +0100
-
-    libgeda: Declare static variables privately.
-    
-    Libgeda shouldn't expose its static variables via its installed
-    headers.
-
-commit 0db6ea2341ce7cc8c631df75c4d3c30390590b29
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:55:59 2008 +0100
-
-    Split OBJECT allocation from its initialization.
-    
-    Split memory allocation for OBJECTs out of s_basic_init_object(). Add a
-    new helper function s_basic_new_object() which allocates memory for the
-    OBJECT structure, then calls s_basic_init_object().
-    
-    These changes make it possible to embed an OBJECT structure within
-    another struct, or to initialise an OBJECT in static memory.
-    
-    (Patch modified by Peter Clifton)
-
-commit 6cf89af1dc94790e8671a2c5d760a47a31d3a6eb
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:42:06 2008 +0100
-
-    o_*_translate_world(): Rename x1 and y1 parameters to dx and dy
-    
-    Makes the purpose of these variables more obvious.
-
-commit 02da9f9d11cc04eae292a868172033e3eb6c8147
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:40:56 2008 +0100
-
-    o_{rotate,mirror}_world(): Make error message mention the right function.
-
-commit deca0be214ca709ffd2cedeb75919ffdb1dd232a
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Wed Aug 13 01:40:55 2008 +0100
-
-    s_delete(): Delete code with no effect.
-    
-    If a pointer is already NULL, there's no point setting it to NULL.
-
-commit 17c64b764cb42afc8d5b80a66361029655dd644b
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Aug 12 23:36:35 2008 +0100
-
-    s_basic_init_object(): Set OBJECT type according to new parameter.
-
-commit ff25b0c07dcd59e23721cbf9d09ec2a9f41a935a
-Author: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>
-Date:   Tue Aug 12 23:36:35 2008 +0100
-
-    s_basic_init_object(): Constify argument.
-
-commit 123f5742e323b35169479f0884a66b75104a53ff
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 12 23:14:50 2008 +0100
-
-    libgeda: Remove empty 'scripts' directory.
-    
-    libgeda's 'scripts' directory contains nothing (apart from a
-    Makefile), so get rid of it.
-
-commit 4ef611b6e1cc6eb47538148ce1d196d495313969
-Author: Edward Hennessy <ehennes@xxxxxxxxxxxxx>
-Date:   Fri Jul 18 20:24:46 2008 -0700
-
-    Altered point selection mechanism to use distance instead of just a bounding box.
-    
-    This patch improves the mechanism used to select objects when using a single
-    point.  In addition to using the bounding box, this patch calculates the
-    distance between the selection point and the object itself.  This calculated
-    distance provides a more accurate means to determine the actual object the user
-    selected.
-    
-    Signed-off-by: Peter TB Brett <peter@xxxxxxxxxxxxx>
-
-commit 5d15eddd3e197b2cbc0bc00f9a4c02bc719aa014
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:42:48 2008 +0100
-
-    Clarify temporary assigment of TOPLEVEL->complex_parent in o_complex_add()
-    
-    Move the save/restore of the TOPLEVEL->complex_parent variable in
-    o_complex_add to be closely placed around the call to o_read_buffer,
-    the function affected by this assignemnt. In the previous locations,
-    the scope of influence of adjusting this variable was not clear.
-
-commit c2b96c33851322c236d4582d6bc5d31a3485a7c1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:29:24 2008 +0100
-
-    Remove some redundant instances where TOPLEVEL->object_parent was used.
-
-commit a90588ec6566f944756800f38f74a02f867dca87
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:18:39 2008 +0100
-
-    Remove the TOPLEVEL variable internal_symbol_name which is now redundant.
-    
-    Also removes functions which set and free'd this variable:
-      o_complex_set_filename()
-      o_complex_free_filename().
-
-commit d1ff81f8d8a1d18781f8cb7c4476417947a61cec
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:18:38 2008 +0100
-
-    Remove the TOPLEVEL variable current_attribute which is now redundant.
-    
-    Also removes functions which set and free'd this variable:
-      o_attrib_set_string()
-      o_attrib_free_current().
-
-commit e931091e28f90e7bd0f755ee30665cc5b7461b74
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 03:00:59 2008 +0100
-
-    gschem: Combine code for operations which handle placement of OBJECTs.
-    
-    Replaces duplicated code related to component / text placement, copying /
-    multi-copying objects and pasting from buffers with a common set of
-    routines in the new file, gschem/src/o_place.c
-    
-    This refactoring lays the foundation to allow rotatation / mirroring whilst
-    performing any kind of place action, without extensive duplicate code.
-    
-    All of the above operations now use a new PAGE variable, "place_list",
-    rather than previous specialised variants complex_place_list, and
-    attrib_place_list. Paste-buffer contents are copied into the place list,
-    rather than placing directly from the paste-buffer, ensuring that any
-    rotation / mirroring of the place-buffer does not change the paste-buffer.
-    
-    Helper functions, o_text_prepare_place() and o_complex_prepare_place() are
-    added to load the place list with appropriate text, or a symbol. These are
-    passed as arguments to the respective functions, avoiding the use of state
-    stored in toplevel->current_attribute and toplevel->internal_symbol_name.
-
-commit cc5ea879b0ccfc7815b43b30ddfae13941aff4eb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 29 01:20:04 2008 +0100
-
-    Add OBJECT flag "dont_redraw", to skip drawing individual objects.
-    
-    This flag is to be useful when handling move operations which hide
-    rubberbanded objects on the page whilst a temporary copy is manipulated
-    on screen.
-
-commit 3e08939b12e6298029a9387299dcdf7a9d6db6a6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 28 00:40:11 2008 +0100
-
-    o_glist_copy_all_to_glist(): Only deselect / reselect selected objects
-    
-    Objects are deselected prior to being copied, then re-selected. Check
-    if the object being copied is selected before we try this, as we may
-    want to copy unselected objects.
-
-commit 95923f7de815ec58819eaf94ab9332d51a28fbb9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:39 2008 +0200
-
-    Simplify prototype of s_tile_remove_object().
-
-commit ac56af89f55594a3739c16692bec4e5974848dc1
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:38 2008 +0200
-
-    Replace TILE_LOC structure with list of references to TILEs.
-    
-    Removed structure TILE_LOC: now objects have a list of references to
-    TILE structures.
-
-commit 1cc266bbe45846030205aa8931cea40fe2dbdf3b
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:37 2008 +0200
-
-    Rename s_tile_add_object() to s_tile_add_line_object() and simplify prototype.
-
-commit 7e4d443eea54c8fc19833aa67ae64ed1ffba0e80
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:36 2008 +0200
-
-    Rename s_tile_remove_object_all() to s_tile_remove_object().
-
-commit e2278f9ed3c49d6226e3e721e55a940cbaed53f3
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:35 2008 +0200
-
-    Remove unused function s_tile_remove_object_all_crude().
-
-commit 83de2270e9d0f159975e833e1fec213f952c7315
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 25 17:52:25 2008 +0200
-
-    Remove o_complex_delete().
-    
-    Removed function as s_delete() does the same thing.
-
-commit b86ffc45f699781c220153e2390a54f8b823a930
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:16 2008 +0200
-
-    Refactor hierarchy function searching for parent page.
-    
-    Renamed s_hierarchy_up() to s_hierarchy_find_up_page() for consistency
-    and modified it to return a pointer on the page found (as other
-    hierarchy find functions) instead of changing the current
-    page. Added description. And finally adapted gschem for this
-    refactoring.
-
-commit 06dc1e65b688f88695e47dd38cd9022eb67bbb7c
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:15 2008 +0200
-
-    Simplify prototype of functions for searching pages in hierarchy.
-    
-    Removed 3rd parameter to s_hierarchy_find_[next|prev]_page(): now
-    explicitly search for sibling page of page in 2nd parameter. Also
-    added description for functions.
-
-commit 6b15947087caebaa4c85805799362c169e09adba
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:14 2008 +0200
-
-    Rename s_hierarchy_find_page() to s_page_search_by_page_id().
-    
-    Moved s_hierarchy_find_page() to libgeda s_page.c and renamed to
-    s_page_search_by_page_id(). Also added description.
-
-commit d5b7c5788b0498155b583c40caf7615347e88641
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:13 2008 +0200
-
-    Remove unused function s_hierarchy_down_schematic_multiple() from libgeda.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit 8626a1ed43da05d1b7499c4816eb372f614c0cc5
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:11 2008 +0200
-
-    Remove unused function vsnprintf() from libgeda.
-
-commit c50ba14cea1d60e21d587164612b1866d8e58bba
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:10 2008 +0200
-
-    Replace case conversion functions with GLib functions.
-    
-    Now use GLib case conversion functions, with the added benefit of UTF8
-    support, instead of libgeda string_tolower() and
-    string_toupper(). Consequently these two functions have been removed.
-
-commit a083568359e721485ddeec74fc7a870dc51a9b58
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:09 2008 +0200
-
-    Remove unused color stuff from libgeda.
-    
-    Remove unused function colornametovalue(), and unused color related
-    structure and macro from libgeda s_basic.c.
-
-commit 099ece1d2669a2455501b5ee706df3016653da8c
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:07 2008 +0200
-
-    Cleanup verification of attribute string in libgeda.
-    
-    Modified the test on attribute string in libgeda
-    o_complex_is_eligible_attribute() to use o_attrib_get_name_value().
-
-commit 872287f23b4880b01babed777efe7976783feab2
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:05 2008 +0200
-
-    Cleanup of libgeda o_attrib_get_name_value().
-    
-    Rewrote o_attrib_get_name_value(): it now has support for UTF-8
-    attribute strings ; plus it can return only the name or the value or
-    both name and value.
-    
-    Finally adapted code wherever it can benefits this new feature.
-
-commit 9014bf8d0a429713b642912cddcc29e1c39b9068
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:04 2008 +0200
-
-    Remove unused function u_basic_count_char().
-
-commit 25a40b882113ba6b710b58ad85e7cf7804d3a4ac
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:02 2008 +0200
-
-    Remove unused functions u_basic_strip_trailing() and u_basic_has_trailing().
-
-commit a76cf5cdda91c7070f4765107d3f8be89bbd05b6
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:01 2008 +0200
-
-    Remove unnecessary strippings of trailing directory separator.
-    
-    These strippings is no more necessary as GLib functions for building
-    filenames (in particular g_build_filename()) takes care of any
-    trailing directory separator for us.
-
-commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:00 2008 +0200
-
-    Replace getcwd() with g_get_current_dir().
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit 19d6d561eb5aea8e580d6ecf72d20bdfc3180ace
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:58 2008 +0200
-
-    Remove unnecessary check following memory allocation with GLib g_malloc().
-    
-    There is no need to check g_malloc() returned value as when the
-    function fails to allocate memory, it terminates the application.
-
-commit a3513b7e6dc7bf6c36d95d4da86082beeb79831d
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:57 2008 +0200
-
-    Replace standard string manipulations with GLib string utility functions.
-
-commit da1d2e7b304f9d832bdee9c8dfb9fe4604e19cc9
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:56 2008 +0200
-
-    Remove tests for NULL prior to freeing with g_free().
-    
-    Testing if pointer on memory to free is not NULL is unnecessary
-    since g_free() does the test itself.
-
-commit ac84ca9171138a0774b4314fd8d8ee148d109474
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:55 2008 +0200
-
-    Rewrite f_normalize_filename().
-    
-    Modifies f_normalize_filename() to avoid using realpath() and
-    resolving symlinks. It is derived from the GNU Lib C implementation of
-    realpath() with glib GString and glib portable file-related functions.
-
-commit 2800c05634d2c66f586adc1dd0430b0d069686de
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:54 2008 +0200
-
-    Rewrite s_expand_env_variables() with glib GString.
-
-commit c1b6775eb651c3e576eb50d9d676cf179e0b2b21
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:53 2008 +0200
-
-    Rename expand_env_variables() to s_expand_env_variables().
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 8773525a45c1e33a2f020ac511f628e04ff373b9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:01:37 2008 -0400
-
-    Ran make update-po in all po directories (in prep for a new release)
-
-commit 8d5bf82866455f9a03ec311ba4b64f3ec48f7f4c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 21:52:34 2008 -0400
-
-    Added file which was being "recommended" by running make distdir
-
-commit 97c1b01e1c95d2f8a334d916ffc60d35797782c2
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 09:34:01 2008 -0400
-
-    Fixed up all icon-theme-installer files to work with non-bash
-    
-    Grabbed the latest icon-theme-installer files from the pcb repository
-    since they have been fully patched to work with non-bash shells.  On
-    my ubuntu system, /bin/sh is linked to dash which prevented me from
-    running the previous version of icon-theme-installer.  This commit
-    is related to a7e7a28613abe4705ec01011d0f4308ff024251b
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit e5d57e6811046c1899dd32d5c705accfe1857574
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Wed Jul 2 15:32:27 2008 +0200
-
-    Protects menu items from garbage collector. [#2001303]
-    
-    Fix for Bug #2001303, "segfault with local gschemrc". Protects the
-    scheme menu_items in structure st_menu for the time the C code use
-    them.
-
-commit 2c5dfb6823faeb76004c8b6afdcb2ed3cdf483c5
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Wed Jul 2 15:32:17 2008 +0200
-
-    Add support for mirror flag when adding embedded components. [#1977778]
-    
-    Fix for Bug #197778, "gschem: embed-unembed breaks with mirrored
-    symbols". Adds a missing 'mirror' parameter to
-    o_complex_add_embedded(). The mirror flag read from a schematic file
-    for an embedded component was silently discarded.
-
-commit eb0846161bf916d68280bddf2d7dd244e0fe6002
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Wed Jul 2 15:32:07 2008 +0200
-
-    Improve the search for already opened page in s_hierarchy_down_schematic_single(). [#1909932]
-    
-    Fix for Bug #1909932, "gschem: page manager confused about hierarchy".
-    
-    When looking for a sub sheet in s_hierarchy_down_schematic_single(),
-    the filename may not have been suitable for comparison to opened page
-    filenames. It then failed to identify a sub sheet as already opened
-    and opened it again. Adds normalization to filename prior to
-    comparison.
-
-commit a7e7a28613abe4705ec01011d0f4308ff024251b
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jun 29 19:00:10 2008 +0200
-
-    Changed shell from bash to sh in icon-theme-installer
-    
-    Changed shell from bash to sh in icon-theme-installer.
-    This commit is still not tested in non-bash systems.
-    
-    Applied partially geda patch #1978537 (only bash to sh
-    change, not removal of $INSTALL_DATA_EXEC check) from
-    anonymous contributor and Dan McMahill's test case
-    change in line 103 from:
-    
-    http://pcb.cvs.sourceforge.net/pcb/pcb/icon-theme-installer?r1=1.1&r2=1.2
-
-commit 0a770cff6b42dd3ba80215482ee7c4f230b3cf0f
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jun 14 19:41:03 2008 +0200
-
-    libgeda: fixed EOL handling for mixed windows/linux usage
-    
-    A file that is created on windows with windows EOL characters
-    may not be read into gschem without errors on Linux. This fix
-    strips off leading and trailing CR characters when reading a
-    single line from the textbuffer.
-    Bug reported by Thomas Arndt [#1993952]
-    The bug was introduced with commit 40833189228f8edeff
-
-commit 199743d5ae8e89fa4065e544d998ebaeab1c1cd6
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jun 15 09:51:17 2008 +0200
-
-    libgeda: fix memory leak introduced with the last commit.
-    
-    The function g_path_get_basename returns a newly allocated string.
-    This string has to be freed after usage. Thanks to Peter C. for the
-    hint.
-
-commit eaa61c6968d3e17d0525cc476bf4c6d54ebd494d
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jun 14 11:04:52 2008 +0200
-
-    libgeda: mingw fix for basename
-    
-    Replace the basename() function by the glib function g_path_get_basename().
-    Patch written by Thomas Arndt
-
-commit 3db78903fb7bd41a0f2d8b4022c2afa18055a54a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat May 10 01:49:22 2008 +0100
-
-    Calculate bounds of new object when copying an embedded complex.
-    
-    Adds call to o_complex_recalc() in o_complex_copy_embedded().
-
-commit ffa5323869c37b16634f03f41896fb9df6e5f7ad
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 20 22:30:25 2008 +0200
-
-    libgeda: removed fix_x, fix_y functions
-    
-    This functions are no longer uses after switching to world coords.
-
-commit b4aade65f2488b4a7fd74f34a90225c0da7ec9f3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Apr 18 14:11:07 2008 +0100
-
-    libgeda: Remove unused function i_vars_setnames
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit ffd2298ca90e9e8616a2804c5708cb3d2ccb0a83
-Merge: b62e017... 1a49d46...
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Mar 1 09:43:53 2008 +0100
-
-    Merge branch 'magneticnet'
-
-commit d68fe1307f4f98aa51844bbf378d5d0a9467b8b2
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Feb 24 10:24:13 2008 +0100
-
-    libgeda: bugfix for bounding box calculation of mirrored arcs
-    
-    A mirrored arc has a negative sweep angle (called end_angle).
-    This wasn't properly catched in the bounding box calculation.
-    Bug reported by Kai-Martin Knaak on geda-user mailing list.
-
-commit 855f29d44df73caef03ee49bd58f19897f31b69d
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Fri Feb 22 21:46:21 2008 +0100
-
-    use tiles to find connections for magnetic net mode
-    
-    This commit changes the magnetic net code to use the tiles.  This
-    reduces the load when checking all the possible connections for every
-    mouse movement. The patch adds a library function to get object lists
-    which may contain objects in the region of the magnetic reach. In
-    o_net.c the object iterator code has been changed to use the new library
-    function.
-
-commit 4d441af32c63bb847ba62b4fb502fd1ed2d39c7c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Fri Feb 8 20:47:52 2008 +0100
-
-    Fix missing %s in two strings.
-    
-    Two strings missed %s. Thanks to Peter Clifton for reporting.
-
-commit 5757ce41ac1846814b0e96885942f2e011f2d3b7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Feb 1 13:06:15 2008 +0000
-
-    Rename translations to drop un-needed ISO-3166 country codes.
-    
-    From Debian bug #336796:
-    
-    Using a country part in a translation file is a discouraged practice
-    except in very few cases (such as pt_BR).
-    
-    Using a fr_FR.po file instead of a fr.po file prevents users of fr_CA,
-    fr_BE, fr_LU, fr_CH and all other existing and future locales for
-    French to benefit from the French translation of the program.
-    
-    In general PO files should only be named after the
-    ISO_639 code of the given language and should not use a country part
-    with a ISO-3166 code. The only accepted expcetions to this are:
-    
-    -pt_BR for Brazilian Portuguese and pt alone for "standard Portuguese"
-    -zh_CN for "Simplified Chinese" use in mailand China and Singapore
-    -zh_TW for "Traditional Chinese" used in Taiwan
-
-commit 5768fbf65867a586c5f5eb2ac0dba573d1c9912e
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Fri Feb 1 00:25:52 2008 +0000
-
-    Add missing libgen.h
-    
-    Add a check for libgen.h and if found, include it.  This provides
-    the basename() prototype.
-
-commit d848ac7f515187a536f10f9e246c1234f648d723
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Wed Jan 30 22:25:46 2008 +0100
-
-    Applied Dutch libgeda translation patches from the mailing list
-
-commit 22396b286d50c454287ff94a3c3de414b3f9a08a
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 26 19:27:15 2008 +0100
-
-    update the pinnumbers if a slot attribute is deleted
-    
-    Update the slots whenever a text line that is attached to an object
-    gets deleted. The update checks the slotting even if there's no slot
-    attribut. This catches the case when the user deletes a slot attribute
-    and the current displayed pinnumbers are not the ones defined in the
-    symbol. This commit fixes [#1880221]
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 5e4ee69035885d76fba09aa453789be68481c69a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:46:06 2008 -0500
-
-    Ran make update-po one more time before the 1.4.0 release
-
-commit 464f7c5fadc97f0ca5cd80ed343ec9f427938265
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Jan 27 10:54:27 2008 +0100
-
-    Applied Dutch libgeda translation patches from the mailing list
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit 9a4bbc16c5c0e408aabbc69c1c1cc10cb4b7675f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 19:48:29 2008 -0500
-
-    Manually ran make update-po in all po dirs in prep for the 1.4.0 release
-
-commit 0f8f2cb351e6f594b8a00f2cd447562574f1c0d2
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 12 18:37:27 2008 +0100
-
-    forward status messages from the library command to the log
-    
-    The list and get command read data from stdout, thus the stderr can
-    be used to catch the status messages from the library command.
-
-commit 082c6d6778d218aabd6df20a955d211335c2f43c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Jan 12 18:08:53 2008 +0100
-
-    fixed error handling bug in run_source_command() [#1869941]
-    
-    WIFEXITED returns 1 if the command has exited normaly. Well
-    an error is also a normal exit. A kill would be not be normal.
-    Thus we need to check WIFEXITED and WEXITSTATUS.
-
-commit ec4b6287bbb4f709a7d3258a7474ec716933ca4b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:23:39 2008 -0500
-
-    Manually ran make update-po in all po directories in prep for the 1.3.1 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 8502202774e3fd9abe63b24cc88ab1ec8491a3b9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:09:02 2008 -0500
-
-    Updated the revision of libgeda for the 1.3.1 release.
-    
-    1.3.1 libgeda should be completely backwards compatible with 1.3.0 libgeda.
-
-commit 6ac1f25c4a2d88c1e5825aac74265cf442680954
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jan 11 04:44:32 2008 +0000
-
-    Fix invalid memory access with auto-save filename being used after free.
-    
-    Use the "full_filename" variable in f_open_flags() as a base for the
-    auto-save filename. Previous code uses the passed in "filename" argument,
-    however in some cases this argument points to memory which is free'd in
-    f_open_flags() after determining "full_filename".
-
-commit 24c736f9502e1cbeac78c69310e9a900e334900a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jan 10 01:52:41 2008 +0000
-
-    Remove unused code to shift pinseq attributes when changing slots.
-    
-    Code was commented as it broke pinnumber= updating, and is no longer
-    required now spice-sdb slot handling is fixed.
-
-commit 588809da98f738e6c64c2ec064f0dc2fb12dbd51
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Mon Jan 7 20:21:31 2008 +0100
-
-    Updated libgeda's spanish (Spain) translation.
-
-commit 1dc4ba8a72a5d6f596fd48088d42e755164e25b5
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Mon Jan 7 18:45:53 2008 +0100
-
-    updated german translation of libgeda
-
-commit d6e64f7b3b2ed73fda88462e3bfc5acebba3ac2b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 6 21:13:19 2008 +0000
-
-    libgeda: Mark more translatable strings with _()
-
-commit 1556ae85b049e89d77507a636dc42c726bcd328d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 6 21:00:40 2008 +0000
-
-    Set encoding for translations in libgeda to UTF-8
-
-commit 048bd6f8e2fc1c5f5b01ff3f1cad3a7c9bf43f3e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Jan 6 20:36:52 2008 +0000
-
-    Allow configuration of the scroll wheel's action to match GTK app. norms
-    
-    Adds configuration parameter (scroll-wheel ...) which takes either
-    "classic" or "gtk" as a string argument. "classic" remains the default.
-    
-    Tidies x_event_scroll() to deal with the various options in a neater way.
-
-commit 0a6a005daec93dff34c41a53815d9ff10c1be20b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 6 02:04:26 2008 -0500
-
-    Oops, added forgotten and important file to EXTRA_DIST
-
-commit 624c7a0c95509cda1a118503077979421c93bb0f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 21:21:06 2008 -0500
-
-    Added libgeda*.pot files to ignore this machine generated file
-
-commit e800618afe70c93c3739d725172dfdba95386232
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 21:14:51 2008 -0500
-
-    Manually ran make update-po in all directories
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 6b36311d3be00d9b4901a876f5f4da4f892e3bce
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 5 22:10:31 2008 +0000
-
-    Remove extraneous printf where they duplicate log messages.
-
-commit 9aca06cdb70c3fc9595beb82713eedd90a7e1d16
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 4 12:57:58 2008 -0500
-
-    Added checks at the autogen.sh stage for missing m4 macros
-    
-    This commit adds a autoconf friendly m4 macro to check for undefined
-    macros (originally written by Peter Brett).  This macro is used in
-    configure.ac.in to check for a few troublesome macros (guile, nls,
-    gettext, intltool) that are usually missing because a required -dev
-    package is not installed/missing.
-
-commit 72581a91da08c9d69593c24756144fc18940992e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Jan 3 13:05:57 2008 +0100
-
-    libgeda: initial german translation de_DE
-    
-    translated all message strings
-    added de_DE to the LINGUAS file
-
-commit 1697a90e5465dde296199745991e76df8f68c3be
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 15:41:07 2008 +0000
-
-    Changed --with-xdgdir to --with-xdgdatadir for consistency
-
-commit c4c409c1cf46a55b74017872d15b6f48d51ce521
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 15:35:02 2008 +0000
-
-    Change --with-kdedir to --with-kdedatadir
-    
-    This allows greater similarity with the --with-xdgdir paths, by moving the
-    "/share" portion of the KDE mime install paths out of the Makefile.am and
-    into the "kdedatadir" expansion.
-
-commit ee47fc5fa6d418a54af62a55a78e508d95a0f913
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jan 2 02:46:14 2008 +0000
-
-    Change usage of ${datarootdir} to ${datadir} for autoconf compatibility.
-
-commit d81a0717852c1b6da5b99f6cf0dc93f6ddcdc87f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Jan 1 14:37:12 2008 -0500
-
-    Added configure.ac into libgeda's .gitignore file
-
-commit 1a1cbb29f5d1ff118fb91235463e57a48ba81054
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Jan 1 14:29:27 2008 -0500
-
-    Changed libgeda's configure mechanism to be similar to gschem's configure.ac.in
-    
-    In order to allow a wide range of gettext versions to be used, gschem has
-    a configure hack that dynamically figures out the gettext version and creates
-    configure.ac from configure.ac.in.  This hack is now in libgeda with the
-    additional improvement that if configure.ac.in changes, configure.ac and
-    configure are automatically recreated.  Added a special mode to autogen.sh
-    (recreate_configure_only) to support this improvement.
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit b9ffb4675fbca6e92a4f713c28486e74dcbbeef4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 15:42:13 2008 +0000
-
-    Fix configure checks for Guile.
-    
-    Quote variables to protect them and alter version test logic so that
-    it doesn't think version 2.1 is older than 1.8.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ac4f29f0711a3e612fa5d94d1e3d771852bf42bb
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 30 23:54:25 2007 +0000
-
-    libgeda: Unbreak g_scm_c_eval_string_protected()
-    
-    Fix bad macro definition introduced in commit
-    8575431a17efb7a753649ae16087dc8f203981ce by turning it into a proper
-    function.
-
-commit 0525e60123ab47ff62c9c30f4a3159ca75bbb456
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 30 20:15:19 2007 +0000
-
-    Add TAGS to some .gitignore files.
-
-commit 38c3ac02492a441782e030162cfacf745c1521ad
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sat Dec 29 16:05:29 2007 +0100
-
-    Updated Dutch translation for libgeda.
-    
-    Minor changes on four translations.
-    Changed the header of the file for a meaningfull
-    description and copyright notice.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 5852e531717ba947b7acca39e50f71edd5921f06
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:49:46 2007 -0500
-
-    Fix problem where changing slot= would not update pins
-    
-    Known to break spice-sdb's slotted component handling, however users
-    are much more likely to encounter the former breakage.  Original patch
-    removed the offending code, but this patch just #if's it out for now.
-
-commit 7c82238f3b2433607f8af6c873af99a642f05409
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:22:38 2007 -0500
-
-    Ran make update-po in all po directories in prep for a new release.
-
-commit fe7d974a8c2dd0a5b96bbd41b2691cfd5c8a7ecb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 11:25:17 2007 +0000
-
-    libgeda: Update English (British) translation.
-
-commit 27d11542d45423d0febb0f7ef95c8aaf2e96a7a1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 00:02:06 2007 -0500
-
-    Added new i18n files to .gitignore to be ignored
-
-commit 91726e0964602983e8f896be86aa056afc96baff
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:41:14 2007 +0000
-
-    Change image embedding format to base64 encode the original files
-    
-    Previously, the format was a base64 encoding of serialised output from
-    the gdk_pixbuf used to store the image internally. Due to another bug
-    (now fixed) it is known that no official gEDA release could re-load
-    the embedded images that it saved. This hopefully provides some
-    justification as to why its OK to change the embedding format here.
-
-commit 70293381f5af9957afbd3e3fd0614d838738c7a7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Dec 29 01:37:02 2007 +0000
-
-    Compute picture aspect ratio in double arithmetic, not integer.
-    
-    Avoids a nasty bug where coordinates would overflow when attempting to
-    grip-adjust the picture size due to this ratio being incorrect.
-
-commit bebdeefaf0f8421fa106151f36c63e7f3a69a17b
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Fri Dec 28 19:14:36 2007 +0000
-
-    Add Spanish translation for libgeda
-
-commit d197bd400dd217aba91e9b72a9b1ce8bd4c387ec
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Dec 28 18:57:09 2007 +0000
-
-    Move picture embedding code from o_embed.c into o_picture.c
-
-commit 9eed09a311e2289740feb635f1344835a8f86cde
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 26 21:35:02 2007 +0000
-
-    Fix spelling mistake in libgeda
-
-commit 03ac3e16fec8b35e8e1d453d6504bd963bf43149
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 26 00:37:18 2007 +0000
-
-    Fix make distcheck broken when adding KDE mime registration files
-    
-    Add .desktop.in files to EXTRA_DIST and the output to DISTCLEANFILES.
-
-commit 127cff28ce52f41ce0972e8109049ecb78b09cc3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 23:09:28 2007 +0000
-
-    Add English (British) translations for libgeda and gschem
-
-commit dbb2a46a6ddba05cc5f71f735a6049b830eeda0d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 22:58:28 2007 +0000
-
-    Fix spelling mistake in libgeda
-
-commit 1aec0fd150a5a73d4bb7bbdd4b058e04819b9a21
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 25 21:47:10 2007 +0000
-
-    Add Dutch translation for libgeda
-
-commit de9efa23180c88bfd2e0949a2e41f0d861b36486
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 25 21:39:58 2007 +0000
-
-    Fix spelling mistake in libgeda
-
-commit 71c7d0b680117dfb51760f1523aa5293a56ea0d9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 05:25:16 2007 +0000
-
-    Add .gitignore files in libgeda/m4/ and libgeda/intl/
-
-commit 44310ac20e15d28122eed9f6f532dc68bcf3c26b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 05:23:12 2007 +0000
-
-    Fix .gitignore entries for generated KDE mime .desktop files
-
-commit b9f741e0906295754fa5e1301cf3079aee88ff55
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 25 05:12:40 2007 +0000
-
-    Remove intltool-*.in files during make maintainer-clean
-
-commit d7840241c1c8adba3ada978ac1f42b5b2f5b87bc
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 24 17:18:37 2007 +0000
-
-    libgeda: Use gettext to translate messages.
-
-commit 45f02d40b7654a787589707f087ab33aea581787
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Dec 24 12:25:53 2007 +0000
-
-    libgeda: Wrap translatable strings in dummy _() macro.
-
-commit 7589460bcbd8ba7683645b9b5aecd5e0b14ad6d2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 23:31:38 2007 +0000
-
-    KDE mime registrations use title-case
-
-commit 5218cee423a077d46e2ba02b5697f9058944c2a8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 23:29:46 2007 +0000
-
-    Fix typo in icon name for gsch2pcb project KDE mime registration
-
-commit 2cbbfb530707d215d81dd876afcc8e78beec646c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 23:08:57 2007 +0000
-
-    Add .desktop versions of MIME registrations for older KDE desktops
-    
-    Adds new ./configure option to libgeda, --with-kdedir=PATH. For system
-    wide installs, this should be left to its default, ${prefix}. If
-    installing in a home-directory, it should be set to /home/<USERID>/.kde
-
-commit a4b3077e848339d9db363d89b4714e09228b3297
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:53 2007 +0000
-
-    libgeda: Load gafrc.d scripts with protected eval.
-    
-    Stops one bad gafrc.d script blocking system-gafrc from loading
-    completely.
-
-commit cf220890a4f70ba16fbe3fc5c76e6e371720c5cb
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:53 2007 +0000
-
-    libgeda: Make protected evaluators available from Scheme.
-
-commit 8575431a17efb7a753649ae16087dc8f203981ce
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:53 2007 +0000
-
-    libgeda: Add protected string evaluation functions.
-    
-    Add a protected equivalents to scm_eval_string_in_module() and
-    scm_c_eval_string().
-
-commit 9b1b44f0268271fc167ba5040ab3086cd2901706
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:53 2007 +0000
-
-    libgeda: Add g_scm_eval_protected()
-    
-    Add a function that allows evaluation of a Guile expression safely,
-    catching any exceptions and logging error messages.
-    
-    Modify the rc file helper function g_read_file() to use this new
-    infrastructure.
-
-commit eb82d0c6a2a3ae3eb6023375c4db10e0eaf9fb91
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:53 2007 +0000
-
-    libgeda: Set Guile debug flags to aid debugging rc files
-
-commit f3be59545162de9a575cdb3d7bc9953377bdc74d
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Dec 23 15:22:47 2007 +0000
-
-    libgeda: Use a dedicated header for Guile 1.6 compatibility.
-    
-    Also adds some more useful checks & definitions for 1.8 functions
-    missing from 1.6.
-
-commit eaa1db9f3913126b157cdc283b34250d5497530f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 06:13:15 2007 +0000
-
-    Fix $(DESTDIR) prefix for MIME database update in libgeda
-
-commit 375e53fc26a8e6f8f13f3f188b50987290525467
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 22:55:34 2007 +0000
-
-    Add desktop mime integration and icons to libgeda
-    
-    The schematic and symbol mimetype icons and registration data were
-    contrinuted by Tomaz Solc, and subsequently modified by Peter Clifton,
-    including creation of a gsch2pcb icon in a simlar style. The page outline
-    is from the GNOME icon theme's text-x-generic icon by Jakub Steiner.
-    
-    Uses the intltool framework to translate the mime registration file.
-
-commit fdfaaf2d4a7a92eaeb9b4a212a075c639bc9a022
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 23 05:30:21 2007 +0000
-
-    libgeda: Add missing noinst_HEADER prototype_priv.h to pass distcheck
-
-commit f1d4aeb308de9b805ff0b21d7e94b09bc01dc569
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 22 21:01:35 2007 +0000
-
-    libgeda: Use goto to tidy some error handling in f_print.c
-
-commit 091c7484296176f9364ed5663e7a2db4b2920f4b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:44:15 2007 +0000
-
-    libgeda: Split out private prototypes to new header file.
-    
-    Split out function declarations for functions intended for libgeda
-    internal use only into a new prototype_priv.h.
-
-commit 52bb24c3868d14b12480037dc8f0b1450cc78d7f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:26:30 2007 +0000
-
-    libgeda: Make sure that Guile smobs are initialised.
-    
-    Rather than initialising them in gschem, which is a WTF.
-
-commit 8fd1e724fbb7f9b2e109a829c700daf11521c08a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:26:30 2007 +0000
-
-    libgeda: Now we assume GLib 2.4+, use g_setenv().
-
-commit 39454be8d19bc73e3fb4b4a688a93ddc411d01c0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:26:29 2007 +0000
-
-    libgeda: Compile C files in alphabetical order.
-    
-    Purely because it looks nicer.
-
-commit 559caed6b573a19f287fb0f1b35e46726acf9631
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 21 17:26:29 2007 +0000
-
-    libgeda: Add a private counterpart to libgeda.h for internal use
-    
-    Provide a single header file, libgeda_priv.h, which includes all
-    libgeda headers and their dependency headers in the correct order.
-    Change libgeda C files to include just this header rather than all the
-    individual headers explicitly.  This will make it easier to split out
-    the libgeda headers into public and private declarations.
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit eae5c4643691bf4a675f6df0d31d671715089939
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 18 14:39:34 2007 +0000
-
-    Fix resolution of printed images to match that of the original data.
-
-commit a146b68dfbffe227f3ab89af2beefb7627e26daa
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 8 14:57:33 2007 +0000
-
-    libgeda: Clean g_assert() usage.
-    
-    g_assert() is a heavy-handed approach to sanity checking because it
-    kills the user application on failure.  It's better to use
-    less-destructive methods.
-
-commit 405e7a33706d1e82d53c8d607aad11f9be8ad559
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:43 2007 +0000
-
-    General log handler improvements
-    
-    - Handle all messages above "debug" level
-    - Send all messages which are neither "message" nor "warning" levels
-      to console using default log handler
-    - Don't print to console from the gschem log handler
-
-commit 668ada22ec0f2a48adffcc62daacc6876108ee71
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Pass all log info to x_log_update_func
-    
-    In order to enable applications to do interesting things with log
-    messages, they need to have all of the log info (including severity
-    and log domain).
-
-commit c8a8611f87b3031e5fe1abb1a8602401ed459c97
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 16:55:39 2007 +0000
-
-    libgeda: define s_log_message -> g_message
-    
-    s_log_message was a verbatim copy of the definition of the g_message
-    macro from GLib's gmessages.h.  However, we're actually always going
-    to include that header anyway -- this patch removes the unnecessary
-    duplication of code.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit 9998632193573058a18c9dc96c7e9a3b1aa0dcc3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:19:57 2007 +0000
-
-    libgeda: Make o_read() use GError.
-
-commit 2d60c8fd165dbfd577199c2237d44e33655eb8c1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Dec 6 21:08:32 2007 +0000
-
-    libgeda: Add f_has_active_autosave()
-    
-    Add a helper function for checking if a file has an unresolved
-    autosave file.
-
-commit 3dc89aa9635b6eac150e837f24b51811c7504e88
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Dec 4 23:00:35 2007 +0000
-
-    libgeda: Add f_get_autosave_filename()
-    
-    Add helper function for getting the autosave filename for a given file.
-
-commit 53cbd813e6d601f86618aa083d656d7aeccb7705
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Dec 4 22:56:01 2007 +0000
-
-    clib: Speed up caching by using pointer rather than string keys.
-    
-    The initial version of the symbol cache used the symbol name as a
-    string as the key, mostly because of the obnoxious 'const' keywords I
-    had put in the definition of s_clib_symbol_get_data().  Having found a
-    way around that, using a pointer to the symbol structure as the key is
-    much faster as it avoids costly string comparisons and allocation of
-    heap memory (as well as being slightly more elegant).
-
-commit 9d2d7b0042a75f0494a240ceb79e60173d2e55d7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Dec 4 16:17:59 2007 +0000
-
-    Fix messages when parsing rc paths.
-    
-    Often, the full path to an rc file was being output twice in the log
-    message given when parsing rc files.
-
-commit d3d40d46285c5d0e75be9052d9f23480f9e8bff5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Nov 28 23:20:44 2007 +0000
-
-    clib: Cache symbol data between library refreshes
-    
-    Adds a cache for symbol data, which is flushed whenever the available
-    component libraries are changed or rescanned.  This should speed up
-    large component copying operations.
-
-commit 3106000f091b02eb199826c0a0d74a1407f883b0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 12:58:17 2007 +0000
-
-    libgeda: Correct header guards for defines.h
-
-commit 0c2871d04305a0fcaf3b6b45a1317a491594a3f4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 01:29:18 2007 +0000
-
-    clib: Clarify naming for search cache
-
-commit 7a2ad70e9880b77957dd44d850ae85a08d615640
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 01:29:18 2007 +0000
-
-    libgeda: Clean g_assert usage in s_clib.c
-
-commit 019d53dce27bdbbb9871510ce34bb995664290c2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 28 17:24:27 2007 +0000
-
-    Simplify o_mirror_complex() coordinate calculation.
-    
-    No mathematical changes, just consolidate x and y coordinate
-    expressions onto one line each, and avoid using temporary variables.
-
-commit 0312f7d113e616b0bb55880aa9d23a5197e821a5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 28 17:24:27 2007 +0000
-
-    Fix bug introduced with refactoring of object mirroring API to libgeda.
-    
-    When reading a complex object from file, the mirror property of the
-    complex is set to the desired value and later code then mirrors the
-    prim_objs which make up the complex. o_complex_mirror_world() was used
-    by mistake, where o_list_mirror_world() should have been used.
-    
-    This could be refactored so that complex creation uses higher level
-    o_complex_{rotate,mirror}_world(), rather than setting the variables
-    holding rotation / mirroring state, then manipulating the prim_objs.
-
-commit ad5dcb91b8299dfbcda2e7507d4a42a6b6c0e9b0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Nov 28 17:24:27 2007 +0000
-
-    Fix Bug #1838164. Initialise copied_to pointer in objects to NULL.
-    
-    Without explicitly initialising OBJECTs to have a copied_to pointer of
-    NULL, copying a selection containing an attribute but not it's parent
-    object could cause a segfault. The code checks to see where the parent
-    object has been copied for correct attachemnt of the new attrib. If
-    the parent object wasn't copied, this pointer should be NULL.
-
-commit 193e2d4b748bc88d504abfa5b3cfba2382193d02
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Nov 28 16:27:08 2007 +0000
-
-    libgeda: Don't use assert.h (use Glib's g_assert instead)
-
-commit d64878d06d87592e3fa4a0a478eacff5ea105253
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Nov 28 16:27:05 2007 +0000
-
-    libgeda: Correct func name in SCM_ASSERT call
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit 1abfd25bf917ee4e90ccdbbbe9921db6ff46c49f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Nov 24 08:34:13 2007 +0000
-
-    gschem: Fix NULL pointer risk in x_image.c [1802087]
-    
-    x_image_update_dialog_filename may attempt to deference a NULL
-    pointer.
-
-commit 6831e3cbfbd23964ceb42f294075053899a9bcad
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Nov 23 21:44:18 2007 +0000
-
-    libgeda: Update some component library doc comments.
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit 537fc4784a25756d7c38b4fbbcc1059b41f5664b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Nov 23 21:42:47 2007 +0000
-
-    libgeda: Add the ability to save into a buffer.
-
-commit 493fef662fb68301ad786fcbf3cf5cdbcb1078d1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Nov 23 21:42:37 2007 +0000
-
-    libgeda: Refactor file header string generation.
-    
-    Replace function for writing file header out to file with one which
-    just returns a string containing the header.
-
-commit 0b0d1259692ffe36e3bbc617af78bbf8a1c8f716
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 21:34:57 2007 +0000
-
-    Improve object mirroring API in libgeda + gschem
-    
-    Implements the o_mirror_world() function which rotates any object, and
-    o_{glist,list}_mirror_world() functions which mirror lists of objects.
-    
-    Moves o_complex_mirror_world() from gschem into libgeda, and modifies
-    appropriate places in libgeda + gschem to use the new API. The old
-    gschem function o_mirror_world() becomes o_mirror_world_update(), a
-    convenience function calling o_glist_mirror_world() and ensuring all
-    necessary drawing and connection updates are made.
-    
-    Removes the o_complex_mirror_lowlevel() function which is made redundant
-    by the above changes.
-
-commit 21a8790b0540c374b00cfc45ad79ab474a4655b0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 18 21:34:35 2007 +0000
-
-    Improve object rotation API in libgeda + gschem
-    
-    Implements the o_rotate_world() function which rotates any object, and
-    o_{glist,list}_rotate_world() functions which rotate lists of objects.
-    
-    Moves o_complex_rotate_world() from gschem into libgeda, and modifies
-    appropriate places in libgeda + gschem to use this new API. The gschem
-    function o_rotate_90_world() is greatly simplified, becoming a
-    convenience function calling o_glist_rotate_world() and ensuring all
-    necessary drawing and connection updates are made. This function is
-    renamed o_rotate_world_update().
-    
-    Removes the o_{complex,text}_rotate_lowlevel() functions which are made
-    redundant with the above changes.
-
-commit 8d60088eafd1a1447db10e14436e9bbc3a5a28ce
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 14:37:53 2007 -0200
-
-    MinGW does not have symlinks.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit 4698fd163892243b931fbd7795ad9443f5b2fe58
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 13:38:26 2007 -0200
-
-    Remove uneeded MinGW-only libraries.
-
-commit ce2255f2633c9bb14dcd3813e019a84d8acce3a3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 21:24:15 2007 +0100
-
-    Alter system-gafrc to process .scm files in $GEDA_DATA_DIR/gafrc.d/
-    
-    This change allows each symbol package (e.g. geda-symbols) to install a
-    scheme config file under this dir to load its contents. This allows
-    additional symbol packages to be installed globally without needing to edit
-    either geda-clib.scm or system-gafrc.
-    
-    Also moves the installation of geda-clib.scm into this directory.
-
-commit 23ead18086e59aab22945c37ff95f49e5747f277
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 04:50:39 2007 +0100
-
-    Remove the ATTRIB linked list in favour of a GList
-    
-    The ATTRIB.copied_to pointer is moved from the ATTRIB struct to reside in
-    the source OBJECT being copied.
-    
-    The ATTRIB *attached_to pointer of an attribute's text OBJECT is changed
-    to OBJECT *attached_to, pointing directly at the OBJECT to which that
-    attribute is attached. This avoids the need to traverse the ATTRIB list
-    and retrieve this pointer from the HEAD attribute node. (A HEAD node is
-    not used in the GList of ATTRIBs).
-    
-    The ATTRIB structure now only contains one element, OBJECT *object. This
-    points to the text OBJECT holding and displaying that attribute's
-    "name=value".
-
-commit 88cdb643a1304cd283a2f2ad95993f237e81248b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Oct 17 03:53:38 2007 +0100
-
-    Remove unused code from libgeda
-
-commit 903db04d2174415fcc6ec6c0e7321d914a25b259
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 22:28:54 2007 +0100
-
-    Tidy implementation of o_list_copy_all() to be more concise.
-
-commit f914d437f4a76df5ba28e80e7dab6f55996a8b59
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 22:05:21 2007 +0100
-
-    Split out gschem specific TOPLEVEL variables into a new GSCHEM_TOPLEVEL
-    
-    GSCHEM_TOPLEVEL has a TOPLEVEL *toplevel pointer as its first elelment,
-    gschem uses this to call libgeda functions. (Almost) all gschem functions
-    now take the GSCHEM_TOPLEVEL as their first argument.
-
-commit 3da83d39b58ab2cb642b93b798ec31be0a725d81
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 20:08:26 2007 +0100
-
-    Move o_redraw_single() from libgeda to gschem
-
-commit fe4375d7185c0d5f7cc8186c1a214981fb6d0edd
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 20:08:26 2007 +0100
-
-    Move libgeda's o_selection_unselect_list() into gschem.
-    
-    The function calls o_redraw_single(), so should be in gschem.
-    It is now named o_select_unselect_list().
-
-commit fd28531b8e88ced997b0269fd31cdb23abf3936d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Oct 9 20:08:23 2007 +0100
-
-    Fix a bug in o_attrib_search_name_single() were it might return NULL.
-    
-    If o_attrib_search_name_single() doesn't find an attribute attached to
-    the passed OBJECT, it checks if the passed OBJECT is itsself an attribute.
-    In this case, it would return NULL (the result from the preceeding search).
-    
-    The bug might not actually be triggered in normal usage, as most callers
-    don't pass a variable to recieve the OBJECT pointer.
-
-commit 185958029cb58e26d37854c7580bef1b0869a7c9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 19:42:01 2007 +0100
-
-    Use GLists to store OBJECTs in the "object_buffers[]" paste buffers.
-    
-    Replaces o_list_copy_all_selection2() with o_glist_copy_all_to_glist().
-
-commit 38d3c48fd5a2ea57af5d772854393b39fd3b7e78
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 19:42:00 2007 +0100
-
-    Make attribute / text placing use a new attrib_place_list GList.
-
-commit d1e77cc6b87f6bd78cfc38630c292ac2c0f1f09b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:44:18 2007 +0100
-
-    Remove the redundant toplevel variables current_{show,visible}.
-    
-    These variables were previously used for an interactive method of attrib
-    placement which has since been removed. The current_visible variable was
-    also tested during non-attribute text placement, but to no effect.
-    
-    Whilst the file-format does technically allow invisible text, gschem's UI
-    pesesnts no way to achieve it, so removing this variable does no harm. The
-    ability to correctly load schematics with invisible text remains.
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit e84c1d4ba2ad15e18f94346389d2671eb49d0cf5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Sep 11 22:37:55 2007 -0400
-
-    Fixed a whole bunch of gtk+ 2.4.x and misc issues building on an older box
-    
-    This is a fix for (Patch#) 1789290 libgeda-1.2.0 fprintf which supplied a
-    similar patch which fixes the issues in libgeda/src/s_clib.c and
-    libgeda/src/s_textbuffer.c.  In the future, all releases will be built with
-    gtk+ 2.4.x so that these sorts of problems do not get released.
-
-commit 201b6aecab7f3f0f86b6d89479e7c229d4e6fb30
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 12:51:00 2007 +0100
-
-    Remove unused TOPLEVEL variables display_{width,height}
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit 8952ec9bd4f4985fae8aadd6c4103b933464152a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:01:14 2007 +0100
-
-    Remove unused extern variables from libgeda, gnetlist and utils.
-
-commit f94d63a9a9f73e70b51c16b1e9f337bfa26b0de2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 23:26:47 2007 +0100
-
-    Use o_translate_world() to tidy up o_complex_translate_world()
-    
-    Removed o_complex_world_translate_toplevel(), and changed all useage of
-    o_complex_translate_world() for generic lists of objects to instead use
-    the new o_list_translate_world(). o_glist_translate_world() is also added.
-
-commit 03896ea02c444e5889d98953f6a7f5988253cc40
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 23:24:33 2007 +0100
-
-    Add new function o_translate_world() which will translate any object.
-
-commit 36dc96b81aadceb9bb6e4c3d8b59939a2dc240e0
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 23:24:27 2007 +0100
-
-    Rename o_complex_world_translate() to o_complex_translate_world()
-    
-    The function name now matches the pattern for other objects types.
-
-commit 7018461cf5f5f011f3b59a711c4817752099a534
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 15:49:02 2007 +0100
-
-    Remove unused function o_attrib_search_special().
-
-commit 5a1c7855c84f3d9b6a439e529b6c147f943e3b95
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 15:26:33 2007 +0100
-
-    Remove unused function o_attrib_count_toplevel().
-
-commit b363eb966b6ec92cfc4337cef15cf04839a7939b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 15:26:32 2007 +0100
-
-    Remove empty functions o_attrib_{edit,select_draw,unselect_draw}().
-
-commit d0d00ac3599befcfcf25ae498dc17f6cc241b7da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 13:13:38 2007 +0100
-
-    Remove auto-uref code which was #ifdef'd out. its no longer used.
-
-commit 8b6effd2eb18816e62b3a19a532d6c308ee3fdd2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Sep 8 00:30:49 2007 +0100
-
-    Remove unused OBJECT *object_selected from PAGE structure.
-
-commit 08ac872c975a587cf4125c6468c79c453661ee8f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 7 23:58:51 2007 +0100
-
-    Removed unused angle parameter to o_complex_rotate_lowlevel().
-
-commit c66d009979f49bd7ac8ba0641a6974be9e6a82d5
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 7 23:57:38 2007 +0100
-
-    Removed unused angle parameter to o_text_rotate_world().
-    
-    From an old unmerged patch by Patrick Bernaud.
-
-commit 1f336cc81195dadaffd4bbec17e8a40950b7935b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 18:47:23 2007 +0100
-
-    Simplify test to call gdk_init() in o_read_picture()
-    
-    Avoids testing a GtkWidget pointer in TOPLEVEL variable setup by gschem or
-    gattrib. Instead, just ensure we call gdk_init() at least once. If gschem
-    or gattrib already did, its not a problem as repeated calls aren't harmful.
-
-commit f60cb40a3c47595d1931540508e89643fdcece07
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 18:47:23 2007 +0100
-
-    Tidy o_picture_copy(), avoiding use of some TOPLEVEL variables
-
-commit 23953797984fda7cb62dceef38ac26da25c2dcd2
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 18:39:55 2007 +0100
-
-    Fix loading of embedded images.
-    
-    Various bugs in the base64 decoding function were preventing the correct
-    decoding of the embedded image. In addition, it was possible for this code
-    to access invalid memory - possibly leading to a crash.
-    
-    Additionally removes extra \n inserted between lines of the base64 input.
-
-commit bd101aa36356082f479e1bd4970ea93b01bbfa5d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:38:02 2007 +0100
-
-    Remove the un-needed TOPLEVEL variable: DONT_RECALC, and its usage.
-
-commit 5e9f49ed25bf87783207906daaf915714f43259c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:56 2007 +0100
-
-    Remove the redundant TOPLEVEL variable: DONT_RESIZE
-
-commit 863d3c63667dc1a106b21758f957d810ee6f5583
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:49 2007 +0100
-
-    Remove the redundant TOPLEVEL variable: DONT_DRAW_CONN
-
-commit bf3a364ed474ce6f5824a5f3fe94a3c17ce8bc28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:37:41 2007 +0100
-
-    Remove unused variables from the TOPLEVEL structure
-
-commit 615d03958528afabaf94eb95199aa434d5c5d667
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:34:11 2007 +0100
-
-    Use o_attrib_print() in libgeda/src/s_basic.c avoiding code duplication.
-    
-    Printed output will be slightly different, but this is just debug code.
-
-commit 7f8f105c3fb9945ee02a4cf35a3cd762b0c6804c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:19:25 2007 +0100
-
-    Remove unused function o_attrib_reattach()
-
-commit f8680ea938936bfd59c1c0f699c437de870a09eb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:19:19 2007 +0100
-
-    Remove unused functions o_attrib_copy() and o_attrib_copy_all().
-
-commit a0d45936373d8c5e2f887f1330cbbc3b691e13cb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:19:05 2007 +0100
-
-    Remove unused function o_attrib_test_detach()
-
-commit f376f300980a0a4734e00d4c776bb829f9c36b96
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:19:00 2007 +0100
-
-    Remove unused, empty function o_attrib_detach_all()
-
-commit e9ac00da9b2c75b3ccef3e729e43bb105d3e6e4a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 14:18:50 2007 +0100
-
-    Remove unused function o_attrib_print_reverse()
-
-commit 96495b7a87701b2ea8d7eb6b4da206d6c169a85c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Sep 5 13:46:57 2007 +0100
-
-    Fix memory corruption and possible segfault copying attributes
-    
-    If an object (but not all its attributes) was selected and copied, dangling
-    pointers were left in the un-copied attributes. A subsequent copy operation
-    containing those missed attributes would attempt to reattach them to the
-    copy of their parent. If this had been deleted in the mean time, memory
-    corruption and a possible segfault would occur.
-    
-    Consolidates the duplicated code which sets the ATTRIB property "copied_to"
-    into a helper function, o_attrib_list_copied_to(). This is also used to
-    clean up after copy operations.
-
-commit 5b2cb25e06604a8d31dff974f323477a78f02f46
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:48:32 2007 +0100
-
-    Move o_picture_set_pixbuf() from libgeda to gschem
-
-commit 07d5a095c313e031b939d45f89afcd1c0ca9bc97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:48:09 2007 +0100
-
-    Remove unused TOPLEVEL variable REMOVING_SEL.
-
-commit 70d8cc898e42b95a7ac463d9e879c959690fbd5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:47:22 2007 +0100
-
-    Remove unused dialog pointers from TOPLEVEL
-
-commit 2854af88bf7d4d45cec1a8cc4046e0e3da5f1339
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:46:55 2007 +0100
-
-    Remove unneeded functions in libgeda/o_attrib.c
-    
-    Removes:
-      o_attrib_set_show(TOPLEVEL *toplevel, int flag)
-      o_attrib_set_visible(TOPLEVEL *toplevel, int flag)
-
-commit 093e83672310917f56b66a4f2189cb8e9baae903
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:46:20 2007 +0100
-
-    Remove un-needed redraw in o_scale() and generally tidied the function up
-
-commit 3e56c88e89c6b03c402a97d0a225302f6d000458
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:46:09 2007 +0100
-
-    Remove ineffective redraw in o_complex_world_translate()
-
-commit 9044d41a2305c97522bc70cfd7945f9d843482ae
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:41:28 2007 +0100
-
-    Removes the linking between TOPLEVELs, instead uses a GList in gschem
-
-commit 4a24abed55b95bd50cb0351ca25c37f6758e8e89
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 16:38:53 2007 +0100
-
-    libgeda: Rename all w_current variables to toplevel
-
-commit 63ee20a80cd42e1af745f9a52cd1d632c1bc345a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:17:25 2007 +0100
-
-    Avoid using s_hierarchy_up() for traversal when we know where we're going.
-    
-    When trying to reach a specific parent we've come from before, we can use
-    s_page_goto() and avoid the search through the page list.
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 19aacfff985ee9b478c4c50dfeeb1a8af5957c3a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:41:24 2007 -0400
-
-    Added undo-panzoom keyword to control if pan/zoom cmds are undoable
-    
-    The default is to still store the pan/zoom info when panning or zooming,
-    but now the user has a choice.
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 4a505b751224b1e6cca84090ee088b4d690e8aa3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 18 14:20:46 2007 -0400
-
-    Fix memory leak where GLists weren't free'd properly after use.
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit 6482c39d6983f7505b49068466feaea6c06cb50f
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Aug 10 21:57:30 2007 -0400
-
-    Fixed a nasty bug that was causing gsymcheck's make check to randomly fail
-
-commit 703151a94b0eece6b24b3b18ce2465eeae068814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 9 12:36:17 2007 +0100
-
-    Remove old prototypes from various prototype.h where no function exists.
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit dbfe00a20de3f875e519ef60629b968977fc5db8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 22:52:18 2007 +0100
-
-    Avoid using s_hierarchy_up() for traversal when we know where we're going.
-    
-    When trying to reach a specific parent we've come from before, we can use
-    s_page_goto() and avoid the search through the page list.
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit 512561395fb348a0fb71625edb4fe1ec96553c3f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:17:58 2007 +0100
-
-    Fix to allow automatic loading of untitled backup files
-
-commit aec624dc87dc204b399b0e070f8fcfce8e3edbc6
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 13:07:23 2007 +0100
-
-    Remove old code commented out in o_net_consolidate_segments()
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit a3facd9b5fc1a252ef18a7b5a3fca6b1c80cbb01
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 10:20:11 2007 -0400
-
-    Added doxygen comment to o_text_add()
-
-commit 3d86fb3270138d59f0f443efb3cd4f6efb9f3990
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 10:18:22 2007 -0400
-
-    Fixed transpositions, typos, and random spelling errors.
-
-commit af8d5893e54ef929851011911167bdb4df826431
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 10:01:53 2007 -0400
-
-    Removed spurious whitespace from header file.
-
-commit ac47f97389af58e730dce5da19897cd0d3d152e3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Jul 27 23:44:23 2007 +0100
-
-    Fix unselect code to only update colors etc. when the object was selected.
-    
-    Fixes a regression introduced with the GedaList based selection code. When
-    asked to remove an object from the selection, we must check its actually
-    selected before calling o_selection_unselect() to re-color the object.
-
-commit 31f65059cf1ce5be9b8a0987d4538fed075a6805
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jul 25 02:09:15 2007 +0100
-
-    Fixed two calls to free() where g_free() should have been used.
-    
-    Updated Doxygen comments to note where memory should be freed with g_free()
-    rather than free(). Commented three instances where free() is correct.
-
-commit 305c10f50464f02e32d84140db69f158da6e4c47
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Jul 25 00:52:36 2007 +0100
-
-    Free strings from scm_to_locale_string() with free(), not g_free()
-    
-    NB: All other code in geda uses g_strdup (SCM_STRING_CHARS (...)) to
-    convert strings from guile, so is not affected.
-
-commit f6e43346086f118dbae33e7cb650c4eef90ee3aa
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Jul 23 23:38:37 2007 +0100
-
-    Add call to g_type_init() in libgeda_init() as libgeda now uses GObject
-
-commit cb9c4ee19ca58158308a234782fdad6fb60257da
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:09:56 2007 +0100
-
-    Change selection code to use a generic GedaList typecast to SELECTION.
-    
-    GedaList allows various parts of the program to keep track of changes
-    to the selection via callbacks attached to the GedaList object.
-
-commit 10e79873064a096f8af4b0b6dcb9f957be0f6859
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Jul 19 15:06:57 2007 +0100
-
-    Added new GedaList class derived from GObject
-    
-    This abstracts a GList with API for write access. Its main use is in list
-    change notification, as it emits a "changed" g_signal when modified.
-    Read only access to the underlying GList is provided by an accessor,
-    currenly implemented as a macro.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit b6f9ed0ba8af7ed6e380bb6752bc553240f1b04c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 20:57:30 2007 +0200
-
-    Added string != NULL check in u_basic_breakup_string.
-    
-    The lack of this check can be the cause of a segfault (bug #1748153).
-    Programs shouldn't pass NULL strings to this function.
-
-commit 841ecec5509d214e633a984124ab33f35d55021e
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Fri Jul 6 23:35:59 2007 +0200
-
-    Added new scheme function: get-line-width .
-    
-    Added new scheme function, get-line-width, which returns the line
-    width used to draw a given object.
-
-commit 22d475b9beb10be2aa27197d6ad59f728a1f034f
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jul 5 07:55:43 2007 +0100
-
-    libgeda: Handle multiple libraries with the same name nicely.
-    
-    If a component library is added which has the same name as an existing library,
-    rewrites the name in the form "name<number>".
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 0484a4d7c925af33d18f5d9bfdeca240b735a9bb
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:18:27 2007 -0400
-
-    Oops, incorrectly specified libgeda's shared library version.
-    
-    The format for this version is X:Y:Z and for the most part the major
-    number just increments every release if there aren't any changes to
-    any interfaces.  For detailed information on how to change this number
-    see:
-    http://www.gnu.org/software/libtool/manual.html#Updating-version-info
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit e4e105b3309dcbc0b598318e1b24591dec39422a
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:52:58 2007 -0400
-
-    Provided an alternative implementation to glib 2.12.x only function
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit dbf600e34e2284fe1ec59242d541334bc27d3d49
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 16:51:32 2007 -0400
-
-    Implemented the ability to change the color of junctions (code for #1746675).
-    
-    The filled circles (at the junction of nets) and filled boxes (at the
-    end of unconnected nets) were the same color and it was hard to tell the
-    difference from a distance.  This patch addes (junction-color ...) rc
-    keyword and allows the user to change the junction color.  The default
-    color for the dark color scheme is yellow and the default color for the
-    light color scheme is purple.
-
-commit ca4571b1a6a49c97feb8fc6cc8cb926acc287ece
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    libgeda: s_clib_toplevel_get_symbol_names() is poorly named.
-    
-    s_clib_toplevel_get_symbol_names() returns symbols, not names of
-    symbols, so rename it to s_clib_toplevel_get_symbols().
-
-commit ab0fef1d36d05088f3891397103ebb15b3e3c2d0
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jul 4 18:03:53 2007 +0100
-
-    libgeda: Make command-backed component sources more flexible.
-    
-    Allow different commands to be specified for 'list' and 'get' with
-    custom command-line arguments.
-
-commit 62e7775f82d947efb1515ef8f9f776da88de62b4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 18:36:42 2007 +0100
-
-    libgeda: Add a newline to a component library log message
-
-commit c144221daf8ef133f39e14c76447a1b556c54853
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 15:50:31 2007 +0100
-
-    libgeda: Add fine-grained control over f_open() behaviour.
-    
-    Add a function f_open_flags() which takes an extra argument which is a
-    set of flags controlling actions taking while opening a file. f_open()
-    wraps this with a default set of flags.
-    
-    Coincidentally, this also leads to a trivial fix for the file open
-    dialog backup-message bug.
-
-commit 301614ec1f0e97de952f071d5f40f885ca7484ce
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jun 27 19:48:04 2007 +0100
-
-    libgeda: Add function which retrieves a list of symbols in use.
-    
-    Add the s_toplevel_get_symbol_names() function, which scans a TOPLEVEL
-    structure to obtain a list of all symbols used in open
-    schematics.
-
-commit c7f1e67533518517f310fd037c7e24cb248a4f23
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jun 27 19:48:04 2007 +0100
-
-    libgeda: Make s_page_new() use g_new0() for a blank page.
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit 1c76ee9d84ea4fcdc924d992ecc3a828887eff4f
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:17:03 2007 -0400
-
-    Removed all trace of libgd usage and removed some old ps printing routines.
-    
-    All trace of libgd and HAS_LIBGD has been removed.  Some obsoleted and
-
-commit 868d31c36736b1ceebdd9a7cea6d12d12ecf89a9
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 15:46:46 2007 -0400
-
-    Removed libgd and indent tests from configure scripts.
-    
-    indent is no longer use since noweb was removed a long time ago.
-    libgd is no longer used since libgeda/gschem uses mage export support in gdk.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit 1f1c7f4d9ab541454d39a4ec770f6e9bdd9bfa16
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 14:01:30 2007 +0100
-
-    Re-enable s_clib_refresh().
-    
-    Now that OBJECT and TOPLEVEL no longer store pointers to CLibSymbol
-    structures, calling s_clib_refresh() is no longer likely to cause a
-    segfault.
-
-commit 67038ed9bece3a1317757b58a982ed29af2831c6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 13:50:57 2007 +0100
-
-    Don't cache symbol pointers in persistent structures.
-    
-    Several persistent structures, including TOPLEVEL and OBJECT, cache
-    pointers to CLibSymbols.  This is bad, because it makes removing
-    component sources or rescanning them likely to cause stale pointers
-    around the place.
-    
-    With fast hashtable-cached searches in place, this is no longer
-    necessary.  This patch ensures that only symbol names are stored
-    persistently.
-    
-    This patch also enables descending into embedded symbols using a
-    component library lookup on the embedded symbol's name.
-
-commit 1c226a4ebe5f297460cccf8568b7d7b7b2179253
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 13:32:45 2007 +0100
-
-    Factor out TOPLEVEL.current_clib.
-
-commit fe621022acfbe69688878b70d4c40883f8f2a3df
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 22 08:34:33 2007 +0100
-
-    Add s_clib_get_symbol_by_name().
-    
-    Add a new function which returns the first exact match for a given
-    symbol name, printing log messages if either there are more than one
-    match or no matches are found at all.  Also update
-    s_clib_symbol_get_data_by_name() to use new function and remove
-    o_complex_add_by_name() as more or less redundant.
-
-commit 01fd87d78aa26d3c29b4141878b5f48edab264ec
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:05:53 2007 +0100
-
-    Make comp. library search faster and more flexible
-    
-    Replace s_clib_glob() with s_clib_search(), which can operate in
-    either exact matching or glob matching mode.  Use a hashtable to cache
-    the results of library searches. The hashtable is cleared every time
-    it is invalidated (for instance if a component source is added or
-    removed, or the component sources are rescanned).
-
-commit 9dde0233ebed32065511b567445f9f34d4b3bea1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:06:56 2007 +0100
-
-    Refactor system RC files
-    
-    Moved system-gafrc into the libgeda package, where it belongs.
-    Removed all environment and configure substitutions.  Created separate
-    font and component library setup scripts in the symbols package,
-    automatically loaded by system-gafrc if they exist.  Updated
-    system-gschemrc to use new infrastructure.
-
-commit 041fa3eedf71df34cdd04bad4c2cd5b08cff7232
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:06:55 2007 +0100
-
-    Add infrastructure for installing Scheme files with libgeda.
-
-commit 10f0c8203b1fa9c87d09f1aeb4da28a0e5599ea8
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:06:55 2007 +0100
-
-    Make libgeda define Guile variables for the gEDA data paths.
-    
-    Add three variables from libgeda to the Guile environment:
-    geda-rc-path, geda-data-path, and path-sep.
-
-commit 2a2fa60eee536f48cc27c16f2577106e78250ed6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 9 20:30:14 2007 +0000
-
-    Fix gschem's sort-component-library option
-    
-    In the last release, the sort-component-library gschemrc option did
-    nothing.  This patch corrects the issue, by adding an argument to
-    s_clib_get_sources which enables or disables sorting the list of
-    component sources.
-
-commit eed0be648afd9bc421a8d0059de621df778c5fbe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:09:36 2007 +0000
-
-    Avoid writting '\r' to files on MinGW.
-    
-    Applied patch #1733826 from Cesar Strauss. Thanks.
-    When using the "w" mode in fopen, MinGW translates LF into CR-LF.
-    This creates havoc when reading the same file again, when sharing
-    schematics files with other systems, and when placing them in a VCS.
-    
-    This can be avoided by using the "wb" mode. The "b" is ignored on
-    all POSIX conforming systems, according to these sources:
-    
-    http://www.die.net/doc/linux/man/man3/fopen.3.html
-    http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
-    
-    There are other ways, however. Adding
-    
-    #include <fcntl.h>
-    int _fmode = _O_BINARY;
-    
-    on some source file should work as well. Another way is linking
-    against the MinGW supplied binmode.o, which does exactly that.
-
-commit f1ba0fe139afec11f50fee01e92e5a727456bcce
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 15:38:36 2007 +0000
-
-    Fix for lack of permission-related file attributes on MinGW.
-    
-    Applied patch #1733728, with some tweaks, from Cesar Strauss. Thanks.
-    Define some file permissions as 0 if they are not defined.
-    Don't use chown if it is not available.
-
-commit 419b4d152b0b2ae6546052ccb8d87ef26fa83752
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 14:59:01 2007 +0000
-
-    Added EPS support.
-    
-    Applied patch #1713747 (with minor tweaks) from Wojciech Kazubski
-    adding support for EPS when writing an image. Thanks.
-
-commit ef0ca7042e49ed3f26ec61c71085378ab04fef6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jun 9 14:44:27 2007 +0000
-
-    Applied patch from Ivan Stankovic that displays entered characters in
-    the status bar
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-commit 66fb25858496cdf33e1456b835d68a16bb7ccdcd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 2 16:33:34 2007 +0000
-
-    Improve Guile configure checks & remove 1.4 compat. code.
-    
-    Removes compatibility code for Guile 1.4, and makes configure scripts
-    check for actual Guile version.
-
-commit cd3149619aac30cb158a13733c76fad9c98faaee
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 21:24:19 2007 +0000
-
-    Require Guile 1.8.x
-    
-    Guile 1.8.x is the current stable series, and 1.6.x is getting old.
-    Require 1.8.x for libgeda.
-
-commit b3cacc6ddb4135c63057b1856a0693fd7f1043ba
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 08:13:50 2007 +0000
-
-    Component library documentation updates.
-    
-    Various changes to update & improve component library documentation.
-
-commit ac91166a7d5fe429d28e96cc7bc3adec724faa7e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:59:41 2007 +0000
-
-    Match .sym suffix case-insensively when building component library.
-    
-    When building symbol lists for directory-based component sources,
-    match the ".sym" filename suffix case-insensitively.  Note that for
-    backward- compatibility (and sanity on systems with case-sensitive
-    filenames) searching for symbols does match symbols
-    case-sensitively ("plug.SYM" will not satisfy a search for
-    "plug.sym").
-
-commit 361853bdb0e60db2ea121ec2dd49341ce0b4a2e7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:56:47 2007 +0000
-
-    Add component sources based on Scheme procedures.
-    
-    Add the ability to use a set of Scheme procedures which list and
-    return component symbols as the backend of a component library.  Adds
-    the g_rc_component_library_funcs() and s_clib_add_scm() functions to
-    libgeda, as well as the component-library-funcs rc file function.
-
-commit 51141f6de037902bef8870f473ae4ce3836b758e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:53:25 2007 +0000
-
-    Change way that component source conflicts are checked.
-    
-    Allow the same component source to be added more than once, but only
-    if it has a unique name.  Also adds s_clib_get_source_by_name().
-
-commit ef835e4c2be6f907c0f743a989be6a33f740071e
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:50:39 2007 +0000
-
-    Sort lists of component sources and symbols.
-    
-    Adds functions to compare sources and symbols by name
-    case-insensitively, and makes the both s_clib_source_get_symbols() and
-    s_clib_get_sources() return lists sorted by name.
-
-commit a0038f45b535b7a4e48d491e0a44bf222c790208
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:48:31 2007 +0000
-
-    Add & update Scheme callbacks for new component library.
-    
-    Add the (component-library-command) function, and make
-    (component-library) take an optional second argument for the
-    directory's source name.
-
-commit 2a1ac73a53cdde48883d77ff6d90b51e5a19c561
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:46:11 2007 +0000
-
-    Provide better names for component sources.
-    
-    Full pathnames aren't very user-friendly in the component
-    browser, and sometimes the name you want for your
-    component source isn't the same as the directory name. This
-    patch provides an infrastructure for better source naming,
-    while falling back to the "classic" behaviour if necessary.
-
-commit 32254c4c57c9f7450d31b61a98368e56769d33ab
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:37:49 2007 +0000
-
-    Implement new component library system in libgeda.
-    
-    A new component library model is needed to allow gschem etc.
-    to work well with part database systems.  This patch
-    provides the necessary infrastructure in libgeda, without
-    the frontend Guile commands required to make use of the new
-    features.  In particular, it abstracts the component
-    library into the concepts of "Component Sources" and
-    "Symbols", and allows external "Library Commands" to
-    provide symbol data in addition to the traditional directory
-    libraries.
-    
-    In order to allow the new system to work, there are major
-    changes in all code which manipulates COMPLEX objects; in
-    particular, the magic "EMBEDDED" string is now only used
-    in the on-disc representation.
-
-commit 40833189228f8edeffce6eeb1bbdcdb1c0c64b2c
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:31:36 2007 +0000
-
-    Add new file omitted in previous commit.
-
-commit 022421c35c53cbfe4ea936cc1d31b192cfd34ab7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:30:31 2007 +0000
-
-    Make libgeda parse schematics from buffered data.
-    
-    In order to support more complex methods of acquiring symbol
-    data, libgeda needs to be able to load schematics and symbols
-    directly from a memory buffer as well as from files.
-
-commit 2f30fb34dbbeb61650d69737913e80daa75dc172
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon May 28 07:27:23 2007 +0000
-
-    Add managed text buffers to libgeda.
-    
-    In order to facilitate loading symbols & schematics from
-    memory without an extensive rewrite, this patch adds an API
-    for reading memory arrays a bit like a file.
-    
-    Using memory streams & fgets would be nicer, but unfortunately
-    memory streams are a GNU libc extension.
-
-
-#GCL#
diff --git a/libgeda/Makefile.am b/libgeda/Makefile.am
index 0659bf4..2b9f142 100644
--- a/libgeda/Makefile.am
+++ b/libgeda/Makefile.am
@@ -1,7 +1,7 @@
 
 SUBDIRS = po data docs include lib scheme share src
 
-EXTRA_DIST = HACKING BUGS ChangeLog-1.0 po/domain.mak.in
+EXTRA_DIST = HACKING BUGS ChangeLog ChangeLog-1.0 po/domain.mak.in
 
 pkgconfigdir            = $(libdir)/pkgconfig
 pkgconfig_DATA          = libgeda.pc
@@ -10,6 +10,11 @@ libgeda-pc-install: libgeda.pc
 	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
 	$(INSTALL_DATA) libgeda.pc $(DESTDIR)$(pkgconfigdir)
 
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
+
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
 DISTCLEANFILES = *.log core FILE *~ libgeda.pc po/domain.mak
diff --git a/symbols/.gitignore b/symbols/.gitignore
index c9844eb..945c716 100644
--- a/symbols/.gitignore
+++ b/symbols/.gitignore
@@ -13,3 +13,4 @@ mkinstalldirs
 config.guess
 config.sub
 *~
+ChangeLog
diff --git a/symbols/ChangeLog b/symbols/ChangeLog
deleted file mode 100644
index cd69037..0000000
--- a/symbols/ChangeLog
+++ /dev/null
@@ -1,605 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit cf9db58115f4924f4c64d4012bde3c902f2f918d
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Feb 3 10:07:25 2009 +0100
-
-    fixed whichend of the symbol 7495-1.sym
-    
-    Bug reported by Oliver Lehman on geda-user mailing list
-
-commit 9e3e45193643d5bca628df5074fd1aedd7ff619c
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Wed Dec 31 08:58:44 2008 +0100
-
-    symbols: micro overbars rework (part 3)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 2c2093b628981dc05ffc75279218cb2b240e4513
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Wed Dec 31 08:58:11 2008 +0100
-
-    symbols: micro overbars rework (part 2)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 19e046c9bf653ffec4ac7efbf3a7d510d3c2da14
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Wed Dec 31 08:57:46 2008 +0100
-
-    symbols: micro overbars rework (part 1)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 5fbfceb2162b1c227ef8e2ae487455cce24e34af
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Dec 30 11:40:56 2008 +0100
-
-    symbols: overbar rework memory (2)
-    
-    updated 2 missing symbols with \_overbars\_
-
-commit 80f6b087e306bd205e748c87d7d317b1d03952ed
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 30 11:24:22 2008 +0100
-
-    symbols: national overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 9e4d65dce80bc14e27fbcb339f87550da7d02688
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 30 11:23:45 2008 +0100
-
-    symbols: memory overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit b5b925647b3538ac68d2153f6505fe5481182312
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 30 11:23:16 2008 +0100
-
-    symbols: io overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit c01936478407ce5c0ad2548e4cda23686d8c02b1
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Tue Dec 30 11:22:19 2008 +0100
-
-    symbols: allegro overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 3b879637e8b33961042f06c85b4293b0b6958f60
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:06:21 2008 +0100
-
-    symbols: misc overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 09029b10e3a97a5ad27f80f0e8c267aa49a9e212
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:05:41 2008 +0100
-
-    symbols: connector overbars rework
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 7ced480e4ae1642931abed209547efe1f7e8c7e0
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:04:47 2008 +0100
-
-    symbols: linear overbar rework
-    
-    replace line overbars with implicite \_overbars\_
-
-commit 1593b20ae48872e60e5e72b513603381a836da87
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:03:33 2008 +0100
-
-    symbols: 74 overbars rework (part 4)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 51476ae944ab64bc0b3435232d7d65fcbfe17635
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:02:48 2008 +0100
-
-    symbols: 74 overbars rework (part 3)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 80b0aca42a484985c409150176ff6c0ca4c7007d
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:01:56 2008 +0100
-
-    [PATCH] symbols: 74 overbars rework (part 2)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit f8267681348874899ee687abd7e0ea2a4f9c37d1
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Mon Dec 29 10:01:20 2008 +0100
-
-    symbols: 74 overbars rework (part 1)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 93450371d4557f94570863be3a283c7862ab01d6
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Dec 28 12:01:16 2008 +0100
-
-    symbols: 4000 overbars rework (part 3)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit 34b9c21180e64b8fb99661cecabf88aed15bc35b
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Dec 28 08:31:51 2008 +0100
-
-    symbols: 4000 overbars rework (part 2)
-    
-    replace line overbars with implicit \_overbars\_
-
-commit fcdc312a4d5cebd3d5ee1de685ec92fb4219e0f6
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sun Dec 28 08:12:50 2008 +0100
-
-    symbols: 4000 overbars rework (part 1)
-    
-    replace line overbars with implicit \_overbars\_
-    fixed a single maxim symbol
-
-commit 79127f9f9f4e59688c934069c307f65a3cf88d9f
-Author: Bert Timmerman <bert.timmerman@xxxxxxxxx>
-Date:   Sat Dec 27 21:29:41 2008 +0100
-
-    symbols: maxim overbar rework
-    
-    replace line overbars with implicite \_overbars\_
-
-commit f2db774aa2a5955fa7c790c869ad55bb92993573
-Author: Stuart Brorson <sdb@xxxxxxxxxx>
-Date:   Sat Dec 27 16:57:19 2008 -0500
-
-    Fix ground.sym file so that it will netlist inside of spice-sdb.
-
-commit 35ea568246a8df14f7f6fa4b6c375e72662638d6
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 27 13:17:16 2008 +0100
-
-    symbols: set show_name_value of non-attributes to show_all
-    
-    Some pure text elements had set the show_name_value field to 1.
-    Even if this is not completely wrong. I think it's better to
-    use show_name_value > 0 only for attributes.
-
-commit 1c64bc071b9b89ca66582fecee9d5328b7da2f46
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Dec 27 10:02:30 2008 +0100
-
-    fixed symbol micro/pic16F876-1.sym [#2470098]
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit c2c94821ec6c9a83d0144adad7f6fa190f403af3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 3 00:23:52 2008 +0000
-
-    Bump fileformat verison to 2
-    
-    Since we've added path support, we need to bump the file-format
-    version before any new release is made.
-
-commit 6a9942cfd3ba216dd83b18521f5b9c8c99aa12c3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Nov 3 00:23:47 2008 +0000
-
-    symbols: Fix fill of emitter arrow in npn-1.sym
-    
-    Revert an acidental change which switched off filling of this arrow.
-
-commit beae647a1e0217dc5802084a6e00522a59ad5a28
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 2 20:20:32 2008 +0000
-
-    libgeda: Emit each segment of paths on separate lines
-    
-    This allows greater redability of the path output, and simpler
-    diffs when a single control point changes.
-    
-    Update the stock symbols which had paths emitted on a single line.
-    Both read-back fine, but its best that we ship symbols in a state
-    where a load / save cycle would not change the formatting.
-
-commit 5f4679ea28dd036a40973e2e8888439ee426a7b2
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Oct 26 09:30:10 2008 +0100
-
-    symbols: file format update of several symbols
-    
-    updated from the "v 20030901" format to the current one.
-
-commit 53439f075b0be1edd2ae18e34f8a0f8f4d503e08
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 14:27:59 2008 +0100
-
-    Rename "path" object identifier in the fileformat from "p" to "H"
-    
-    All other OBJECT type identifiers are upper case, and for consistency,
-    now patHs are too.
-    
-    NB: No releases have been made since path support was added, so this
-        change is still permissable.
-
-commit 5093b71054669254951550f532ee1c6a52ae3ab9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Sep 26 00:58:18 2008 +0100
-
-    symbols: Add solid polygon arrow-heads to transistor emitters
-    
-    Takes advantage of the new path / polygon support.
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit 7db9237c6e382a81fd5e536bbab8b4a8c78650b1
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Apr 13 12:55:14 2008 +0200
-
-    fixed net errors in symbols 4164-1.sym and pic12F675-1.sym
-    
-    memory/4164-1.sym: switched Vcc and GND. fixes BUG [#1940747]
-    micro/pic12F675-1.sym: removed duplicate nets
-    minor documentation fixes.
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit f1d90025127f83b606003ae9a42b85fdba60e490
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 21:29:01 2008 -0500
-
-    Fixed reversed VDD/VSS nets in this hex schmitt trigger
-    
-    There are probably more 4000 series symbols that have VDD and VSS
-    reversed.
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit 9b075276bf13f694b9d7f2cf64197da03b7d1cc6
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 13 10:13:26 2008 +0100
-
-    fixed symbol with invalid pintype attribute
-
-commit 94710653de304223bfc0a28714b65b603f00c371
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 13 10:04:13 2008 +0100
-
-    detach missplaced symbol attributes
-
-commit fff1b269a4fbedd7b53fb6673377bb35beb0805c
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 13 09:46:41 2008 +0100
-
-    fixed two symbols with missplaced pin attribute errors
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit bf5bee9817c59dc8c0f97f95a677cf3d5341b798
-Author: Dan McMahill <dan@xxxxxxxxxxxx>
-Date:   Thu Jan 10 20:38:05 2008 -0500
-
-    add MAX3674 symbol
-
-commit d0a4d59bef3464e82813a496732b7eac15778874
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 6 13:50:23 2008 +0100
-
-    symbols: added german sharp s character to the font
-    
-    added character and added it to the geda-font.scm definition
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit e4a1fa8545e76b4ef82cc1253e65a844fa5fea88
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Nov 29 13:32:15 2007 +0000
-
-    symbols: Nicer names for default libraries
-    
-    Use the features added in the component library backend rewrite to
-    give the default component libraries less cryptic names.
-    
-    Also, put them in a sensible order, and disable component library
-    sorting by default so that that order is preserved.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit ce2255f2633c9bb14dcd3813e019a84d8acce3a3
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 21:24:15 2007 +0100
-
-    Alter system-gafrc to process .scm files in $GEDA_DATA_DIR/gafrc.d/
-    
-    This change allows each symbol package (e.g. geda-symbols) to install a
-    scheme config file under this dir to load its contents. This allows
-    additional symbol packages to be installed globally without needing to edit
-    either geda-clib.scm or system-gafrc.
-    
-    Also moves the installation of geda-clib.scm into this directory.
-
-commit 89e453d165095d22c151ff9c1195c7d3e1fea811
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Sep 15 10:45:44 2007 +0200
-
-    fixed symbols/linear/lm7912-1.sym
-    
-    changed pinnumbers and added footprint and some attributes
-    bumped symversion to 1.0
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 525b4a0ff3a1b8cc321f117513796e4571702da8
-Author: Bernd Jendrisse <bernd.jendrissek@xxxxxxxxx>
-Date:   Sun Jul 29 09:56:33 2007 -0400
-
-    Applied patch to use $(GROFF) instead of which groff
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit ba691725f807a4b0a250bfab5111a2c74c289413
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Jun 28 15:49:44 2007 +0100
-
-    symbols: Distribute ChangeLog-1.0
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 018e591753e79a8d60fc3500dc90c60ff880983d
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:57:27 2007 +0100
-
-    symbols: Fix right parenthesis font definition.
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit 9dde0233ebed32065511b567445f9f34d4b3bea1
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Jun 15 09:06:56 2007 +0100
-
-    Refactor system RC files
-    
-    Moved system-gafrc into the libgeda package, where it belongs.
-    Removed all environment and configure substitutions.  Created separate
-    font and component library setup scripts in the symbols package,
-    automatically loaded by system-gafrc if they exist.  Updated
-    system-gschemrc to use new infrastructure.
-
-
-#GCL#
diff --git a/symbols/Makefile.am b/symbols/Makefile.am
index 2ed075b..c64e790 100644
--- a/symbols/Makefile.am
+++ b/symbols/Makefile.am
@@ -60,10 +60,18 @@ datasymdir = $(GEDADATADIR)/sym
 nobase_dist_datasym_DATA = \
 	vhdl/verilog2vhdl.sh vhdl/script.sed
 
-EXTRA_DIST = ChangeLog-1.0 \
+EXTRA_DIST = ChangeLog ChangeLog-1.0 \
 	font/README font/ChangeLog font/ChangeLog-1.0 \
 	radio/README AUTHORS
 
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+font/ChangeLog:
+	$(MKDIR_P) font && \
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- ./font) > $@
+endif HAVE_GIT_REPO
+
 # Copies symbols into distribution
 dist-hook:
 	@for lib in $(symbol_dirs); do \
diff --git a/symbols/font/.gitignore b/symbols/font/.gitignore
index 23c1897..99c08fe 100644
--- a/symbols/font/.gitignore
+++ b/symbols/font/.gitignore
@@ -1,3 +1,4 @@
 Makefile
 Makefile.in
 *~
+ChangeLog
diff --git a/symbols/font/ChangeLog b/symbols/font/ChangeLog
deleted file mode 100644
index 71ffffc..0000000
--- a/symbols/font/ChangeLog
+++ /dev/null
@@ -1,122 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit d0a4d59bef3464e82813a496732b7eac15778874
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sun Jan 6 13:50:23 2008 +0100
-
-    symbols: added german sharp s character to the font
-    
-    added character and added it to the geda-font.scm definition
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-
-#GCL#
diff --git a/update-changelogs.sh b/update-changelogs.sh
deleted file mode 100755
index b52e3fb..0000000
--- a/update-changelogs.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-#
-# ./update-changelogs.sh <options>
-# Updates ChangeLog files.
-#
-# e.g. if the main gEDA branch is called master, then to update all
-# ChangeLogs with revisions since the switch to git, do:
-#
-# ./update-changelogs.sh 1.0-20070526..master
-#
-# This should be only be run while preparing a release, in order to
-# ensure that the released tarballs contain change logs which can be
-# viewed without access to the git repository.
-#
-#
-
-if [ "$1" == "" ]
-then 
-    echo "usage: ./update-changelogs.sh 1.0-20070526..master"
-    echo " or"
-    echo "usage: ./update-changelogs.sh 1.0-20070526..BRANCH_NAME"
-    exit 1
-fi
-
-GCLHEADER="# Do not edit this file - generated from version control history"
-GCLFOOTER="#GCL#"
-
-if ! git-log -n1 > /dev/null; then
-    exit $?
-fi
-
-for cl in $(find . -name ChangeLog); do
-    echo "Updating ${cl}"
-    dir=$(dirname $cl)
-    if tail -n1 ${cl} | grep $GCLFOOTER > /dev/null; then
-        echo -e "$GCLHEADER\n\n" > $cl
-        git-log --pretty=medium $@ -- $dir >> $cl
-        echo -e "\n\n$GCLFOOTER" >> $cl
-    else
-        echo "${cl}: Doesn't appear to be git format log, skipping"
-    fi
-done
diff --git a/utils/.gitignore b/utils/.gitignore
index a6c1b63..d06d70e 100644
--- a/utils/.gitignore
+++ b/utils/.gitignore
@@ -17,3 +17,4 @@ mkinstalldirs
 compile
 *~
 ylwrap
+ChangeLog
diff --git a/utils/ChangeLog b/utils/ChangeLog
deleted file mode 100644
index 5dcdf8f..0000000
--- a/utils/ChangeLog
+++ /dev/null
@@ -1,1067 +0,0 @@
-# Do not edit this file - generated from version control history
-
-
-commit 546d4dbe0124d3f9421116b9e5a8889cccf97b84
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:22:19 2009 -0400
-
-    Updated all ChangeLogs
-    
-    Updated the ChangeLogs by running:
-    	./update-changelogs.sh 1.0-20070526..master
-    in the toplevel directory
-
-commit 21e8c0b232e08927fd091a1d46413990b4c61358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:18:34 2009 -0400
-
-    Updated all dates in the relavent man pages (for 1.5.2.20090328)
-
-commit 859abe69912ba99ca27bb58c378284e9eec56259
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Mar 28 15:13:59 2009 -0400
-
-    Updated all versions to 1.5.2 20090328 36:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.2 20090328 36:0:0
-
-commit 326958985a98cb638efe4d0579c0f9d2d89e140e
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Jan 27 21:02:24 2009 +0100
-
-    tragesym: put attributes on top if there are no top pins
-    
-    If you put pins on either the top or bottom of a symbol, tragesym
-    moved the name around and changes the positioning. However, this is
-    only necessary if pins are on top, and the logic should ignore pins on
-    the bottom.
-    
-    Fix suggested on gEDA mailing list by Matt Ettus <boyscout@xxxxxxxxx>
-
-commit 3c0d85eae92d5764aa7dee2899c6a066c3470ee3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 14:11:39 2009 +0000
-
-    Write logs to $HOME/.gEDA/logs/.
-    
-    Rewrite s_log_init() to put log files in a centralised location. A
-    user application (e.g. gnetlist) provides a prefix, and log file is
-    opened at:
-    
-       $HOME/.gEDA/logs/<prefix>-<YYYYmmdd>-<serial>.log       [1]
-    
-    The serial is found by the following procedure:
-    
-    1. Read through the directory to find the highest existing <serial>.
-    
-    2. Starting with that number, repeatedly attempt to open()
-       incrementing files with O_CREAT|O_EXCL flags to guarantee that a
-       new file is created.
-    
-    3. If after LOG_OPEN_ATTEMPTS = 5 attempts a unique filename hasn't
-       been found, fail.
-    
-    The logic *intentionally* does not fill in gaps in the sequence -- if
-    I delete logs, I still want a new log to appear at the end of the
-    list.
-    
-    [1] The actual location is a subdirectory "logs" of the user config
-        directory, which may not be ~/.gEDA on all platforms.
-
-commit 985966c57e1d3f57b8e6407756ecc7a7150484fd
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Jan 21 13:46:00 2009 +0000
-
-    gsch2pcb: Change load path for user's gsch2pcb rc file.
-    
-    Load the user gsch2pcb configuration from ~/.gEDA/gsch2pcbrc instead
-    of ~/.gsch2pcb.
-
-commit 94694e4b1470378172c2ca65964b51d381c84cf3
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 20 15:52:09 2009 +0000
-
-    utils: Fix some minor compile warnings.
-    
-    Fix a signedness warning in sarlacc, and cast away a const qualifier
-    in gschlas.
-
-commit fda82eb96e2c785efe91fd59d01f6e7e26b897ed
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sun Jan 18 01:48:58 2009 +0000
-
-    Protect some strings passed to pkgconfig.
-    
-    Ensure that pkgconfig version requirement strings are protected from
-    M4 expansion.
-
-commit ee250c9bd2e88bf352a03d1719603b7d54fe430c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:30 2009 +0000
-
-    Avoid underlinking of apps due to missing explicit depends
-    
-    These went unnoticed because the apps were resolving the necessary
-    symbols when pulling in libgeda and its dependencies.
-    
-    Fix applications using GLib and guile within the suite to explicitly
-    pull in the appropriate CFLAGS and LIBS. This commit removes some
-    LDFLAGS and LIBS from grenum, since they weren't being used.
-
-commit 0cfeefc37856c30fc57f9ca803ffb1f7f11310e7
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jan 13 23:58:05 2009 +0000
-
-    libgeda, utils: Check for same glib version as rest of suite; 2.8.x
-
-commit 1645fda42758a837c7ccf1efd32fd3b484e22421
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 22:17:44 2009 +0000
-
-    Remove unused GTK dependencies from text-based tools
-
-commit a344ff9c33b9bbb7b1a622b70dcedf393e1de09a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jan 10 20:41:43 2009 +0000
-
-    Remove some unused Gdk* typed variables from globals.[ch] across the suite
-
-commit 3df7a807e5db0a1821805da93079d8b60c1307fc
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jan 10 13:44:02 2009 +0100
-
-    Fix install directory for gxyrs perl package.
-    
-    Change install directory for gxyrs perl package from GEDADATARC/gxyrs
-    (usually /etc/gEDA/gxyrs) to PREFIX/share/gEDA/perl/lib.
-    Thanks to Peter Clifton for reporting this bug.
-
-commit d7b7b23721b4054172587c9961d4b87f47bee198
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 31 17:26:03 2008 +0000
-
-    libgeda: Remove non-private access of PAGE->object_list
-    
-    This allows us to keep better track of where the PAGE must be updated
-    should we have any spatially keyed data-structures in the future.
-    
-    Rename PAGE->object_list PAGE->_object_list to try and discorage any
-    use of it outside libgeda (ideally, outside s_page.c) in the future.
-
-commit 46fdb00b19d300dfcc5f9009f9c7dbbf0940834f
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 24 04:01:46 2008 +0000
-
-    gschlas: Fix segfault opening file
-    
-    Segfault introduced in commit b635ebb641383360e5e7864830d42d13cf7f4d12.
-
-commit 3c49636e1a9e9e703fab4c6aafc69affb4fd2bab
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 16:23:26 2008 -0500
-
-    Updated ChangeLogs one more time.
-
-commit 2f3e07a1fa7fd92ab163d2cd966efd98ab306512
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:40:21 2008 -0500
-
-    Updated ChangeLogs again in prep for the 1.5.1 release
-
-commit 76d02f7f935d930d8093bd49b7eb0836d3b1aa6e
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 14:06:17 2008 -0500
-
-    Updated all ChangeLogs in prep for the 1.5.1 release.
-    
-    The update was done by running:
-    ./update-changelogs.sh 1.0-20070526..master
-
-commit 680e08085d44c9876bdadef0ca7ef25b474c2006
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:39:29 2008 -0500
-
-    Updated all versions to 1.5.1 20081221 35:0:0
-    
-    Updated by running:
-    ./update-versions.sh 1.5.1 20081221 35:0:0
-
-commit 4f9f4336a123f91318ec2d1ffd8e9739eb756348
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 13:10:23 2008 -0500
-
-    Updated dates and versions in all man pages
-
-commit 82697dd3aa503cd9258ff410a56506e4e023990d
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Dec 21 12:28:41 2008 -0500
-
-    Removed unused variable
-
-commit e1c88171f997c8cfa6033f54a6d7877374cde228
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Dec 21 16:18:47 2008 +0100
-
-    Check if gxyrs.pm exists in gxyrs's run_tests.sh.
-    
-    Check if gxyrs module exists in gxyrs's run_tests.sh and output
-    and meaningful error message if it is not found.
-
-commit e92680deb2e9a4c87eae77df5f1cfc2b0d2529b6
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Dec 21 15:49:38 2008 +0100
-
-    Fixed up gxyrs run_tests.sh to work with both make distcheck.
-    
-    Add gxyrs source directory to perl's include variable, so gxyrs.pm
-    file could be found when make distcheck is executed.
-
-commit 6329c5a7bdae9573f01f92403e4645e79e66aab5
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Dec 20 14:41:05 2008 +0000
-
-    Update copyright header dates to 2008.
-    
-    (And I'll have to do this all again in a few days time).
-
-commit 617797b5a47d370c4fee19110c826502b7e3082b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Dec 9 16:19:09 2008 +0000
-
-    Remove linkage between OBJECTs and use GList for OBJECTs on the page
-    
-    This affords quite a lot of code clean-up, since we no longer have to
-    maintain two versions of each operation which works on lists.
-
-commit 2f5b7e9d890953680caa4fa111c31a0be4123d97
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Dec 8 17:16:20 2008 +0000
-
-    Adjust MINGW32 specific CFLAGS from the suite
-    
-    Console applications should not build with the -mwindows flag, otherwise
-    output reach the console. Conversely, we should build the GUI apps, gschem
-    and gattrib with -mwindows so they don't bring up a console window when
-    running.
-
-commit 0545db388236ea7a7aaa49d8911ad96481b4978e
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Dec 7 17:33:46 2008 +0000
-
-    Remove some old comments better explained in commit history
-    
-    Comments annotated with a dates and developers initials clutter the
-    code with historical details people may be reluctant to remove. Not
-    all of these are still relevant, and those which are should probably
-    could be kept in such a way as not to suggest code ownership. The
-    commit revision log is a better place for determining authorship.
-    
-    Fix some whitespace in surrounding areas where I couldn't resist.
-
-commit 62229e7d56bcc698a86e52e75d3ab274e0ffbe75
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Nov 26 23:24:08 2008 +0100
-
-    Fixed typo in help message.
-    
-    Forgot to change the name of the script in the title of the
-    help message when adapted this script from refdes_renum testsuite.
-    Fixed now.
-
-commit a9c125f23745182930972deb74879c39e8c9fa51
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Nov 26 23:19:20 2008 +0100
-
-    Fix some gxyrs build problems with 'make distcheck'.
-    
-    'make distcheck' put the executables in a different tree than sources.
-    Therefore, this script has to look in builddir directory for gxyrs
-    script.
-    
-    As a bonus, gxyrs script location is now declared at the beginning
-    of this script, and it checks if gxyrs script exists.
-
-commit 5e446736977dd4207b072c6666b6070be112aa1b
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Wed Nov 26 23:16:12 2008 +0100
-
-    Explicitely declare target 'all' as gxyrs.
-
-commit c0ede86bc300a3b31574b709690530e693550c89
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Tue Nov 25 19:40:52 2008 +0100
-
-    Rename gxyrs golden files to comply with tar limit in filenames length.
-    
-    'tar' program limits all filenames length to be less than 99 characters.
-    
-    Renamed gxyrs golden files to comply with this requirement, and
-    updated tests list and Makefile.am accordingly.
-
-commit 48e8b4e068706acbfb254cc4a9dab5d3b03eef41
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 23 19:58:57 2008 +0000
-
-    utils: Fix gxyrs test-suite
-    
-    We built the path to the gxyrs script incorrectly when invoking from
-    make check. Remove the "utils" subdir from that path, and ensure we
-    set the right $top_srcdir path when invoking from the command line.
-
-commit a684d4de4648f677ab6f58182db8944a38c43150
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Nov 23 18:26:20 2008 +0000
-
-    utils: Fix EXTRA_DIST for utils/gxyrs to include gxyrs.pl
-
-commit d5f4b1882e98bde4f26e93e243fdb8d0ba120e99
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Tue Nov 18 21:31:13 2008 +0100
-
-    Added copyright notice to refdes_renum's run_tests.sh script.
-    
-    Added GPLv2 copyright notice to refdes_renum's run_tests.sh script,
-    as required by Dan McMahill, its original author:
-    http://archives.seul.org/geda/dev/Oct-2008/msg00132.html
-
-commit f421f5143b44939bfad52d7c51445142b7854c87
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Tue Nov 18 21:29:10 2008 +0100
-
-    Added new util: gxyrs.
-    
-    Added gxyrs, a new util to process XYRS files.
-
-commit 76195280b1f861c8952d4de52195b8b2de0f79d8
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 22:53:17 2008 +0000
-
-    gattrib, gschlas: Restore setting dummy select_func to ensure proper save
-    
-    The select_func function pointer (now owned and exported by libgeda) is
-    assigned to OBJECT->sel_func for non-locked objects. Locking is achieved
-    by setting OBJECT->sel_func to NULL, and when writing out objects, the
-    locked flag is determined by comparing that that pointer to NULL.
-    
-    We need to keep providing a dummy function so we can differentiate
-    between that and a NULL pointer. This was accidentally lost in
-    commit 1aab94354f053887db67aa5702abc595795dfe82 which moved the
-    select_func global variable into libgeda.
-
-commit f470af7a28afe423ded6171ea3c8a2b31ff56f43
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 20:47:41 2008 +0000
-
-    Revert applying -Werror to compiler flags when linking with GCC (CODE!!)
-    
-    Depending on the gcc version, the original developers might not see the
-    warning until the software gets into the end user's hands (and tries
-    building it with an older/newer version of gcc).  Most warnings are
-    not catastropic, but by using -Werror they are _all_ catastropic.
-    
-    If a developer wants to get rid of all warnings, they should either:
-    
-     1) run make -s and see/fix all the warnings, and/or
-     2) modify the Makefile's themselves and add the -Werror flag temporarily.
-    
-    (Comments explaining rationale snipped out of an email from Ales).
-
-commit de5f435b2dcedd048fa2e941827b0ebac231a299
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 17:46:53 2008 +0000
-
-    utils: Adjust Makefile.am so we add $(AM_CFLAGS) to {appname}_CFLAGS
-    
-    This allows us to add CFLAGS to all targets from the AM_CFLAGS variable.
-    
-    Also export app-specific CFLAGS from configure.ac for gmk_sym,
-    smash_megafile, convert_sym, sarlacc_schem and olib rather than
-    copying those for gschlas inside Makefile.am. This keeps things
-    cleaner should either set of CFLAGS need to change in the future.
-
-commit 2b1c2026611ef56fba3c07e88d1292b19047e818
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 17:45:57 2008 +0000
-
-    Use -Werror when building with gcc compilers. (More Makefile.am)
-    
-    Hopefully this will help to ensure compiler warnings get noticed
-    and fixed by developers.
-    
-    Some Makefile.am with compiled sources were missed in the last
-    (accidental) commit relating to these CFLAGS.
-
-commit 09eacbfb36e2b00758bce8d8add2f8f56cdcfdbb
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Nov 1 16:09:26 2008 +0000
-
-    Use -Werror when building with gcc compilers.
-    
-    Hopefully this will help to ensure compiler
-    warnings get noticed and fixed by developers.
-
-commit 1aab94354f053887db67aa5702abc595795dfe82
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Wed Oct 29 12:14:19 2008 +0000
-
-    Define select_func only in libgeda.
-    
-    Importing definitions from linkees breaks when linking libraries on
-    Windows.
-
-commit bcaf9f8dafcd25335b61b2ea80d071bde720bbd1
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Oct 26 10:41:31 2008 +0000
-
-    Use pkg-config support for Guile if present.
-    
-    Using pkg-config allows easier cross-compilation, since the build
-    process can use a pkg-config binary native to the build machine with .pc
-    files for the host machine.
-
-commit 5e9e5758e70e1e822d1850b1d4661c0f8ce8ff1d
-Author: Kipton Moravec <kip@xxxxxxxxxx>
-Date:   Mon Oct 6 02:18:13 2008 +0100
-
-    utils/convert_sym: Fixed typo causing build failure without snprintf
-
-commit 392dd3354812e812f548eadac2c83d8430acd7bf
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 29 01:19:39 2008 +0100
-
-    Remove conditionally compiled code for GTK/GLIB < 2.6
-
-commit 900274f0d6b08031f7cfc18a332da6b1939a44d1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 28 18:40:55 2008 +0100
-
-    Fix non-literal format strings which cause compiler warnings.
-    
-    We should be careful to avoid passing arbitrary strings into functions
-    which take printf style arguments. In that case, always use the construct
-    ("%s", string) rather than passing string as the format argument.
-    
-    Some cases were fixed by using g_strdup instead of g_strdup_printf(),
-    some simply replace printf() for puts().
-
-commit b4ed5e92d203c7449b7d33e924a41b093e1de930
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Aug 26 12:55:07 2008 +0100
-
-    Remove duplicate definitions of do_logging.
-    
-    Also sets the default in libgeda to TRUE.
-
-commit a974a4c6d2c233c9209c5b4597f7d4f86154f484
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 24 22:27:28 2008 +0100
-
-    Remove default-series-name from all rc files
-    
-    Fixes brokenness leftover from previous removal of "series_name".
-
-commit f1104b263b212b67576bfd1e73fa5036ee7f233d
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Aug 18 12:18:06 2008 +0100
-
-    gsch2pcb: Add --gnetlist-arg option to pass extra gnetlist arguments
-    
-    The "gnetlist-arg" directive also works in gsch2pcb project files.
-
-commit 11a2692a1ab8bcee14178286fd719d1ec39e6b9a
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Aug 16 15:24:16 2008 +0100
-
-    Draw func cleanup.
-    
-    Rather than having libgeda require other applications to provide the
-    *_draw_func symbols, libgeda should provide them itself. Other
-    applications should then override them as required near their call to
-    libgeda_init().
-
-commit 723e8d1c735b27f2bfc39dec296464bb8d5b2020
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Thu Aug 14 23:27:12 2008 +0100
-
-    Don't register recalc funcs as draw funcs.
-    
-    Some applications which don't draw schematics set the draw funcs to be
-    the recalc funcs. This is silly.
-
-commit 57a4fd272e10a68e05051a9ab9309e252e2103f7
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:12 2008 +0200
-
-    Purge AC_CHECK_FUNCS() in configure.ac in each package of unused functions.
-
-commit a76cf5cdda91c7070f4765107d3f8be89bbd05b6
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:01 2008 +0200
-
-    Remove unnecessary strippings of trailing directory separator.
-    
-    These strippings is no more necessary as GLib functions for building
-    filenames (in particular g_build_filename()) takes care of any
-    trailing directory separator for us.
-
-commit cd70e88b8c7faa4beea8b13b846e92807a252e63
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:03:00 2008 +0200
-
-    Replace getcwd() with g_get_current_dir().
-
-commit 90b0ece453efc80490c6c277386f4f5f7bfdc4af
-Author: Patrick Bernaud <b-patrick@xxxxxxxxxx>
-Date:   Fri Jul 11 16:02:59 2008 +0200
-
-    Simplify build of filenames with g_build_filename() (!).
-    
-    Modified code where possible to use preferably g_build_filename()
-    instead of g_build_path(), or g_strconcat() and friends.
-
-commit 8479d01b6a4a819ae105659a9b9f1e6ab2d85136
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 6 22:03:02 2008 -0400
-
-    Updated all ChangeLogs by running ./update-changelogs.sh 1.0-20070526..master
-
-commit 7ae9572f269c8b973bb4a38014e28dbc10cdcb32
-Author: Ales Hvezda <ahvezda@-e false.(none)>
-Date:   Sun Jul 6 08:38:24 2008 -0400
-
-    Bumped versions to 1.5.0/20080706/34:0:0 for the next development release
-
-commit faa7917f687694937baee932ea2efaa6fd16fd26
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu May 22 18:56:47 2008 +0200
-
-    tragesym: improved text alignment of top/bottom pin numbers. Version 0.0.14
-    
-    The origin of the top and bottom pin numbers and pin sequence did not have
-    the same relativ position to the pin compared to the left and right pin.
-    Fixed this relativ positions and the text alignments.
-    This cosmetic issue was reported by Stefan Salewski. [1945153]
-
-commit 234bb645ae97eb11f3ea04fadde107bc9865abf6
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu May 22 18:36:15 2008 +0200
-
-    tragesym: fixed version string handling
-    
-    With the commit 5a35c238f19622f8045784fa61497c80c4144fa6 a trailing " 1"
-    was added to the version string. This is only correct if the source files
-    do not contain that part of the version definition.
-    Changed tragesym to accept both version strings "20060113 1" and
-    "20060113" in the source file. Bug pointed out by Stefan Salewski.
-
-commit 267f6cae3b2aa6df5af8edc0bfbea95e72ee03b8
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Mar 29 20:49:28 2008 +0100
-
-    tragesym: moved pin comparison, cleanup version is now 0.0.13
-    
-    Use the old rules for sorting pins by it's label. The sorting function
-    is in the pin class now (__cmp__). Moved pin tests into pin class and
-    reenabled pintype translation.
-    Improved some test files.
-
-commit 324b94f10b4482e61701b4880d15aec52403d774
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Sat Mar 29 20:40:12 2008 +0100
-
-    refactoring of the tragesym code to use pin objects and getopt
-    
-    This commit changes the pin dictionary to a pin class and converts the
-    pin sort into pin comparisons inside the pin class It adds a nice
-    getopt command line interface and adds some more sanity checks. Thanks
-    for the patch written by Thomas Hille <thomas.hille@xxxxxx>
-
-commit af0d9f2e8825f7d23c691deec0e70f1eaaac0e38
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Mar 5 05:27:41 2008 -0500
-
-    Updated version to 1.5.0 to mark the start of the next development cycle
-
-commit b202ee510fb90cedd038ce5ec41cc6de453dbeea
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jan 27 11:47:13 2008 -0500
-
-    Updated ChangeLogs for the 1.4.0 release
-
-commit 3d43c5d642ebe12a69380e8accf5533d338ee5e5
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 26 20:07:45 2008 -0500
-
-    Bumped versions to 1.4.0/20080127/33:0:0 for the next stable release
-
-commit d2047bc2a06e6534ff32464d36f8a95aec11b9d7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Fri Jan 11 01:11:12 2008 -0500
-
-    Updated all ChangeLogs for this release (1.3.1)
-
-commit 48e264a2c6ebdc9663dc5b6cff7c464dcc5089fe
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jan 10 00:55:09 2008 -0500
-
-    Missed one man page that needed its version updated
-    
-    This change is also part of c1e3075cb263a6098d2351440b680247456ae0d0
-
-commit b2380c0f70344117be7045a5fc1483698fdf4358
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 20:57:51 2008 -0500
-
-    Bumped versions to 1.3.1/20080110/32:0:0 for the next development snapshot
-    
-    Note, libgeda's so did not change at this time.
-
-commit 400bc2ffa1d6a83725d87caf1c941a1f205b508b
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Jan 5 16:40:30 2008 -0500
-
-    Added the use of PCBDATA environment variable to make gsch2pcb relocatable
-    
-    Before this patch, m4_pcbdir was being set from the preprocessor variable
-    PCBDATADIR which was set at ./configure time.  In order to be able to move
-    gsch2pcb to a different install prefix, this path has to be changable at
-    run-time.  If PCBDATA is not set, then PCBDATADIR is used (previous
-    behavior).
-
-commit 5f3cde4f20975275cb38b52cd3155fda41201209
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 17:24:18 2008 +0000
-
-    Fix configure checks for Guile (again).
-    
-    The previous patch missed changing the gschem configure script
-    (generated from configure.ac.in), and got the logic wrong anyway.
-
-commit b9ffb4675fbca6e92a4f713c28486e74dcbbeef4
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Jan 1 15:42:13 2008 +0000
-
-    Fix configure checks for Guile.
-    
-    Quote variables to protect them and alter version test logic so that
-    it doesn't think version 2.1 is older than 1.8.
-
-commit 2f7e3ae60480743a8268d392272d05bd77dd75c8
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Mon Dec 31 20:43:08 2007 -0500
-
-    Updated all ChangeLogs for the past development release (1.3.0)
-    
-    This step was supposed to happen before the 1.3.0 tarballs were released.
-    These changes will be picked up in a subsequent release.
-
-commit ba474af87840a0d49e04a00de96b7df2944c09bd
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Dec 29 09:57:43 2007 -0500
-
-    Bumped versions to 1.3.0/20071229/32:0:0 for the next development snapshot
-
-commit 87721d1d2bd38398b47b840c7647c8126adbaa70
-Author: Christian Riggenbach <criggenbach@xxxxxxxxxxxx>
-Date:   Thu Dec 27 22:53:18 2007 +0000
-
-    utils: Fix indentation of comments in src/olib.l
-    
-    Indented comments in certain places seem to upset flex version 2.5.34.
-
-commit 3b040cf8d60a8fbe45f6e7c5f3d71a3dea119357
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Wed Dec 19 17:48:57 2007 +0000
-
-    Add intltoolize to the build infrastructure
-    
-    Provide intltoolize infrastructure for translating .desktop and MIME
-    XML files. Run gettextize after intltoolize if required, so that the
-    infrastructure for providing libintl on a non GNU system still works.
-
-commit b635ebb641383360e5e7864830d42d13cf7f4d12
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 21:48:17 2007 +0000
-
-    Print useful messages when f_open() fails.
-    
-    This reinstates error messages removed by the patch which modified
-    f_open() to use GError for error reporting.
-
-commit be301530f468e4d0057b3be68e218ac444c2d2be
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Fri Dec 7 17:20:55 2007 +0000
-
-    Make libgeda's f_open() & f_open_flags use GError.
-    
-    This patch actually *removes* error message output from file loading
-    errors is some cases.  This is for the sake of keeping the patch
-    concise, and will be addressed in later patches.
-
-commit ae225157603f063747709fa3d639ed8cdf63f6b1
-Merge: 1abfd25... 43b5713...
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Tue Nov 27 07:53:37 2007 +0000
-
-    Merge with Cesar's mingw/pu branch
-    
-    Merge commit 'cesar/mingw/pu' into premerge
-
-commit fff63c25fd6b3401cfc5bbf15706bb0107d74e8a
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sat Nov 10 17:45:13 2007 -0200
-
-    utils: Tell git to ignore the ylwrap file. [1833107]
-
-commit 8b490a404e682ac4f1e4cbd46e22c92f58b2ae76
-Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
-Date:   Fri Nov 23 21:42:50 2007 +0000
-
-    Compilation fixes for Mac OS X 10.5 [1832417]
-    
-    This patch contains changes to gEDA source tree that were necessary to
-    compile on Mac OS X (10.5 Leopard, PPC).
-
-commit bdd7ef7ee9047c3942b43c165396ebe48d31e95a
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 14:17:21 2007 -0200
-
-    Use g_path_is_absolute from GLIB instead of platform specific code.
-
-commit 40c0582e39d6a7ed0a41e0e5deedc0bfd03bbddc
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 19:11:12 2007 -0200
-
-    Use forward slashes as path separators on MinGW.
-    
-    They are also acceptable as path separators on MinGW.
-
-commit 4698fd163892243b931fbd7795ad9443f5b2fe58
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sun Nov 11 13:38:26 2007 -0200
-
-    Remove uneeded MinGW-only libraries.
-
-commit bde766abee9fe21857ef3c81bebc5a90c18bd315
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Sat Nov 10 17:45:13 2007 -0200
-
-    Tell git to ignore the ylwrap file.
-
-commit d715ba7dc3e02d77e671b9ab54b994379daefec5
-Author: Cesar Strauss <cestrauss@xxxxxxxxx>
-Date:   Thu Nov 15 13:34:40 2007 -0200
-
-    Tell git to ignore .exe files.
-
-commit de2f3d240562202f305a0ba1a8d58f2ba78a3876
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 16 19:38:25 2007 +0200
-
-    Misc corrections for tragesym spacer support
-    
-    remove spacers if the pinlabels are sorted
-    don't add pinseq at spacers
-    modified example to use the spacer support
-
-commit 80a51f9d4faa5cbeb3222046bdf67f11b34114ef
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Tue Oct 16 18:58:43 2007 +0200
-
-    Added spacer feature to tragesym
-    
-    A spacer line will put a gap between two pins.
-    Patch written by Gilbert Forkel. Thanks
-
-commit 4595948e41b2d195eb78a820fc15d0d8596067a4
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Oct 4 02:34:50 2007 +0100
-
-    Avoid accessing (GList)->{next|priv} directly to aid debugging.
-    
-    Instead use g_list_{next|previous}, allowing us to catch errors where
-    changing from gEDA structures which had their own next and prev pointers.
-    
-    To debug, edit the glist.h include file from glib, renaming the next and
-    prev elements in the GList structure and macros. Recompile gEDA to see any
-    bad accesses such as those where the HEAD nodes were previously skipped.
-
-commit 2e3c06cbcdce8254f70162ecebd650980cf70ee9
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:18:34 2007 +0100
-
-    Remove the globally exported variable_set_func.
-    
-    Only gattrib provided a non-NULL export of this symbol, and such imports
-    into libgeda prevent libgeda being dynamically linked on some platforms.
-    
-    To better match the other tools in the suite, gattrib's i_vars_set() and
-    i_window_vars_set() functions were combined into a single i_vars_set().
-
-commit 8952ec9bd4f4985fae8aadd6c4103b933464152a
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Sep 9 00:01:14 2007 +0100
-
-    Remove unused extern variables from libgeda, gnetlist and utils.
-
-commit adca8b7d5897b11331c6a20392d22ad1e58ee572
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Mon Sep 3 12:15:43 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 086908ed44c9abc6d5907888695933b59ead4684
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Sep 2 22:48:59 2007 -0400
-
-    Last minute updates to the READMEs for all projects
-    
-    Cherry picked from stable-1.2 branch, since these changes apply to master
-    too.
-    (cherry picked from commit 88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6)
-
-commit 6056ef48272778419d39e0233f395bfd60019ab9
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Aug 19 22:40:19 2007 -0400
-
-    Update ChangeLogs using: ./update-changelogs.sh 1.0-20070526..master
-
-commit 92b3b65d0cec286b0ce59fc43cc07dcb60c39fa1
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sat Aug 18 16:14:30 2007 -0400
-
-    Bumped versions to 1.1.2/20070818/30:2:0 for the next development snapshot
-
-commit 72c4db8aa20c22baa4243a0d27b3bb3f32f3ef64
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Tue Aug 14 07:46:06 2007 -0400
-
-    Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
-    
-    All the promotion keywords were moved from gschem into libgeda to fix:
-    [ 1748143 ] gschlas causes duplicate prompted attributes   The primary
-    cause of this bug was that the promotion variables within TOPLEVEL were
-    not being setup by gschlas and so duplicate refdes attributes were
-    showing up in the schematic.  The three rc keywords that were moved are:
-    
-    (attribute-promotion ... )
-    (promote-invisible ... )
-    (keep-invisible ... )
-
-commit 703151a94b0eece6b24b3b18ce2465eeae068814
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 9 12:36:17 2007 +0100
-
-    Remove old prototypes from various prototype.h where no function exists.
-
-commit 71600215311af0a98ed371ab750b09182de139a1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Aug 11 00:52:25 2007 +0100
-
-    Revert inadvertent commits:
-    
-      dbfe00a20de3f875e519ef60629b968977fc5db8 (commit)
-      f1451161914a0ed0bb43123279906d82cb7d5b49 (commit)
-      2ad315fc0badd16a9614d1107b22c973908893d5 (commit)
-      d8844bb48969aa45a05cbe6836fc96c198e88c19 (commit)
-      ee1b64a1ae07eb99eae5d63307e9fe23f9604662 (commit)
-
-commit d8844bb48969aa45a05cbe6836fc96c198e88c19
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Fri Aug 10 21:26:10 2007 +0100
-
-    Replace the linked list of PAGEs with a GedaList (typecast to GedaPageList)
-
-commit 0f5c72daacfa7d78666769e4063122934861da5c
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sun Aug 5 22:36:56 2007 +0100
-
-    Alter guile 1.6 compat tests to work with older autoconf versions
-    
-    Don't use AC_DEFINE to define function like macros, instead use
-    AC_CHECK_DECLS to set a HAVE_DECL_..., then use AH_VERBATIM to
-    insert a test which defines a replacement if necessary.
-
-commit 5c098070b87709540345afb1b3b79d9db470ed53
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Thu Aug 2 22:09:52 2007 +0100
-
-    Fix configure checks enabling guile 1.6.x compatability routines.
-
-commit c31bd4adb677d671af8bdf5aed71f96a4995f9b1
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Tue Jul 31 20:03:51 2007 +0100
-
-    Changed configure.ac(.in) to allow guile-1.6
-    
-    Introduces compatibility #defines where guile 1.8 funcs are missing in
-    guile 1.6. Also adds missing configure.ac checks for guile in packages
-    gattrib, gnetlist, gsymcheck and utils.
-
-commit 66ab0ba3af15108935000d23fbf7acdc38b51257
-Author: Werner Hoch <werner.ho@xxxxxx>
-Date:   Thu Jul 26 19:05:09 2007 +0200
-
-    added new symbol attributes use-licence and dist-licence to tragesym
-    
-    updated tragesym to version 0.0.11
-    updated the template file for OpenOffice and the ascii template
-    updated one example file to test the changes
-    Thanks to Stefan Salewski for reporting the missing attributes.
-
-commit e978b9098c7567ad3b9c834a5e4914de3bc039ec
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 18:18:39 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit d7e8f5abc35644e90bfabf84396023cab09f2968
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Sun Jul 8 16:18:57 2007 -0400
-
-    Updated configure.ac[.in] and Makefile versions in prep for a release.
-    
-    The update was done by running ./update-versions.sh 1.1.1 20070708 30:1
-    at the toplevel.  libgeda's shared library version is now 30:1:0
-
-commit 3f3505662fe4bb8c585aea0ea965296bd923956c
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sun Jul 8 21:16:17 2007 +0200
-
-    Added *~ to .gitignore files.
-
-commit dd995d808b9f4440db48d2daa2473a9d9cfd88ef
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 01:36:31 2007 -0400
-
-    Updated ChangeLogs using ./update-changelogs.sh 1.0-20070526..master
-
-commit 099c49e5689afda4b8a5221dde73f9fdf1972ce7
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Thu Jul 5 00:11:45 2007 -0400
-
-    Updated all version strings to 1.1.0 and 20070705
-
-commit 87731dda219b0986fed0d1a7789e17678dd79d8c
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:55:07 2007 -0400
-
-    Removed AM_MAINTAINER_MODE from all configure.ac[.in] files.
-    
-    Maintainer mode is no longer needed or desired now that we are no longer
-    using CVS.  Hopefully this will prevent some of the odd problems that were
-    observed during the last release when the Makefile's didn't get auto
-    regenerated.
-
-commit dc7b8c53f4bc94626634887e46167a367a91f707
-Author: Ales Hvezda <ahvezda@xxxxxxxx>
-Date:   Wed Jul 4 23:32:15 2007 -0400
-
-    Changed gEDA/gaf's version mechanism to use new dotted X.Y.Z convention
-    
-    Added DOTTED_VERSION and DATE_VERSION variables to all configure.ac[.in]
-    files.  Changed all version related output to be DOTTED_VERSION.DATE_VERSION.
-    Updated the configure.ac[.in] files to have consistent top sections.
-    Updated code and various scheme files to use the new DOTTED_VERSION
-    and DATE_VERSION variables available via config.h.  Stopped using
-    PREPEND_VERSION_STRING as the mechanism for doing the dotted versions
-    (not intended for that use).  Updated update-versions.sh script to set the
-    version in all the configure.ac[.in] files and the toplevel Makefile.
-    Went through all the g_rc.c files and make the handling of rc file
-    mismatch handling consistent.
-
-commit 57b2848a7e69d19e18ac03a1264cb55d41c65d0e
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Mon Jun 25 22:31:07 2007 -0400
-
-    Changed/updated the #define mechanism for creating custom gEDA/gaf versions.
-    
-    Previously this mechanism was used to create custom versions of gEDA/gaf.
-    With the coming of stable and development versions of gEDA/gaf, this
-    mechanism was changed so that end users can tell the difference between
-    a stable release vs a development release (by looking at the version string).
-    The CUSTOM_VERSION #define was changed PREPEND_VERSION_STRING and is now
-    prepended to any strings that output the VERSION string.
-
-commit 0ed9cf080cfc8509cb29cbe4e976f86b2821c407
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 23:48:51 2007 -0400
-
-    Updated copyright text/header in most source files.
-    
-    Updated all copyright text dates that have my name (Ales) associated
-    with them.  Added gEDA contributer copyright text where appropriate.
-    Fixed a bunch of GNU text typos (these should have been either GPL
-    or gEDA).  Removed some $Id$ tags which are no longer used/needed.
-    Fixed a few file header that were just plain incorrect.
-
-commit a4e956c6272ea982ec54327dcc5e3aa528ac8c99
-Author: Ales Hvezda <ahvezda@xxxxxxxxxxxxxxx>
-Date:   Sun Jun 24 22:22:32 2007 -0400
-
-    Added *.o (all object files) to all src .gitignore files.
-
-commit edff766e8b15c311505810241528026f722e30b6
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 18:19:11 2007 +0100
-
-    Make sure various files are installed.
-    
-    Several new files were not being distributed. This patch addresses the
-    problem by adding files to EXTRA_DIST in automake input files.
-
-commit e57c37a66edc1c4d4e4d7160001749df51b96c4b
-Author: Peter Clifton <pcjc2@xxxxxxxxx>
-Date:   Sat Jun 23 18:17:29 2007 +0100
-
-    Move all .cvsignore files to .gitignore files
-
-commit 065595ccd8b5e77616c29a37742357cfab0ae7f7
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Sat Jun 23 16:11:44 2007 +0100
-
-    Changes to ChangeLog usage.
-    
-    With actual changes this time.  Old-style changelogs as of gaf 1.0
-    (release of 26th June 2007) are moved to ChangeLog-1.0; new (blank)
-    ChangeLogs replace them.  A script has been added to the gaf top level
-    to allow maintainers to update all the ChangeLog files immediately
-    prior to making out a release.
-
-commit eed0be648afd9bc421a8d0059de621df778c5fbe
-Author: Carlos Nieves Onega <cnieves@xxxxxxxxxx>
-Date:   Sat Jun 9 16:09:36 2007 +0000
-
-    Avoid writting '\r' to files on MinGW.
-    
-    Applied patch #1733826 from Cesar Strauss. Thanks.
-    When using the "w" mode in fopen, MinGW translates LF into CR-LF.
-    This creates havoc when reading the same file again, when sharing
-    schematics files with other systems, and when placing them in a VCS.
-    
-    This can be avoided by using the "wb" mode. The "b" is ignored on
-    all POSIX conforming systems, according to these sources:
-    
-    http://www.die.net/doc/linux/man/man3/fopen.3.html
-    http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
-    
-    There are other ways, however. Adding
-    
-    #include <fcntl.h>
-    int _fmode = _O_BINARY;
-    
-    on some source file should work as well. Another way is linking
-    against the MinGW supplied binmode.o, which does exactly that.
-
-commit 3d58ffc27e6d915c4b1ebbd6f6b96d98d6126b7b
-Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
-Date:   Mon Jun 4 16:15:37 2007 +0000
-
-    Replace deprecated Guile functions & macros.
-    
-    Replace deprecated SCM_STRINGP, SCM_INUM, SXM_INUMP & SCM_MAKINUM with
-    recommended equivalents for Guile 1.8.
-
-
-#GCL#
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 06a7f21..780a655 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -1,8 +1,13 @@
 
 SUBDIRS = src gschlas scripts lib include examples docs man tests gxyrs
 
-EXTRA_DIST = ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 ChangeLog-1.0 \
-	AUTHORS
+EXTRA_DIST = ChangeLog ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 \
+	ChangeLog-1.0 AUTHORS
+
+if HAVE_GIT_REPO
+ChangeLog: $(top_builddir)/stamp-git
+	(cd $(srcdir) && $(GIT) log --pretty=medium $(CHANGELOG_BASE).. -- .) > $@
+endif HAVE_GIT_REPO
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~

commit 590b18a2111b8d86d2962b25f306c88105f06106
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add top-level ChangeLog file.
    
    This is just a stop-gap measure.  At some point it might be a good
    idea to just have a single top-level ChangeLog generated with a tool
    like `git2cl'.
    
    Note: make distcheck does not pass in this commit.

diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..57399ab
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,13 @@
+==============================================
+ 'gschem and Friends' Electronic Design Suite
+==============================================
+
+Copyright (C) 1998-2009 gEDA Developers
+
+Please see the `ChangeLog' files in the various component
+subdirectories for detailed change information.
+
+..
+   Local Variables:
+   mode: text
+   End:

commit 77d96e9154d9cfc81b25353ef99b8f8f42999bfb
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add top-level NEWS file.
    
    This contains important user-visible changes.  It should be kept
    up-to-date, in order to make writing release notes easier.

diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..64e5e52
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,198 @@
+==============================================
+ 'gschem and Friends' Electronic Design Suite
+==============================================
+
+Copyright (C) 1998-2009 gEDA Developers
+
+This file documents important user-visible changes in gEDA/gaf.  For
+more information, please consult the `ChangeLog' file.
+
+Notable changes in gEDA/gaf 1.6.0
+=================================
+
+* Numerous build system changes.
+
+  - gEDA/gaf is now distributed as a single source archive, called
+    gEDA-<version>.tar.gz.
+
+  - GTK+ 2.10 or newer and Guile 1.8 or newer are now required.
+
+  - `intltool' is no longer required.
+
+  - Documentation is now installed to ${docdir} (usually
+    ${prefix}/share/doc/gEDA).
+
+* The attribute edit dialog in `gschem' now has completion of most
+  common attribute names.
+
+* The multi-attribute edit dialog in `gschem' now shows unpromoted
+  symbol attributes.
+
+* Menu items in `gschem' now have icons and properly aligned key
+  bindings. They also support accelerator keys.
+
+* The `gschem2pcb' and `PCBboard' netlist backends have been removed.
+  It is recommended to use `gsch2pcb' instead.
+
+Notable changes in gEDA/gaf 1.5.2
+=================================
+
+* `gschem' now uses Cairo for all rendering.  This allows for
+  everything to be rendered anti-aliased.
+
+* `gschem' now uses a mesh grid instead of dots by default.
+
+* Net junction cues in `gschem' are drawn smaller now.
+
+* Copy and paste now works between different `gschem' instances (using
+  the X selection).
+
+* Recent files are no longer opened in a new `gschem' window.
+
+* Major, *backwards-incompatible* changes to color handling in
+  `libgeda' and `gschem'.
+
+  - All colors are specified using hexadecimal `#RRGGBB' or
+    `#RRGGBBAA' syntax.
+
+  - The print and display color maps are now separate.
+
+  - A new Scheme syntax is used to inspect and modify color maps.
+
+  - If you wish to use a light background in `gschem', add the line:
+
+      (load (build-path geda-rc-path "gschem-colormap-lightbg"))
+
+    to your personal or project gschemrc file.
+
+* Attributes of embedded objects are now shown in the right color.
+
+* Bus pins are now supported by `gschem' and `libgeda', but are *not*
+  properly supported by the netlister.  The pin type can be modified
+  by selecting a pin, then right-clicking it and selecting `Edit pin
+  type...'.
+
+* All of the symbols were modified to use overbar markup tags ("like
+  \_this\_") instead of separate lines.
+
+* Log files are now saved to $HOME/.gEDA/logs rather than being
+  dropped in the current directory.
+
+Notable changes in gEDA/gaf 1.5.1
+=================================
+
+* GTK+ version 2.8.x or later is now required.
+
+* The selection behaviour in `gschem' was changed. 
+
+  - Lines, unfilled boxes, unfilled circles, arcs, pins, nets, and
+    buses must be selected by clicking on the drawn path itself.
+
+  - Filled boxes, circles, text, and components, may be selected by
+    clicking anywhere in the bounding box.
+
+  - The default mouse click distance required to select an element was
+    increased to 10 pixels.
+
+  - Double-clicking on a net segment selects all connected net
+    segments.
+
+* The percentage step in or out while zooming the display in `gschem'
+  is now configurable with the `zoom-gain' gschemrc parameter.  The
+  default value is 20%.
+
+* The size of steps when panning with the mouse wheel or with a
+  trackpad in `gschem' is now adjustable with the `scrollpan-steps'
+  gschemrc parameter.  The default setting scrolls in steps of 1/8 of
+  a screen.
+
+* A number of improvements were made to the `gschem' component
+  selection dialog.
+
+  - The dialog now shows a table of top-level attributes in the
+    selected symbol.
+
+  - It is now possible to expand/collapse a library by clicking
+    anywhere on its row.
+
+* Changes to fill- and line-styles in `gschem' can now be undone.
+
+* Arcs can now be adjusted in `gschem' using an arc angle dialog.  It
+  can be accessed by selecting an arc and selecting Edit->Edit.
+
+* It is now possible to rotate objects while placing them in `gschem'.
+
+* Support for arbitrary filled and unfilled paths, using a subset of
+  the SVG path syntax.  For more information, please see the file
+  format specification.
+  <http://geda.seul.org/wiki/geda:file_format_spec>
+
+  - `gschem' does not yet provide a GUI for creating or editing path
+    elements.  However, it does support rendering them.  They can also
+    be printed.
+
+  - Some of the symbols in the component library were updated to use
+    paths.
+
+* A Scheme evaluation prompt was added to `gschem'.  It can be
+  accessed by typing `:'.
+
+* Improved algorithm for drawing hatched fills both on screen and in
+  PostScript output.
+
+* Color selection dialogs and menus in `gschem' now show the actual
+  color as well as the description.  Color names are now translatable.
+
+* `gattrib' now prompts to save changes.
+
+* All of the unimplemented menu items and pages in `gattrib' were
+  removed.
+
+* The `always-promote-attributes' gafrc parameter now takes a list of
+  strings as an argument.  The space-delimited string syntax is
+  deprecated.
+
+* Some optimisations were made to the `gnetlist' connection traversal
+  algorithm to speed up netlisting large designs.
+
+* A new netlist backend was added to support Liquid PCB.
+  <http://www.liquidpcb.org/>
+
+* The `bom2' netlist backend now generates a `qty' column.
+
+* Several improvements and fixes were made to the `systemc' backend.
+
+* The `--gnetlist-arg' option to gsch2pcb can now be used to pass
+  extra `gnetlist' arguments.
+
+* `gsch2pcb' now emits files with the latest `pcb' file format.
+
+* The `gxyrs' pick-and-place tool was added.
+
+Notable changes in gEDA/gaf 1.5.0
+=================================
+
+* Magnetic net mode in `gschem'. Magnetic mode lets you draw nets and
+  automatically connect to valid end points (such as pins and other
+  nets).  The `magnetic-net-mode' gschemrc parameter can be used to
+  enable/disable this feature.
+
+* Rotating a component while moving it in `gschem' now rotates around
+  the current mouse location.
+
+* The `verilog' and `vhdl' backends now work again.
+
+* Embedded components can now be mirrored.
+
+* The `pads' netlist backend now uses CRLF line endings.
+
+Older versions
+==============
+
+Release notes for older versions of gEDA/gaf are available on the gEDA
+website.  <http://www.gpleda.org/news/index.html>
+
+..
+   Local Variables:
+   mode: text
+   End:
diff --git a/docs/NEWS b/docs/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/examples/NEWS b/examples/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/gattrib/NEWS b/gattrib/NEWS
deleted file mode 100644
index 7165ea6..0000000
--- a/gattrib/NEWS
+++ /dev/null
@@ -1 +0,0 @@
-See ChangeLog for most recent updates.
diff --git a/gnetlist/NEWS b/gnetlist/NEWS
deleted file mode 100644
index 7165ea6..0000000
--- a/gnetlist/NEWS
+++ /dev/null
@@ -1 +0,0 @@
-See ChangeLog for most recent updates.
diff --git a/gschem/NEWS b/gschem/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/gsymcheck/NEWS b/gsymcheck/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/libgeda/NEWS b/libgeda/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/symbols/NEWS b/symbols/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/NEWS b/utils/NEWS
deleted file mode 100644
index e69de29..0000000

commit 09fcc6d689defb8f43bfc27aac87ee4ac34ce66a
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Update top-level README file.
    
    Well, actually rewrite it entirely.
    
    Note: make distcheck does not pass in this commit.

diff --git a/README b/README
index 6cb43dc..cd3389d 100644
--- a/README
+++ b/README
@@ -1,63 +1,222 @@
+==============================================
+ 'gschem and Friends' Electronic Design Suite
+==============================================
 
-gEDA 
+Copyright (C) 1998-2009 gEDA Developers
 
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
+Introduction
+============
 
-README for gEDA/gaf 
+The GPL Electronic Design Automation (gEDA) project has produced and
+continues working on a full GPL'd suite and toolkit of Electronic
+Design Automation tools. These tools are used for electrical circuit
+design, schematic capture, simulation, prototyping, and
+production. Currently, the gEDA project offers a mature suite of free
+software applications for electronics design, including schematic
+capture, attribute management, bill of materials (BOM) generation,
+netlisting into over 20 netlist formats, analog and digital
+simulation, and printed circuit board (PCB) layout.
 
+The gEDA project was started because of the lack of free EDA tools for
+POSIX systems with the primary purpose of advancing the state of free
+hardware or open source hardware. The suite is mainly being developed
+on the GNU/Linux platform with some development effort going into
+making sure the tools run on other platforms as well.
 
-- Installation
+The gEDA/gaf suite (this package) provides schematic capture,
+netlisting, bill of materials generation, and many other features.
 
-	- Install all the dependencies (glib, gtk, and guile).
-        - If you are building the repository version, then you will
-    	  need the following packages installed as well: 
+Installation
+============
 
-          	autoconf, automake, libtool, gettext, cvs, flex,
-	        groff, transfig
+The information in this section is intended to supplement the
+information in the `INSTALL' file.
 
-	- Download all source packages and the toplevel Makefile. 
-	- Untar all packages in a directory and place toplevel Makefile 
-          in this same directory. 
-	- [OPTIONAL] Edit Makefile changing prefix to a different install 
-		     directory other than the default ($HOME/geda)
-	- Type: make
-	- Follow instructions on setting all the shell variables.
-	- Set shell variables explicitly in your shell.  *VERY IMPORTANT*
-	- Type: make install
- 	- Read the release notes for more information and last minute issues.
-	- Read the docs in: ${prefix}/share/doc/geda-doc/gedadocs.html
-	- Run: gschem and play! :-)
+Dependencies
+------------
 
+In order to compile gEDA from the distributed source archives, you
+*must* have the following tools and libraries installed:
 
+ - A C compiler and standard library (GCC/glibc are recommended).
 
-- System Requirements
+ - The `pkg-config' tool for managing shared libraries.
+   <http://pkgconfig.freedesktop.org/>
 
-	See section in libgeda's README
+ - Guile ("GNU's Ubiquitous Intelligent Language for Extensions"),
+   version 1.8.0 or later.  <http://www.gnu.org/software/guile/>
 
+ - GTK+ (the Gimp Toolkit), version 2.10.0 or later.
+   <http://www.gtk.org/>
 
+ - The `lex' tool for generating lexical scanners.  The `flex'
+   implementation recommended.  <http://flex.sourceforge.net/>
 
-- License  
+ - The `awk' tool for data processing.  GNU Awk (`gawk') is
+   recommended.  <http://www.gnu.org/software/gawk/>
 
-	gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-	gsymcheck, gschcheck, gpcb, utils, all associated files, the
-	component symbols and all the file formats) is placed under the
-	GNU Public License (GPL) version 2.0.  See the various COPYING
-	files for more information.
+The following tools and libraries are *highly recommended*:
 
-	Programs and associated files are: 
-	Copyright 1998-2008 by Ales Hvezda and the respective
-	original authors (which are listed on the respective files)
+ - GNU `gettext', version 0.16 or newer.
+   <http://www.gnu.org/software/gettext/>
 
+ - GNU `troff' (`groff'). <http://www.gnu.org/software/groff/>
 
+ - The freedesktop.org MIME info database.
+   <http://freedesktop.org/Software/shared-mime-info>
 
-- gEDA Internet resources
+ - The freedesktop.org utilities for manipulating .desktop files.
+   <http://www.freedesktop.org/software/desktop-file-utils>
 
-        Homepage: http://geda.seul.org
+The following tools and libraries are optional:
 
-        Mailing lists: http://geda.seul.org/mailinglist
+ - `libstroke', a stroke and gesture recognition library.  If this is
+   available, gschem will support mouse gesture recognition.
+   <http://www.etla.net/libstroke/>
 
-        For any questions related to gEDA/gaf, please subscribe and post
-        to the "geda-user" mailing list.
+ - The `doxygen' API documentation tool.  This is required for
+   building the gEDA developer API documentation, not for the regular
+   user documentation.  <http://www.stack.nl/~dimitri/doxygen/>
 
+Troubleshooting dependencies
+----------------------------
 
+  "I've installed the `libfoo' library, but `./configure' isn't
+  picking it up!"
+
+Many modern operating system distributions split a library into two
+packages:
+
+1. a `libfoo' package, which contains the files necessary to
+   *run* programs which use `libfoo'.
+
+2. a `libfoo-dev' or `libfoo-devel' package, which contains the files
+   necessary to *compile* programs which use `libfoo'.
+
+If you're having problems, make sure that you have all of the
+necessary `dev' or `devel' packages installed.
+
+Installation from a source archive
+----------------------------------
+
+First extract the archive to a sensible place:
+
+  tar -xzvf gEDA-<version>.tar.gz && cd gEDA-<version>
+
+Run the configuration script.  You'll probably want to specify a
+custom directory to install gEDA to, for example:
+
+  ./configure --prefix=$HOME/geda
+
+You can then compile gEDA:
+
+  make
+
+And install it (if you used a `--prefix' outside your $HOME directory,
+you may need to run this as root):
+
+  make install
+
+For more information on installing gEDA, see the `INSTALL' document.
+
+Installation from the git repository
+------------------------------------
+
+gEDA uses the `git' version control system.  If you wish to try out
+the very latest version of gEDA, you will need to install some extra
+tools *in addition to* the ones listed above:
+
+  - The `git' version control tool, version 1.6 or newer.
+    <http://git-scm.com/>
+
+  - GNU Automake, version 1.6.0 or newer.
+    <http://www.gnu.org/software/automake/>
+
+  - GNU Autoconf, version 2.60 or newer.
+    <http://www.gnu.org/software/autoconf/>
+
+  - GNU Libtool.  <http://www.gnu.org/software/libtool/>
+
+Once you have these installed, you need to clone the gEDA `git'
+repository:
+
+  git clone git://git.gpleda.org/gaf.git
+
+To generate the configure script, run:
+
+  ./autogen.sh
+
+You can then procede to configure and build gEDA as described above.
+For more information on working with the gEDA `git' repository, see
+<http://geda.seul.org/wiki/geda:scm>.
+
+Tools in the gEDA suite
+=======================
+
+The major components of the gEDA suite are:
+
+`libgeda'
+  A library of functions for manipulating gEDA schematics and symbols.
+
+`gschem'
+  A schematic editor.
+
+`gattrib'
+  A spreadsheet-like program for bulk editing of component attributes.
+
+`gnetlist'
+  A highly-flexible, hierarchy-aware utility which parses schematics
+  to generate a number of outputs, including netlists for a wide
+  variety of PCB layout tools.  It can also generate bills of
+  materials and DRC reports for your schematics.
+
+`gsch2pcb'
+  A command-line utility for streamlining the workflow where `PCB'
+  <http://pcb.gpleda.org/> and `gschem' are used together.
+
+`gsymcheck'
+  A utility for checking for common errors in schematic symbol files.
+
+Getting help
+============
+
+There are several ways to get help with installing and using gEDA:
+
+ - The gEDA website <http://www.gpleda.org> has more extensive
+   information on the gEDA tools, and links to some successful
+   projects which use gEDA.
+
+ - The gEDA documentation wiki contains a large amount of helpful
+   information.  A static copy is included with this distribution; see
+   the `docs/wiki/index.html' file.  The wiki is accessible online at
+   <http://geda.seul.org/wiki/>.
+
+ - If the resources above didn't help you resolve your problem, or you
+   are having a *design* problem that you want to get help with,
+   consider subscribing to and posting your question to the
+   `geda-user' mailing list.
+   <http://www.gpleda.org/mailinglists.html>
+
+ - If you have discovered a bug, have a feature request, or have
+   written a patch to gEDA, please create an item on the gEDA issue
+   tracker.  <http://sourceforge.net/tracker/?group_id=161080>
+
+License
+=======
+
+gEDA/gaf (this package) is freely distributable under the GNU Public
+License (GPL) version 2.0 or (at your option) any later version.  See
+the `COPYING' file for the full text of the license.
+
+The programs and associated files are:
+
+  Copyright (C) 1998-2009 by Ales Hvezda and the respective original
+  authors.
+
+See the `AUTHORS' file for a more extensive list of contributors to
+gEDA.
+
+..
+   Local Variables:
+   mode: text
+   End:
diff --git a/docs/README b/docs/README
deleted file mode 100644
index ee098ee..0000000
--- a/docs/README
+++ /dev/null
@@ -1,37 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-README for docs 
-
-
-This directory contains documentation related to the gEDA project.
-These docs are always under heavy construction. 
-
-
-- License  
-
-        gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-        gsymcheck, gschcheck, gpcb, utils, docs, examples, all associated 
-        files, the component symbols, and all the file formats) is placed
-        under the GNU Public License (GPL) version 2.0.  See the various
-        COPYING files for more information.
-
-	Programs and associated files are: 
-	Copyright 1998-2008 by Ales Hvezda and the respective
-	original authors (which are listed on the respective files)
-
-
-
-- gEDA Internet resources
-
-        Homepage: http://geda.seul.org
-
-        Mailing lists: http://geda.seul.org/mailinglist
-
-        For any questions related to gEDA/gaf, please subscribe and post 
-        to the "geda-user" mailing list.
-
-
diff --git a/gnetlist/README b/gnetlist/README
deleted file mode 100644
index f227e85..0000000
--- a/gnetlist/README
+++ /dev/null
@@ -1,54 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-README for gnetlist 
-
-
-- Installation
-
-	See the file INSTALL for more instructions on how to build gnetlist
-
-
-
-- System Requirements
-
-        See libgeda/README for current system requirements.
-
-
-
-- License  
-
-        gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-        gsymcheck, gschcheck, gpcb, utils, docs, examples, all associated
-        files, the component symbols, and all the file formats) is placed
-        under the GNU Public License (GPL) version 2.0.  See the various
-        COPYING files for more information.
-
-	Programs and associated files are: 
-	Copyright 1998-2008 by Ales Hvezda and the respective original
-	authors (which are listed on the respective files)
-
-
-
-- gEDA Internet resources
-
-        Homepage: http://geda.seul.org
-
-        Mailing lists: http://geda.seul.org/mailinglist
-
-        For any questions related to gEDA/gaf, please subscribe and post
-        to the "geda-user" mailing list.
-
-
-
-- Notes
- 
-	* For anybody developing guile scripts using guile 1.6.x really should
-	  set GUILE_WARN_DEPRECATED=detailed   to see if they are using any
-	  deprecated guile functions in their scripts.  gnetlist disables the
-	  guile deprecated function warnings by default.
-
-
diff --git a/gschem/README b/gschem/README
deleted file mode 100644
index 62f78ff..0000000
--- a/gschem/README
+++ /dev/null
@@ -1,54 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-README for gschem 
-
-
-- Installation
-
-	See the file INSTALL for more instructions on how to build gschem
-
-
-
-- System Requirements
-
-	See libgeda/README for current system requirements.
-
-
-
-- License  
-
-        gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-        gsymcheck, gschcheck, gpcb, utils, docs, examples, all associated
-        files, the component symbols, and all the file formats) is placed
-        under the GNU Public License (GPL) version 2.0.  See the various
-        COPYING files for more information.
-
-	Programs and associated files are: 
-	Copyright 1998-2008 by Ales Hvezda and the respective original
-	authors (which are listed on the respective files)
-
-
-
-- gEDA Internet resources
-
-        Homepage: http://geda.seul.org
-
-        Mailing lists: http://geda.seul.org/mailinglist
-
-        For any questions related to gEDA/gaf, please subscribe and post
-        to the "geda-user" mailing list.
-
-
-
-- Notes
- 
-	* For anybody developing guile scripts using guile 1.6.x really should
-	  set GUILE_WARN_DEPRECATED=detailed   to see if they are using any
-	  deprecated guile functions in their scripts.  gschem disables the
-	  guile deprecated function warnings by default.
-
-
diff --git a/gsymcheck/README b/gsymcheck/README
deleted file mode 100644
index 73a1a81..0000000
--- a/gsymcheck/README
+++ /dev/null
@@ -1,56 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-README for gsymcheck
-
-
-- Installation
-
-	See the toplevel INSTALL for more instructions on how to build
-	gsymcheck
-
-
-
-- System Requirements
-
-        See libgeda/README for current system requirements.
-
-
-
-- License  
-
-        gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-        gsymcheck, gschcheck, gpcb, utils, docs, examples, all associated
-        files, the component symbols, and all the file formats) is placed
-        under the GNU Public License (GPL) version 2.0.  See the various
-        COPYING files for more information.
-
-	Programs and associated files are: 
-	Copyright 1998-2008 by Ales Hvezda and the respective original
-	authors (which are listed on the respective files)
-
-
-
-- gEDA Internet resources
-
-        Homepage: http://geda.seul.org
-
-        Mailing lists: http://geda.seul.org/mailinglist
-
-        For any questions related to gEDA/gaf, please subscribe and post
-        to the "geda-user" mailing list.
-
-
-
-- Notes
- 
-	* For anybody developing guile scripts using guile 1.6.x really should
-	  set GUILE_WARN_DEPRECATED=detailed   to see if they are using any
-	  deprecated guile functions in their scripts.  gsymcheck disables the
-	  guile deprecated function warnings by default.
-
-
-
diff --git a/libgeda/README b/libgeda/README
deleted file mode 100644
index bdad98e..0000000
--- a/libgeda/README
+++ /dev/null
@@ -1,73 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-README for libgeda 
-
-
-- Installation
-
-	See the toplevel INSTALL for more instructions on how to build libgeda
-        and the rest of gEDA/gaf.
-
-
-
-- System Requirements
-
-	A computer:
-   	   - at least the processing power to run gtk+ 2.4.x
-	   - Enough RAM to run X and your desktop environment successfully
-
-	Running UNIX:
-	   - Semi recent version of Unix or Linux
-
-	The X window system 	
-		- A resolution of at least 1024x768
-		- A color display
-		- 3 button mouse (2 button works, but 3 button is better)
-
-	A C compiler (that understands ANSI, like gcc) 
-
-	GLIB version 2.4.x or later (and anything glib requires)
-	GLIB version 1.2.x is no longer supported.
-	Glib can be found at ftp://ftp.gtk.org/pub/gtk
-
-	GTK+ version 2.4.x or later (and anything gtk requires)
-	GTK+ version 1.2.x is no longer supported.
-	Gtk can be found at: ftp://ftp.gtk.org/pub/gtk
-
-	GUILE - guile-1.6.x or later is required (and anything guile
-	requires).  Guile 1.4.x is no longer supported.
-	Guile can be found at: ftp://ftp.gnu.org/pub/gnu/guile
-
-	LibStroke 0.5.1 [OPTIONAL] - if you want stroke support.  The homepage
-	for LibStroke is: http://www.etla.net/libstroke/
-
-
-
-- License  
-
-        gEDA/gaf (which includes libgeda, gschem, gnetlist, geda, setup,
-        gsymcheck, gschcheck, gpcb, utils, docs, examples, all associated
-        files, the component symbols, and all the file formats) is placed
-        under the GNU Public License (GPL) version 2.0.  See the various
-        COPYING files for more information.
-
-	Programs and associated files are:
-	Copyright 1998-2008 by Ales Hvezda and the respective original
-	authors (which are listed on the respective files)
-
-
-
-- gEDA Internet resources
-
-        Homepage: http://geda.seul.org
-
-        Mailing lists: http://geda.seul.org/mailinglist
-
-        For any questions related to gEDA/gaf, please subscribe and post
-        to the "geda-user" mailing list.
-
-

commit 433c672579aabb282999377139c9242b319ba044
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Only need a single `AUTHORS' file.
    
    Move the gschem one to the toplevel (adding several missing names on
    the way), and remove most of the others. The `AUTHORS' files in the
    `symbols' and `utils' directories are retained, because they contain
    some useful information.
    
    Note: make distcheck does not pass in this commit.

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..d03d384
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,96 @@
+gEDA
+
+GPL Electronic Design Automation
+------------------------------------------------------------------------------
+
+gEDA/gaf AUTHORS and contributors
+
+Many thanks to the following individuals for their contributions:
+
+Andrew Bardsley
+Nick Bastin
+Martin Benes
+Patrick Bernaud
+Antonio A Todo Bom
+Peter Brett
+Stuart Brorson
+Eric Busta
+Jared Casper
+Peter Clifton
+Ron Van Dam
+Magnus Danielson
+Thomas Dean
+DJ Delorie
+Bryce Denney
+Andrew Dyer
+Gareth Edwards
+Chris Ellec
+Matt Ettus
+Rolf Fiedler
+Robert Fitzsimons
+Geoff Harland
+Thomas Heidel
+Edward Hennessy
+Uwe Herman
+Kazu Hirata
+Werner Hoch
+Ales Hvezda
+Braddock Gaskill
+Bas Gieltjes
+Mike Jarabek
+Bernd Jendrissek
+Wojciech Kazubski
+Kai-Martin Knaak
+Krzysztof KoÅ?ciuszkiewicz
+Reinhard Kotucha
+Egil Kvaleberg
+Dan McMahill
+Dave Lawrence
+Martin Lehmann
+Michael Linnemann
+Arnim Littek
+Ye Ma
+Dan McMahill
+Jeff McNeal
+Piotr Miarecki
+Hamish Moffatt
+Kipton Moravec
+Eduard Moser
+Thien-Thi Nguyen
+Alexandre P. Nunes
+Jerry O'Keefe
+Carlos Nieves Onega
+Erick Britis Ortiz
+Gabriel Paubert
+Simon Peacock
+Stefan Petersen
+Michele Petrecca
+Maciej Pijanka
+Alex Precosky
+Christian Riggenbach
+Manu Rouat
+JM Routoure
+Bruno Schwander
+Andy Shevchenko
+Anatole Sokolov
+Tomaž Šolc
+Nuno Sucena
+Ivan Stankovic
+Borge Strand
+Cesar Strauss
+James Swonger
+Miyamoto Takanori
+Stephen Tell
+Bert Timmerman
+Marius Vollmer
+Rich Walker
+John White
+Roger Williams
+Bill Wilson
+
+For specific contributions, please check out the appropriate ChangeLog
+for more details.
+
+Also thanks go to all the people on the geda-* mailing list.  Many of
+the subscribers provided good suggestions (as well as patches) that are
+greatly appreciated
diff --git a/docs/AUTHORS b/docs/AUTHORS
deleted file mode 100644
index d21455d..0000000
--- a/docs/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-AUTHORS
-
-Please see the AUTHOR file in gschem for the list of authors and
-contributers to gEDA/gaf.
-
diff --git a/examples/AUTHORS b/examples/AUTHORS
deleted file mode 100644
index 444d097..0000000
--- a/examples/AUTHORS
+++ /dev/null
@@ -1,12 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-AUTHORS
-
-Please see the AUTHOR file in gschem for the list of authors and
-contributers to gEDA/gaf.
-
-
diff --git a/gattrib/AUTHORS b/gattrib/AUTHORS
deleted file mode 100644
index ec4d3d3..0000000
--- a/gattrib/AUTHORS
+++ /dev/null
@@ -1,17 +0,0 @@
-gEDA-gattrib: A spreadsheet based attribute editor for gEDA.
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-gattrib AUTHORS
-
-Primary author: Stuart Brorson mailto:sdb@xxxxxxxxxx
-
-Large sections of code "borrowed" from geda-gnetlist, as well as gtksheet.
-Credit to the authors of those programs is gratefully extended.
-
-geda-getnetlist:  http://www.geda.seul.org/
-
-gtksheet:  http://gtkextra.sourceforge.net/
-
-
diff --git a/gattrib/Makefile.am b/gattrib/Makefile.am
index 4197324..fda0a2a 100644
--- a/gattrib/Makefile.am
+++ b/gattrib/Makefile.am
@@ -1,6 +1,6 @@
 SUBDIRS = po src include lib design docs data
 
-EXTRA_DIST = BUGS NOTES README ChangeLog ChangeLog-1.0 AUTHORS \
+EXTRA_DIST = BUGS NOTES README ChangeLog ChangeLog-1.0 \
 	INSTALL ToDos
 
 MOSTLYCLEANFILES = *.log core FILE *~ #*#
diff --git a/gnetlist/AUTHORS b/gnetlist/AUTHORS
deleted file mode 100644
index f0a942c..0000000
--- a/gnetlist/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-AUTHORS
-
-Please see the AUTHORS file in gschem for the list of authors and contributors 
-to gEDA/gaf.
-
diff --git a/gschem/AUTHORS b/gschem/AUTHORS
deleted file mode 100644
index ebcc176..0000000
--- a/gschem/AUTHORS
+++ /dev/null
@@ -1,80 +0,0 @@
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-gEDA/gaf AUTHORS and contributors
-
-Many thanks to the following individuals for their contributions:
-
-Andrew Bardsley
-Nick Bastin
-Martin Benes
-Patrick Bernaud
-Antonio A Todo Bom
-Peter Brett 
-Stuart Brorson
-Eric Busta
-Peter Clifton
-Ron Van Dam
-Magnus Danielson
-Thomas Dean
-DJ Delorie
-Bryce Denney
-Andrew Dyer
-Chris Ellec
-Matt Ettus
-Rolf Fiedler 
-Geoff Harland
-Thomas Heidel
-Kazu Hirata		
-Werner Hoch
-Ales Hvezda
-Braddock Gaskill
-Bas Gieltjes
-Mike Jarabek
-Wojciech Kazubski
-Reinhard Kotucha
-Egil Kvaleberg
-Dave Lawrence
-Martin Lehmann
-Michael Linnemann
-Arnim Littek
-Ye Ma  
-Dan McMahill
-Jeff McNeal	
-Piotr Miarecki 
-Hamish Moffatt
-Eduard Moser
-Thien-Thi Nguyen
-Alexandre P. Nunes
-Jerry O'Keefe
-Carlos Nieves Onega
-Erick Britis Ortiz
-Simon Peacock
-Stefan Petersen
-Manu Rouat
-JM Routoure
-Bruno Schwander
-Andy Shevchenko
-Anatole Sokolov	
-Nuno Sucena
-Borge Strand
-James Swonger
-Miyamoto Takanori
-Stephen Tell
-Bert Timmerman
-Marius Vollmer 
-Rich Walker
-John White
-Roger Williams 
-Bill Wilson
-
-For specific contributions, please check out the appropriate ChangeLog
-for more details.
-
-Also thanks go to all the people on the geda-* mailing list.  Many of
-the subscribers provided good suggestions (as well as patches) that are
-greatly appreciated
-
-
diff --git a/gsymcheck/AUTHORS b/gsymcheck/AUTHORS
deleted file mode 100644
index 01709f9..0000000
--- a/gsymcheck/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-AUTHORS
-
-Please see the AUTHOR file in gschem for the list of authors and contributers 
-to gEDA/gaf.
-
diff --git a/libgeda/AUTHORS b/libgeda/AUTHORS
deleted file mode 100644
index a82654d..0000000
--- a/libgeda/AUTHORS
+++ /dev/null
@@ -1,11 +0,0 @@
-
-gEDA
-
-GPL Electronic Design Automation
-------------------------------------------------------------------------------
-
-AUTHORS
-
-Please see the AUTHOR file in gschem for the list of authors and contributers 
-to gEDA/gaf.
-
diff --git a/symbols/Makefile.am b/symbols/Makefile.am
index f8c9920..2ed075b 100644
--- a/symbols/Makefile.am
+++ b/symbols/Makefile.am
@@ -62,7 +62,7 @@ nobase_dist_datasym_DATA = \
 
 EXTRA_DIST = ChangeLog-1.0 \
 	font/README font/ChangeLog font/ChangeLog-1.0 \
-	radio/README
+	radio/README AUTHORS
 
 # Copies symbols into distribution
 dist-hook:
diff --git a/utils/Makefile.am b/utils/Makefile.am
index baf7ea5..06a7f21 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -1,7 +1,8 @@
 
 SUBDIRS = src gschlas scripts lib include examples docs man tests gxyrs
 
-EXTRA_DIST = ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 ChangeLog-1.0
+EXTRA_DIST = ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 ChangeLog-1.0 \
+	AUTHORS
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~

commit ed7134fd403b9f1dc0a75d50e4e7bcfb2fd95cb8
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Only need one copy of GPLv2.
    
    Also, update to latest version of GPLv2 (from
    http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt).  This corrects
    the FSF contact address, along with some minor formatting
    modernisations.
    
    Note: make distcheck does not pass in this commit.

diff --git a/COPYING b/COPYING
index d60c31a..d511905 100644
--- a/COPYING
+++ b/COPYING
@@ -1,8 +1,8 @@
 		    GNU GENERAL PUBLIC LICENSE
 		       Version 2, June 1991
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
 General Public License applies to most of the Free Software
 Foundation's software and to any other program whose authors commit to
 using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+the GNU Lesser General Public License instead.)  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-
+
 		    GNU GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but
     does not normally print such an announcement, your work based on
     the Program is not required to print an announcement.)
-
+
 These requirements apply to the modified work as a whole.  If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as
 distribution of the source code, even though third parties are not
 compelled to copy the source along with the object code.
-
+
   4. You may not copy, modify, sublicense, or distribute the Program
 except as expressly provided under this License.  Any attempt
 otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
 
 This section is intended to make thoroughly clear what is believed to
 be a consequence of the rest of this License.
-
+
   8. If the distribution and/or use of the Program is restricted in
 certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Program under this License
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.
 
 		     END OF TERMS AND CONDITIONS
-
+
 	    How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 Also add information on how to contact you by electronic and paper mail.
 
 If the program is interactive, make it output a short notice like this
 when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision version 69, Copyright (C) year name of author
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
@@ -336,5 +335,5 @@ necessary.  Here is a sample; alter the names:
 This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
+library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
diff --git a/docs/COPYING b/docs/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/docs/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/examples/COPYING b/examples/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/examples/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/gattrib/COPYING b/gattrib/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/gattrib/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/gattrib/Makefile.am b/gattrib/Makefile.am
index 898f62e..4197324 100644
--- a/gattrib/Makefile.am
+++ b/gattrib/Makefile.am
@@ -1,7 +1,7 @@
 SUBDIRS = po src include lib design docs data
 
 EXTRA_DIST = BUGS NOTES README ChangeLog ChangeLog-1.0 AUTHORS \
-	COPYING INSTALL ToDos
+	INSTALL ToDos
 
 MOSTLYCLEANFILES = *.log core FILE *~ #*#
 CLEANFILES = *.log core FILE *~ #*#
diff --git a/gnetlist/COPYING b/gnetlist/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/gnetlist/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/gschem/COPYING b/gschem/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/gschem/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/gsymcheck/COPYING b/gsymcheck/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/gsymcheck/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/libgeda/COPYING b/libgeda/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/libgeda/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/symbols/COPYING b/symbols/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/symbols/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/utils/COPYING b/utils/COPYING
deleted file mode 100644
index d60c31a..0000000
--- a/utils/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.

commit b3e125c3d814f1b4461a85ed2230aac517784477
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add examples to unified build system.
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index bfb1fca..34a331f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,5 @@
-SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils symbols docs
+SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils symbols docs \
+	examples
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index 6f80214..fc8d13f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -274,5 +274,13 @@ AC_CONFIG_FILES([Makefile
                  docs/wiki/lib/tpl/Makefile
                  docs/wiki/lib/tpl/geda/Makefile
                  docs/wiki/lib/tpl/geda/images/Makefile
+
+                 examples/Makefile
+                 examples/RF_Amp/Makefile
+                 examples/RF_Amp/model/Makefile
+                 examples/RF_Amp/sym/Makefile
+                 examples/TwoStageAmp/Makefile
+                 examples/gTAG/Makefile
+                 examples/lightning_detector/Makefile
 ])
 AC_OUTPUT
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 045b71c..d7160cf 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,22 +1,13 @@
 
 SUBDIRS = gTAG lightning_detector RF_Amp TwoStageAmp
 
-exampledir = @GEDADOCDIR@/examples/
+exampledir = $(docdir)/examples/
 
 example_DATA = README 
 
-EXTRA_DIST = ChangeLog-1.0 autogen.sh $(example_DATA)
-
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = ChangeLog-1.0 $(example_DATA)
 
 MOSTLYCLEANFILES = *.log core FILE *~ 
 CLEANFILES = *.log core FILE *~ 
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-                       config.status aclocal.m4 install-sh missing \
-		       mkinstalldirs
-
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~
diff --git a/examples/RF_Amp/Makefile.am b/examples/RF_Amp/Makefile.am
index e4d1e96..08cd055 100644
--- a/examples/RF_Amp/Makefile.am
+++ b/examples/RF_Amp/Makefile.am
@@ -1,11 +1,10 @@
 
 SUBDIRS = model sym
 
-exampledir = @GEDADOCDIR@/examples/RF_Amp/
+exampledir = $(docdir)/examples/RF_Amp/
 
 example_DATA = 5980-2396E.pdf MSA-2643.cir MSA-2643.sch \
-             Q1.cir Q1.sch Q2.cir Q2.sch README Simulation.cmd \
-	     gafrc
+	Q1.cir Q1.sch Q2.cir Q2.sch README Simulation.cmd gafrc
 
 EXTRA_DIST = $(example_DATA)
 
diff --git a/examples/RF_Amp/model/Makefile.am b/examples/RF_Amp/model/Makefile.am
index 30816cd..49a122c 100644
--- a/examples/RF_Amp/model/Makefile.am
+++ b/examples/RF_Amp/model/Makefile.am
@@ -1,4 +1,4 @@
-exampledir = @GEDADOCDIR@/examples/RF_Amp/model/
+exampledir = $(docdir)/examples/RF_Amp/model/
 
 example_DATA = BJTM1_Q1.mod BJTM1_Q2.mod DiodeM1_Q1.mod DiodeM1_Q2.mod \
              DiodeM2_Q1.mod DiodeM2_Q2.mod DiodeM3_Q1.mod DiodeM3_Q2.mod 
diff --git a/examples/RF_Amp/sym/Makefile.am b/examples/RF_Amp/sym/Makefile.am
index c678e31..50e595b 100644
--- a/examples/RF_Amp/sym/Makefile.am
+++ b/examples/RF_Amp/sym/Makefile.am
@@ -1,4 +1,4 @@
-exampledir = @GEDADOCDIR@/examples/RF_Amp/sym/
+exampledir = $(docdir)/examples/RF_Amp/sym/
 
 example_DATA = BJT_Model.sym Q_Model.sym spice-subcircuit-IO-1.sym \
 	     spice-subcircuit-LL-1.sym
diff --git a/examples/TwoStageAmp/Makefile.am b/examples/TwoStageAmp/Makefile.am
index f019798..6287724 100644
--- a/examples/TwoStageAmp/Makefile.am
+++ b/examples/TwoStageAmp/Makefile.am
@@ -1,11 +1,11 @@
+exampledir = $(docdir)/examples/TwoStageAmp/
 
-SUBDIRS = sym models
+nobase_example_DATA = \
+	Simulation.cmd TwoStageAmp.sch spice.netlist gafrc
+	models/2N3904.mod \
+	sym/transistor.sym
 
-exampledir = @GEDADOCDIR@/examples/TwoStageAmp/
-
-example_DATA = Simulation.cmd TwoStageAmp.sch spice.netlist gafrc
-
-EXTRA_DIST = $(example_DATA)
+EXTRA_DIST = $(nobase_example_DATA)
 
 MOSTLYCLEANFILES = gschem.log *~
 CLEANFILES = gschem.log *~
diff --git a/examples/TwoStageAmp/models/Makefile.am b/examples/TwoStageAmp/models/Makefile.am
deleted file mode 100644
index 6177a23..0000000
--- a/examples/TwoStageAmp/models/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-
-exampledir = @GEDADOCDIR@/examples/TwoStageAmp/models
-
-example_DATA = 2N3904.mod
-
-EXTRA_DIST = $(example_DATA)
-
-MOSTLYCLEANFILES = gschem.log *~
-CLEANFILES = gschem.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = gschem.log *~ Makefile.in configure
-
diff --git a/examples/TwoStageAmp/sym/Makefile.am b/examples/TwoStageAmp/sym/Makefile.am
deleted file mode 100644
index 657692a..0000000
--- a/examples/TwoStageAmp/sym/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-
-exampledir = @GEDADOCDIR@/examples/TwoStageAmp/sym/
-
-example_DATA = transistor.sym
-
-EXTRA_DIST = $(example_DATA)
-
-MOSTLYCLEANFILES = gschem.log *~
-CLEANFILES = gschem.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = gschem.log *~ Makefile.in configure
-
diff --git a/examples/gTAG/Makefile.am b/examples/gTAG/Makefile.am
index c88729c..bb2849f 100644
--- a/examples/gTAG/Makefile.am
+++ b/examples/gTAG/Makefile.am
@@ -1,4 +1,4 @@
-exampledir = @GEDADOCDIR@/examples/gTAG/
+exampledir = $(docdir)/examples/gTAG/
 
 example_DATA = 7414-1.sym attribs gafrc copyleft.sym crdist.sh \
 	     cy7c64603-52nc.sym gTAG-consio.ps gTAG-consio.sch \
@@ -12,6 +12,5 @@ EXTRA_DIST = ChangeLog-1.0 $(example_DATA)
 
 MOSTLYCLEANFILES = gschem.log *~
 CLEANFILES = gschem.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = gschem.log *~ Makefile.in configure
-
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = gschem.log *~ Makefile.in
diff --git a/examples/lightning_detector/Makefile.am b/examples/lightning_detector/Makefile.am
index a73f894..194f195 100644
--- a/examples/lightning_detector/Makefile.am
+++ b/examples/lightning_detector/Makefile.am
@@ -1,11 +1,11 @@
-SUBDIRS = sym
+exampledir = $(docdir)/examples/lightning_detector/
 
-exampledir = @GEDADOCDIR@/examples/lightning_detector/
+nobase_example_DATA = \
+	bom bom.readme lightning.net lightning.pcb lightning.sch \
+	lightning.sch.bom gafrc \
+	sym/2N4401.sym sym/2N4403.sym
 
-example_DATA = bom bom.readme lightning.net lightning.pcb lightning.sch \
-             lightning.sch.bom gafrc
-
-EXTRA_DIST = $(example_DATA) 
+EXTRA_DIST = $(nobase_example_DATA) 
 
 MOSTLYCLEANFILES = gschem.log *~
 CLEANFILES = gschem.log *~
diff --git a/examples/lightning_detector/sym/Makefile.am b/examples/lightning_detector/sym/Makefile.am
deleted file mode 100644
index 2127991..0000000
--- a/examples/lightning_detector/sym/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-
-exampledir =  @GEDADOCDIR@/examples/lightning_detector/sym/
-
-example_DATA = 2N4401.sym 2N4403.sym
-
-EXTRA_DIST = $(example_DATA)
-
-MOSTLYCLEANFILES = gschem.log *~
-CLEANFILES = gschem.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = gschem.log *~ Makefile.in configure
-

commit 095c1c7dc49321f094bb6aa8c91630673fb826f9
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add docs to unified build system.
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index 7241e07..bfb1fca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils symbols
+SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils symbols docs
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index 1336692..6f80214 100644
--- a/configure.ac
+++ b/configure.ac
@@ -252,5 +252,27 @@ AC_CONFIG_FILES([Makefile
 
                  symbols/Makefile
                  symbols/documentation/Makefile
+
+                 docs/Makefile
+                 docs/scripts/Makefile
+                 docs/toplevel/Makefile
+                 docs/toplevel/gedadocs.html
+                 docs/wiki/Makefile
+                 docs/wiki/_detail/Makefile
+                 docs/wiki/_media/Makefile
+                 docs/wiki/lib/Makefile
+                 docs/wiki/lib/exe/Makefile
+                 docs/wiki/lib/images/Makefile
+                 docs/wiki/lib/images/fileicons/Makefile
+                 docs/wiki/lib/images/interwiki/Makefile
+                 docs/wiki/lib/images/smileys/Makefile
+                 docs/wiki/lib/plugins/Makefile
+                 docs/wiki/lib/plugins/definitionlist/Makefile
+                 docs/wiki/lib/plugins/definitionlist/images/Makefile
+                 docs/wiki/lib/plugins/note/Makefile
+                 docs/wiki/lib/plugins/note/images/Makefile
+                 docs/wiki/lib/tpl/Makefile
+                 docs/wiki/lib/tpl/geda/Makefile
+                 docs/wiki/lib/tpl/geda/images/Makefile
 ])
 AC_OUTPUT
diff --git a/docs/Makefile.am b/docs/Makefile.am
index a6f685f..197b2dc 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -1,17 +1,9 @@
 
 SUBDIRS = toplevel wiki scripts
 
-EXTRA_DIST = ChangeLog-1.0 autogen.sh
-
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = ChangeLog-1.0
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-	               config.status aclocal.m4 install-sh missing \
-		       mkinstalldirs
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/docs/scripts/populatemkfiles.sh b/docs/scripts/populatemkfiles.sh
index 1452baf..8553471 100755
--- a/docs/scripts/populatemkfiles.sh
+++ b/docs/scripts/populatemkfiles.sh
@@ -27,7 +27,7 @@ do_work()
 
 	echo "" >> Makefile.am
 	echo "docname=wiki" >> Makefile.am
-	echo 'docsdir = @GEDADOCDIR@/$(docname)'$thisdir >> Makefile.am
+	echo 'docsdir = $(docdir)/$(docname)'$thisdir >> Makefile.am
 	echo "" >> Makefile.am
 
 	dirs=`find . -maxdepth 1 -type d -print | grep -v CVS | sed "s%^./%%" | sed "s%^\.%%"`
diff --git a/docs/toplevel/Makefile.am b/docs/toplevel/Makefile.am
index 0719a7d..686483e 100644
--- a/docs/toplevel/Makefile.am
+++ b/docs/toplevel/Makefile.am
@@ -1,4 +1,4 @@
-docsdir = @GEDADOCDIR@
+docsdir = $(docdir)
 docs_DATA = gedadocs.html 
 
 EXTRA_DIST = gedadocs.html.in
diff --git a/docs/wiki/Makefile.am b/docs/wiki/Makefile.am
index 8dda3eb..fa8d427 100644
--- a/docs/wiki/Makefile.am
+++ b/docs/wiki/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/
+docsdir = $(docdir)/$(docname)/
 
 SUBDIRS = _media _detail lib 
 
diff --git a/docs/wiki/_detail/Makefile.am b/docs/wiki/_detail/Makefile.am
index 7a1e25f..824de2f 100644
--- a/docs/wiki/_detail/Makefile.am
+++ b/docs/wiki/_detail/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/_detail
+docsdir = $(docdir)/$(docname)/_detail
 
 docs_DATA = geda_net.html geda_faq_attrib.html geda_board-4.html 001tragesym_xemacs_modifiedselection.html geda_warmup_gschem03.html geda_gschem_screenshot_001.html geda_pcb-el-1.html tragesym_gschem_finished.html geda_rf_cascade_figure1.html geda_geda_flow.html 001tragesym_acroread_selectiontable.html geda_board-2.html geda_dialogmodel.html geda_dialogtrans.html geda_one-sch-3.html 001geda_terminal_screenshot_001.html 001tragesym_gschem_finished.html 001tragesym_xemacs_rawselection.html tragesym_ooo_rearanged.html tragesym_gschem_showhidden.html 001tragesym_kpdf_pinconfiguration.html tragesym_acroread_selectiontable.html geda_design_flow.html geda_switcap_figure1.html geda_schematicfinished2.html geda_two-sch-1.html geda_two-sch-2.html geda_dialogvac.html geda_status_screenshot.html 001geda_gschem_screenshot_001.html geda_symbol_7400-1.html geda_board-3.html geda_gschem-sym-1.html geda_switcap_figure4.html 001geda_ambiguous1.html geda_board-6.html geda_dialogdirective.html 001geda_gschem_workflow_01.html 001geda_ambiguous1_fixed.html geda_warmup_gschem02.html 001geda_symbol_7400-1.html geda_board-1.html geda_gschem-sym-3.html geda_switcap_figure3.html geda_one-sch-1.html geda_pcb-el-2.html 001tragesym_ooo_selection.html geda_nets.html geda_coordinatespace.html 001tragesym_ooo_rearanged.html geda_warmup_add_component.html geda_dialogvdc1.html geda_ambiguous1.html geda_dialoginclude.html 001geda_status_screenshot.html geda_ambiguous1_fixed.html tragesym_ooo_attributes.html tragesym_kpdf_pinconfiguration.html geda_one-sch-2.html geda_terminal_screenshot_001.html 001tragesym_ooo_changedpins.html geda_simple1.html geda_rf_cascade_figure2.html 001tragesym_kpdf_pindescription.html geda_gschem-sym-2.html geda_switcap_figure2.html geda_suse_electronics_menu.html 001geda_faq_attrib.html tragesym_xemacs_rawselection.html devel_tips_dialog_picture.html geda_warmup_gschem01.html tragesym_xemacs_modifiedselection.html geda_board-5.html geda_fileformat_textgraphic.html 001geda_design_flow.html geda_symbol_7400-1_hidden.html tragesym_ooo_changedpins.html 001geda_nets.html geda_gschem_workflow_01.html 001geda_symbol_7400-1_hidden.html 001tragesym_ooo_attributes.html 001tragesym_gschem_showhidden.html tragesym_kpdf_pindescription.html tragesym_ooo_selection.html 
 
diff --git a/docs/wiki/_media/Makefile.am b/docs/wiki/_media/Makefile.am
index 0a2860a..02832de 100644
--- a/docs/wiki/_media/Makefile.am
+++ b/docs/wiki/_media/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/_media
+docsdir = $(docdir)/$(docname)/_media
 
 docs_DATA = geda_dialogtrans.png geda_one-sch-2.png geda_fileformat_textgraphic.jpg geda_switcap_figure2.jpg geda_board-2.png geda_pcb-el-2.png geda_gschem-sym-3.png tragesym_ooo_changedpins.png geda_faq_attrib.jpg geda_warmup_add_component.png geda_gschem-sym-2.png geda_one-sch-1.png geda_board-5.png geda_gschem_screenshot_001.jpg geda_gschem_workflow_01.jpg geda_terminal_screenshot_001.jpg geda_ambiguous1_fixed.png geda_nets.jpg tragesym_ooo_rearanged.png geda_one-sch-3.png geda_board-6.png geda_ambiguous1.png geda_design_flow.jpg tragesym_ooo_selection.png geda_two-sch-2.png geda_pcb-el-1.png tragesym_gschem_showhidden.png geda_suse_electronics_menu.png geda_net.jpg tragesym_ooo_attributes.png geda_two-sch-1.png geda_switcap_figure3.jpg geda_rf_cascade_figure2.jpg geda_status_screenshot.jpg 001tragesym_template geda_switcap_figure4.jpg tragesym_template2 geda_switcap_figure1.jpg tragesym_template2.txt.txt geda_board-3.png tragesym_xemacs_rawselection.png geda_warmup_gschem01.png tragesym_kpdf_pinconfiguration.png geda_gschem-sym-1.png geda_dialogdirective.png geda_dialogmodel.png geda_geda_flow.png geda_symbol_7400-1.png devel_tips_dialog_picture.png geda_board-4.png geda_schematicfinished2.png tragesym_acroread_selectiontable.png geda_coordinatespace.jpg tragesym_xemacs_modifiedselection.png geda_warmup_gschem02.png geda_warmup_gschem03.png geda_dialogvac.png geda_dialoginclude.png geda_simple1.png tragesym_template geda_symbol_7400-1_hidden.png geda_rf_cascade_figure1.jpg geda_dialogvdc1.png tragesym_gschem_finished.png tragesym_kpdf_pindescription.png geda_board-1.png 
 
diff --git a/docs/wiki/lib/Makefile.am b/docs/wiki/lib/Makefile.am
index 9db6b57..928bc60 100644
--- a/docs/wiki/lib/Makefile.am
+++ b/docs/wiki/lib/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib
+docsdir = $(docdir)/$(docname)/lib
 
 SUBDIRS = exe tpl images plugins 
 
diff --git a/docs/wiki/lib/exe/Makefile.am b/docs/wiki/lib/exe/Makefile.am
index a1bce9b..3155292 100644
--- a/docs/wiki/lib/exe/Makefile.am
+++ b/docs/wiki/lib/exe/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/exe
+docsdir = $(docdir)/$(docname)/lib/exe
 
 docs_DATA = css 002css 001css opensearch 
 
diff --git a/docs/wiki/lib/images/Makefile.am b/docs/wiki/lib/images/Makefile.am
index ceae568..3180c77 100644
--- a/docs/wiki/lib/images/Makefile.am
+++ b/docs/wiki/lib/images/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/images
+docsdir = $(docdir)/$(docname)/lib/images
 
 SUBDIRS = smileys interwiki fileicons 
 
diff --git a/docs/wiki/lib/images/fileicons/Makefile.am b/docs/wiki/lib/images/fileicons/Makefile.am
index 105ea2f..39d9948 100644
--- a/docs/wiki/lib/images/fileicons/Makefile.am
+++ b/docs/wiki/lib/images/fileicons/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/images/fileicons
+docsdir = $(docdir)/$(docname)/lib/images/fileicons
 
 docs_DATA = doc.png sxc.png odc.png xls.png pdf.png gz.png tgz.png jpeg.png jpg.png odi.png ps.png odt.png file.png sxi.png odg.png sxw.png ppt.png rar.png rtf.png sxd.png rpm.png odp.png png.png zip.png swf.png odf.png deb.png src.png gif.png tar.png ods.png 
 
diff --git a/docs/wiki/lib/images/interwiki/Makefile.am b/docs/wiki/lib/images/interwiki/Makefile.am
index f166b5d..af23805 100644
--- a/docs/wiki/lib/images/interwiki/Makefile.am
+++ b/docs/wiki/lib/images/interwiki/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/images/interwiki
+docsdir = $(docdir)/$(docname)/lib/images/interwiki
 
 docs_DATA = dokubug.gif coral.gif amazon.de.gif google.gif amazon.gif wpmeta.gif sb.gif doku.gif wiki.gif amazon.uk.gif wp.gif wpde.gif meatball.gif phpfn.gif 
 
diff --git a/docs/wiki/lib/images/smileys/Makefile.am b/docs/wiki/lib/images/smileys/Makefile.am
index 82046ef..0615d35 100644
--- a/docs/wiki/lib/images/smileys/Makefile.am
+++ b/docs/wiki/lib/images/smileys/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/images/smileys
+docsdir = $(docdir)/$(docname)/lib/images/smileys
 
 docs_DATA = icon_wink.gif fixme.gif icon_smile.gif icon_smile2.gif 
 
diff --git a/docs/wiki/lib/plugins/Makefile.am b/docs/wiki/lib/plugins/Makefile.am
index af10363..2abed10 100644
--- a/docs/wiki/lib/plugins/Makefile.am
+++ b/docs/wiki/lib/plugins/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/plugins
+docsdir = $(docdir)/$(docname)/lib/plugins
 
 SUBDIRS = note definitionlist 
 
diff --git a/docs/wiki/lib/plugins/definitionlist/Makefile.am b/docs/wiki/lib/plugins/definitionlist/Makefile.am
index 8a38c02..a6bc1c7 100644
--- a/docs/wiki/lib/plugins/definitionlist/Makefile.am
+++ b/docs/wiki/lib/plugins/definitionlist/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/plugins/definitionlist
+docsdir = $(docdir)/$(docname)/lib/plugins/definitionlist
 
 SUBDIRS = images 
 
diff --git a/docs/wiki/lib/plugins/definitionlist/images/Makefile.am b/docs/wiki/lib/plugins/definitionlist/images/Makefile.am
index 623a04e..8cf81aa 100644
--- a/docs/wiki/lib/plugins/definitionlist/images/Makefile.am
+++ b/docs/wiki/lib/plugins/definitionlist/images/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/plugins/definitionlist/images
+docsdir = $(docdir)/$(docname)/lib/plugins/definitionlist/images
 
 docs_DATA = bullet.gif 
 
diff --git a/docs/wiki/lib/plugins/note/Makefile.am b/docs/wiki/lib/plugins/note/Makefile.am
index fd6b028..dca90ce 100644
--- a/docs/wiki/lib/plugins/note/Makefile.am
+++ b/docs/wiki/lib/plugins/note/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/plugins/note
+docsdir = $(docdir)/$(docname)/lib/plugins/note
 
 SUBDIRS = images 
 
diff --git a/docs/wiki/lib/plugins/note/images/Makefile.am b/docs/wiki/lib/plugins/note/images/Makefile.am
index a3fab24..4c4ac06 100644
--- a/docs/wiki/lib/plugins/note/images/Makefile.am
+++ b/docs/wiki/lib/plugins/note/images/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/plugins/note/images
+docsdir = $(docdir)/$(docname)/lib/plugins/note/images
 
 docs_DATA = warning.png important.png tip.png note.png 
 
diff --git a/docs/wiki/lib/tpl/Makefile.am b/docs/wiki/lib/tpl/Makefile.am
index 340e11d..aa18857 100644
--- a/docs/wiki/lib/tpl/Makefile.am
+++ b/docs/wiki/lib/tpl/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/tpl
+docsdir = $(docdir)/$(docname)/lib/tpl
 
 SUBDIRS = geda 
 
diff --git a/docs/wiki/lib/tpl/geda/Makefile.am b/docs/wiki/lib/tpl/geda/Makefile.am
index 4bcfe7c..2faf003 100644
--- a/docs/wiki/lib/tpl/geda/Makefile.am
+++ b/docs/wiki/lib/tpl/geda/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/tpl/geda
+docsdir = $(docdir)/$(docname)/lib/tpl/geda
 
 SUBDIRS = images 
 
diff --git a/docs/wiki/lib/tpl/geda/images/Makefile.am b/docs/wiki/lib/tpl/geda/images/Makefile.am
index be51681..ce39b5e 100644
--- a/docs/wiki/lib/tpl/geda/images/Makefile.am
+++ b/docs/wiki/lib/tpl/geda/images/Makefile.am
@@ -1,7 +1,7 @@
 
 
 docname=wiki
-docsdir = @GEDADOCDIR@/$(docname)/lib/tpl/geda/images
+docsdir = $(docdir)/$(docname)/lib/tpl/geda/images
 
 docs_DATA = link_icon.gif open.gif closed.gif mail_icon.gif tocdot2.gif inputshadow.png favicon buttonshadow.png windows.gif 
 

commit d117ca9718e4e5229f37983d9e08a584deb5550b
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add symbols to unified build system.
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index b0ef047..7241e07 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils
+SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils symbols
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index f0ca25e..1336692 100644
--- a/configure.ac
+++ b/configure.ac
@@ -249,5 +249,8 @@ AC_CONFIG_FILES([Makefile
                  utils/tests/refdes_renum/Makefile
                  utils/tests/refdes_renum/inputs/Makefile
                  utils/tests/refdes_renum/outputs/Makefile
+
+                 symbols/Makefile
+                 symbols/documentation/Makefile
 ])
 AC_OUTPUT
diff --git a/symbols/Makefile.am b/symbols/Makefile.am
index 11ef504..f8c9920 100644
--- a/symbols/Makefile.am
+++ b/symbols/Makefile.am
@@ -50,26 +50,20 @@ symbol_dirs = \
 
 SUBDIRS = documentation
 
-scmdatadir = @GEDADATADIR@/scheme
+scmdatadir = $(GEDADATADIR)/scheme
 dist_scmdata_DATA = geda-font.scm
 
-gafrcddir = @GEDADATADIR@/gafrc.d
+gafrcddir = $(GEDADATADIR)/gafrc.d
 dist_gafrcd_DATA = geda-clib.scm
 
 datasymdir = $(GEDADATADIR)/sym
 nobase_dist_datasym_DATA = \
 	vhdl/verilog2vhdl.sh vhdl/script.sed
 
-EXTRA_DIST = autogen.sh ChangeLog-1.0 \
+EXTRA_DIST = ChangeLog-1.0 \
 	font/README font/ChangeLog font/ChangeLog-1.0 \
 	radio/README
 
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
-
 # Copies symbols into distribution
 dist-hook:
 	@for lib in $(symbol_dirs); do \
@@ -107,7 +101,5 @@ uninstall-local:
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure config.status \
-		       aclocal.m4 config.guess config.sub install-sh \
-		       missing mkinstalldirs config.h.in
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *~ Makefile.in
diff --git a/symbols/documentation/Makefile.am b/symbols/documentation/Makefile.am
index bbe037c..a9d68e2 100644
--- a/symbols/documentation/Makefile.am
+++ b/symbols/documentation/Makefile.am
@@ -1,15 +1,15 @@
-datadocdir = @GEDADOCDIR@
-
-datadoc_DATA = nc.pdf
+doc_DATA = nc.pdf
 
 EXTRA_DIST = nc.doc geda.fig geda.pic nc.ps nc.pdf
 
 BUILT_SOURCES = geda.pic nc.pdf nc.ps
 
+SUFFIXES = .fig .pic .ps .doc .pdf
+
 #
 #  some standard rules for groff based documentation
 #
-%.pic: %.fig
+.fig.pic:
 	@echo "Creating pic (using fig2dev)"
 	@if which fig2dev >/dev/null 2>/dev/null; then           \
 		fig2dev -L pic $*.fig >$*.pic		       ;\
@@ -19,7 +19,7 @@ BUILT_SOURCES = geda.pic nc.pdf nc.ps
 		touch $*.pic				       ;\
 	fi
 
-%.ps: %.doc
+.doc.ps:
 	@echo "Creating ps (using groff)"
 	@rm -rf $*.tmp
 	@if test "x$(GROFF)" != xno; then                        \
@@ -31,7 +31,7 @@ BUILT_SOURCES = geda.pic nc.pdf nc.ps
 		touch $*.ps                                     ;\
 	fi
 
-%.pdf: %.ps
+.ps.pdf:
 	@echo "Creating pdf (using ps2pdf)"
 	@rm -rf $*.pdf
 	@if which ps2pdf >/dev/null 2>/dev/null; then             \
@@ -50,5 +50,5 @@ nc.pdf: nc.ps
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~ *.ps *.pdf 
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure geda.pic *.pdf *.ps
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *~ Makefile.in geda.pic *.pdf *.ps

commit df0adced878c8528d14a19fc45c5f8d3bd67ea10
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add utils to unified build system
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index 22f303d..b0ef047 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist
+SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist utils
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index 5d9ba1c..f0ca25e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -227,5 +227,27 @@ AC_CONFIG_FILES([Makefile
                  gnetlist/scripts/bompp.sh
                  gnetlist/scripts/sw2asc
                  gnetlist/lib/system-gnetlistrc
+
+                 utils/Makefile
+                 utils/docs/Makefile
+                 utils/examples/Makefile
+                 utils/examples/gmk_sym/Makefile
+                 utils/examples/gsch2pcb/Makefile
+                 utils/examples/tragesym/Makefile
+                 utils/gschlas/Makefile
+                 utils/gxyrs/Makefile
+                 utils/include/Makefile
+                 utils/lib/Makefile
+                 utils/lib/system-gschlasrc
+                 utils/man/Makefile
+                 utils/scripts/Makefile
+                 utils/src/Makefile
+                 utils/tests/Makefile
+                 utils/tests/gxyrs/Makefile
+                 utils/tests/gxyrs/inputs/Makefile
+                 utils/tests/gxyrs/outputs/Makefile
+                 utils/tests/refdes_renum/Makefile
+                 utils/tests/refdes_renum/inputs/Makefile
+                 utils/tests/refdes_renum/outputs/Makefile
 ])
 AC_OUTPUT
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 23906bb..baf7ea5 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -1,18 +1,9 @@
 
 SUBDIRS = src gschlas scripts lib include examples docs man tests gxyrs
 
-EXTRA_DIST = ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 ChangeLog-1.0 \
-	autogen.sh
-
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = ChangeLog.tragesym-1.0 ChangeLog.gsch2pcb-1.0 ChangeLog-1.0
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-		       config.status aclocal.m4 config.guess config.sub \
-		       depcomp install-sh  missing mkinstalldirs compile
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/utils/docs/Makefile.am b/utils/docs/Makefile.am
index 469aabb..9fbafbf 100644
--- a/utils/docs/Makefile.am
+++ b/utils/docs/Makefile.am
@@ -1,7 +1,7 @@
 
 EXTRA_DIST = README.gsch2pcb README.olib README.tragesym README.grenum TODO.grenum why.grenum
 
-docsreadmedir = @GEDADOCDIR@/readmes
+docsreadmedir = $(docdir)/readmes
 docsreadme_DATA = README.gsch2pcb README.olib README.tragesym README.grenum
 
 MOSTLYCLEANFILES = *.log *~
diff --git a/utils/gschlas/Makefile.am b/utils/gschlas/Makefile.am
index 88aa090..ce686e3 100644
--- a/utils/gschlas/Makefile.am
+++ b/utils/gschlas/Makefile.am
@@ -1,34 +1,26 @@
 ## Process this file with automake to produce Makefile.in
 
-bin_PROGRAMS = gschlas 
-
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
+bin_PROGRAMS = gschlas
 
 # don't forget all *.h files */
 gschlas_SOURCES = \
-		i_vars.c g_rc.c g_register.c globals.c \
-		gschlas.c s_util.c parsecmd.c 
-
-
-INCLUDES = @GSCHLAS_CFLAGS@ 
-gschlas_LDADD = @GSCHLAS_LDFLAGS@
-
-EXTRA_DIST = create_proto 
-
-CPROTO =        cproto
-CPROTOCFLAGS =  $(INCLUDES) -I. -I.. -I../include
-ALES_HACK =     -D__GNUC__
-
-proto: prototype.h
-
-prototype.h: $(gschem_SOURCES)
-	$(CPROTO) $(ALES_HACK) $(CPROTOCFLAGS) *.c > new_proto
-	mv new_proto ../include/prototype.h
-
-MOSTLYCLEANFILES = *.log *.ps core FILE *~ prototype.bak
-CLEANFILES = *.log *.ps core FILE *~ prototype.bak
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log *.ps core FILE *~ prototype.bak prototype.h Makefile.in configure
+	g_rc.c \
+	g_register.c \
+	globals.c \
+	gschlas.c \
+	i_vars.c \
+	parsecmd.c \
+	s_util.c
+
+gschlas_CPPFLAGS = -I$(top_srcdir)/libgeda/include -I$(srcdir)/../include \
+	-I$(top_srcdir) -I$(includedir)
+gschlas_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLIGS) $(GLIB_CFLAGS) \
+	$(GUILE_CFLAGS) $(GDK_PIXBUF_CFLAGS)
+gschlas_LDFLAGS = $(GLIB_LIBS) $(GUILE_LIBS) $(GDK_PIXBUF_LIBS)
+gschlas_LDADD = $(top_builddir)/libgeda/src/libgeda.la
+
+MOSTLYCLEANFILES = *.log *.ps core FILE *~
+CLEANFILES = *.log *.ps core FILE *~
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *.ps core FILE *~ Makefile.in
 
diff --git a/utils/gschlas/g_rc.c b/utils/gschlas/g_rc.c
index 8173c54..f733fb5 100644
--- a/utils/gschlas/g_rc.c
+++ b/utils/gschlas/g_rc.c
@@ -19,6 +19,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -53,10 +54,11 @@ SCM g_rc_gschlas_version(SCM version)
 		SCM_ARG1, "gschlas-version");
 
 
-    if (g_strcasecmp (SCM_STRING_CHARS (version), DATE_VERSION) != 0) {
+    if (g_strcasecmp (SCM_STRING_CHARS (version), PACKAGE_DATE_VERSION) != 0) {
       fprintf(stderr,
               "You are running gEDA/gaf version [%s%s.%s],\n",
-              PREPEND_VERSION_STRING, DOTTED_VERSION, DATE_VERSION);
+              PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION,
+              PACKAGE_DATE_VERSION);
       fprintf(stderr,
               "but you have a version [%s] gschlasrc file:\n[%s]\n",
               SCM_STRING_CHARS (version), rc_filename);
diff --git a/utils/src/Makefile.am b/utils/src/Makefile.am
index f2602fd..0055bd7 100644
--- a/utils/src/Makefile.am
+++ b/utils/src/Makefile.am
@@ -3,29 +3,34 @@
 bin_PROGRAMS = gmk_sym smash_megafile convert_sym sarlacc_schem olib \
 	       gsch2pcb grenum
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
 # don't forget all *.h files */
-gmk_sym_SOURCES = gmk_sym.c char_width.c 
-smash_megafile_SOURCES = smash_megafile.c 
-convert_sym_SOURCES = convert_sym.c char_width.c
-sarlacc_schem_SOURCES = sarlacc_schem.c
+gmk_sym_SOURCES = gmk_sym.c char_width.c
+smash_megafile_SOURCES = smash_megafile.c
+grenum_SOURCES = grenum.c grenum.h
+
 olib_SOURCES = olib.l geda_sym_format.h
+olib_LDFLAGS = -lm
+
+convert_sym_SOURCES = convert_sym.c char_width.c
+convert_sym_LDFLAGS = -lm
+
 gsch2pcb_SOURCES = gsch2pcb.c
-grenum_SOURCES = grenum.c grenum.h
+gsch2pcb_CPPFLAGS = \
+	-DPCBDATADIR=\"$(PCBDATADIR)\" \
+	-DPCBLIBPATH=\"$(PCBLIBPATH)\"
+gsch2pcb_CFLAGS = $(GLIB_CFLAGS)
+gsch2pcb_LDFLAGS = $(GLIB_LIBS)
 
-convert_sym_CFLAGS = @CONVERT_SYM_CFLAGS@ $(AM_CFLAGS)
-sarlacc_schem_CFLAGS = @SARLACC_SCHEM_CFLAGS@ $(AM_CFLAGS)
-gsch2pcb_CFLAGS = @GSCH2PCB_CFLAGS@ $(AM_CFLAGS)
+sarlacc_schem_SOURCES = sarlacc_schem.c
+sarlacc_schem_CFLAGS = $(GLIB_CFLAGS) $(GUILE_CFLAGS) $(GDK_PIXBUF_CFLAGS)
+sarlacc_schem_LDFLAGS = $(GLIB_LIBS) $(GUILE_LIBS) $(GDK_PIXBUF_LIBS)
+sarlacc_schem_LDADD = $(top_builddir)/libgeda/src/libgeda.la
 
-convert_sym_LDADD = -lm
-olib_LDADD = -lm
-gsch2pcb_LDADD = @GSCH2PCB_LDFLAGS@ 
+AM_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLIGS)
+AM_CPPFLAGS = -I$(top_srcdir)/libgeda/include -I$(srcdir)/../include \
+	-I$(top_srcdir) -I$(includedir)
 
 MOSTLYCLEANFILES = *.log *.ps core FILE *~ olib.c
 CLEANFILES = *.log *.ps core FILE *~  olib.c
 DISTCLEANFILES = *.log core FILE *~ prototype.bak olib.c
 MAINTAINERCLEANFILES = *.log *.ps core FILE *~  Makefile.in configure olib.c
-
diff --git a/utils/src/grenum.c b/utils/src/grenum.c
index 73c888a..921e1a9 100644
--- a/utils/src/grenum.c
+++ b/utils/src/grenum.c
@@ -25,6 +25,8 @@
 #include "config.h"
 #endif
 
+#include "version.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -392,6 +394,6 @@ void printver()
 	{
 	printf("This is grenum, an advanced refdes renumber utility for gEDA's gschem.\n");
 	printf("Version %s.  gEDA/gaf version %s.%s\n",GRVERSION, 
-               DOTTED_VERSION, DATE_VERSION);
+               PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION);
 	printf("Compiled on %s at %s\n",COMP_DATE,COMP_TIME);
 	}
diff --git a/utils/src/gsch2pcb.c b/utils/src/gsch2pcb.c
index f8031e7..f859b43 100644
--- a/utils/src/gsch2pcb.c
+++ b/utils/src/gsch2pcb.c
@@ -79,7 +79,7 @@ static GList	*pcb_element_list,
 				*extra_gnetlist_arg_list;
 
 static gchar	*schematics,
-				*basename;
+				*sch_basename;
 
 static gchar	*m4_command,
 				*m4_pcbdir,
@@ -1165,8 +1165,8 @@ add_schematic(gchar *sch)
 	else
 		schematics = g_strdup(sch);
 	g_free(s);
-	if (!basename && (s = strstr(sch, ".sch")) != NULL)
-		basename = g_strndup(sch, s - sch);
+	if (!sch_basename && (s = strstr(sch, ".sch")) != NULL)
+		sch_basename = g_strndup(sch, s - sch);
 	}
 
 static gint
@@ -1226,7 +1226,7 @@ parse_config(gchar *config, gchar *arg)
 				g_list_prepend(element_directory_list, expand_dir(arg));
 		}
 	else if (!strcmp(config, "output-name") || !strcmp(config, "o"))
-		basename = g_strdup(arg);
+		sch_basename = g_strdup(arg);
 	else if (!strcmp(config, "schematics"))
 		add_schematic(arg);
 	else if (!strcmp(config, "m4-command"))
@@ -1508,10 +1508,10 @@ main(gint argc, gchar **argv)
 	  }
 	g_free (path);
 
-	pins_file_name = g_strconcat(basename, ".cmd", NULL);
-	net_file_name = g_strconcat(basename, ".net", NULL);
-	pcb_file_name = g_strconcat(basename, ".pcb", NULL);
-	bak_file_name = g_strconcat(basename, ".pcb.bak", NULL);
+	pins_file_name = g_strconcat(sch_basename, ".cmd", NULL);
+	net_file_name = g_strconcat(sch_basename, ".net", NULL);
+	pcb_file_name = g_strconcat(sch_basename, ".pcb", NULL);
+	bak_file_name = g_strconcat(sch_basename, ".pcb.bak", NULL);
 	tmp = g_strdup(bak_file_name);
 
 	for (i = 0; g_file_test(bak_file_name, G_FILE_TEST_EXISTS); ++i)
@@ -1524,13 +1524,14 @@ main(gint argc, gchar **argv)
 	if (g_file_test(pcb_file_name, G_FILE_TEST_EXISTS))
 		{
 		initial_pcb = FALSE;
-		pcb_new_file_name = g_strconcat(basename, ".new.pcb", NULL);
+		pcb_new_file_name = g_strconcat(sch_basename, ".new.pcb", NULL);
 		get_pcb_element_list(pcb_file_name);
 		}
 	else
 		pcb_new_file_name = g_strdup(pcb_file_name);
 
-	run_gnetlist(pins_file_name, net_file_name, pcb_new_file_name, basename, schematics);
+	run_gnetlist(pins_file_name, net_file_name, pcb_new_file_name,
+                     sch_basename, schematics);
 
 	if (add_elements(pcb_new_file_name) == 0)
 		{
diff --git a/utils/tests/gxyrs/Makefile.am b/utils/tests/gxyrs/Makefile.am
index aa78a73..7cfa32f 100644
--- a/utils/tests/gxyrs/Makefile.am
+++ b/utils/tests/gxyrs/Makefile.am
@@ -3,7 +3,7 @@
 
 SUBDIRS= inputs outputs
 
-TESTS_ENVIRONMENT= PERL=${PERL} top_srcdir=${top_srcdir}
+TESTS_ENVIRONMENT= PERL=${PERL} top_srcdir=${srcdir}/../..
 
 RUN_TESTS= run_tests.sh
 
diff --git a/utils/tests/refdes_renum/Makefile.am b/utils/tests/refdes_renum/Makefile.am
index aa78a73..7cfa32f 100644
--- a/utils/tests/refdes_renum/Makefile.am
+++ b/utils/tests/refdes_renum/Makefile.am
@@ -3,7 +3,7 @@
 
 SUBDIRS= inputs outputs
 
-TESTS_ENVIRONMENT= PERL=${PERL} top_srcdir=${top_srcdir}
+TESTS_ENVIRONMENT= PERL=${PERL} top_srcdir=${srcdir}/../..
 
 RUN_TESTS= run_tests.sh
 

commit a3386972e29cad042a9875743df8d4331b7d9d08
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gnetlist to unified build system.
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index c2b60fd..22f303d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem gattrib gsymcheck
+SUBDIRS = intl libgeda gschem gattrib gsymcheck gnetlist
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index 9fc2724..5d9ba1c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -201,5 +201,31 @@ AC_CONFIG_FILES([Makefile
                  gsymcheck/src/Makefile
                  gsymcheck/tests/Makefile
                  gsymcheck/Makefile
+
+                 gnetlist/Makefile
+                 gnetlist/src/Makefile
+                 gnetlist/include/Makefile
+                 gnetlist/scheme/Makefile
+                 gnetlist/examples/Makefile
+                 gnetlist/tests/Makefile
+                 gnetlist/tests/hierarchy/Makefile
+                 gnetlist/tests/hierarchy2/Makefile
+                 gnetlist/tests/drc2/Makefile
+                 gnetlist/tests/common/Makefile
+                 gnetlist/docs/Makefile
+                 gnetlist/docs/vams/Makefile
+                 gnetlist/examples/vams/Makefile
+                 gnetlist/examples/vams/vhdl/Makefile
+                 gnetlist/examples/vams/vhdl/basic-vhdl/Makefile
+                 gnetlist/examples/vams/vhdl/new-vhdl/Makefile
+                 gnetlist/examples/switcap/Makefile
+                 gnetlist/lib/Makefile
+                 gnetlist/utils/Makefile
+                 gnetlist/scripts/Makefile
+                 gnetlist/scripts/annotate.sh
+                 gnetlist/scripts/bom_xref.sh
+                 gnetlist/scripts/bompp.sh
+                 gnetlist/scripts/sw2asc
+                 gnetlist/lib/system-gnetlistrc
 ])
 AC_OUTPUT
diff --git a/gnetlist/Makefile.am b/gnetlist/Makefile.am
index 1f46c9c..3fafced 100644
--- a/gnetlist/Makefile.am
+++ b/gnetlist/Makefile.am
@@ -1,20 +1,9 @@
 
-SUBDIRS = src include utils lib scheme examples scripts tests docs 
+SUBDIRS = src include utils lib scheme examples scripts tests docs
 
-EXTRA_DIST = BUGS ChangeLog-1.0 autogen.sh
-
-proto:
-	(cd src ; ./create_proto)
-
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = BUGS ChangeLog-1.0
 
 MOSTLYCLEANFILES = *.log core FILE *~ 
 CLEANFILES = *.log core FILE *~ 
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-                       config.status aclocal.m4 config.guess config.sub \
-		       depcomp install-sh mkinstalldirs missing
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gnetlist/docs/Makefile.am b/gnetlist/docs/Makefile.am
index 3ca95e8..44b8a38 100644
--- a/gnetlist/docs/Makefile.am
+++ b/gnetlist/docs/Makefile.am
@@ -8,15 +8,16 @@ BUILT_SOURCES = gnetlist.html
 
 man_MANS = gnetlist.1
 
-docsreadmedir = @GEDADOCDIR@/readmes
+docsreadmedir = $(docdir)/readmes
 docsreadme_DATA = README.bom README.pcb README.switcap README.verilog \
 		  README.vhdl README.sysc README.eagle
 
-docsmandir = @GEDADOCDIR@/man
+docsmandir = $(docdir)/man
 docsman_DATA = gnetlist.html
 
+SUFFIXES = .1 .html
 
-%.html: %.1
+.1.html:
 	@echo "Creating html manpage (using groff)"
 	@rm -rf $*.tmp
 	@if test "x$(GROFF)" != xno; then                        \
diff --git a/gnetlist/docs/vams/Makefile.am b/gnetlist/docs/vams/Makefile.am
index 6d69639..b91ba68 100644
--- a/gnetlist/docs/vams/Makefile.am
+++ b/gnetlist/docs/vams/Makefile.am
@@ -2,7 +2,7 @@
 EXTRA_DIST = content.txt syntax_architecture.txt syntax_entity.txt \
 	     vams_mode.txt
 
-docsreadmedir = @GEDADOCDIR@/readmes
+docsreadmedir = $(docdir)/readmes
 docsreadme_DATA = vams_mode.txt syntax_architecture.txt syntax_entity.txt
 
 MOSTLYCLEANFILES = *.log *~
diff --git a/gnetlist/src/Makefile.am b/gnetlist/src/Makefile.am
index 4cb6a0d..503cebc 100644
--- a/gnetlist/src/Makefile.am
+++ b/gnetlist/src/Makefile.am
@@ -4,29 +4,29 @@ bin_PROGRAMS = gnetlist
 
 # don't forget all *.h files */
 gnetlist_SOURCES = \
-		i_vars.c g_netlist.c g_rc.c g_register.c globals.c \
-		gnetlist.c parsecmd.c s_cpinlist.c s_net.c \
-		s_netlist.c s_netattrib.c s_traverse.c \
-		s_rename.c s_hierarchy.c s_misc.c vams_misc.c
-
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
-INCLUDES = -I$(top_srcdir)/include @GNETLIST_CFLAGS@
-gnetlist_LDADD = @GNETLIST_LDFLAGS@
-
-EXTRA_DIST = create_proto 
-
-CPROTO =        cproto
-CPROTOCFLAGS =  $(INCLUDES) -I. -I.. -I../include
-ALES_HACK =     -D__GNUC__
-
-proto: prototype.h
-
-prototype.h: $(gschem_SOURCES)
-	$(CPROTO) $(ALES_HACK) $(CPROTOCFLAGS) *.c > new_proto
-	mv new_proto ../include/prototype.h
+	g_netlist.c \
+	g_rc.c \
+	g_register.c \
+	globals.c \
+	gnetlist.c \
+	i_vars.c \
+	parsecmd.c \
+	s_cpinlist.c \
+	s_hierarchy.c \
+	s_misc.c \
+	s_net.c \
+	s_netattrib.c \
+	s_netlist.c \
+	s_rename.c \
+	s_traverse.c \
+	vams_misc.c
+
+gnetlist_CPPFLAGS = -I$(top_srcdir)/libgeda/include -I$(srcdir)/../include \
+	-I$(top_srcdir) -I$(includedir)
+gnetlist_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLIGS) $(GLIB_CFLAGS) \
+	$(GUILE_CFLAGS) $(GDK_PIXBUF_CFLAGS)
+gnetlist_LDFLAGS = $(GLIB_LIBS) $(GUILE_LIBS) $(GDK_PIXBUF_LIBS)
+gnetlist_LDADD = $(top_builddir)/libgeda/src/libgeda.la
 
 MOSTLYCLEANFILES = *.log *.ps core FILE *~ prototype.bak
 CLEANFILES = *.log *.ps core FILE *~ prototype.bak
diff --git a/gnetlist/src/g_rc.c b/gnetlist/src/g_rc.c
index b545a55..ea3b2cc 100644
--- a/gnetlist/src/g_rc.c
+++ b/gnetlist/src/g_rc.c
@@ -19,6 +19,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -51,10 +52,11 @@ SCM g_rc_gnetlist_version(SCM version)
   SCM_ASSERT (scm_is_string (version), version,
               SCM_ARG1, "gnetlist-version");
 
-  if (strcmp (SCM_STRING_CHARS (version), DATE_VERSION) != 0) {
+  if (strcmp (SCM_STRING_CHARS (version), PACKAGE_DATE_VERSION) != 0) {
     fprintf(stderr,
 	    "You are running gEDA/gaf version [%s%s.%s],\n", 
-            PREPEND_VERSION_STRING, DOTTED_VERSION, DATE_VERSION);
+            PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION,
+            PACKAGE_DATE_VERSION);
     fprintf(stderr,
 	    "but you have a version [%s] gnetlistrc file:\n[%s]\n",
 	    SCM_STRING_CHARS (version), rc_filename);
diff --git a/gnetlist/src/gnetlist.c b/gnetlist/src/gnetlist.c
index 25e5916..99c0a59 100644
--- a/gnetlist/src/gnetlist.c
+++ b/gnetlist/src/gnetlist.c
@@ -19,6 +19,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <sys/param.h>
@@ -145,7 +146,7 @@ void main_prog(void *closure, int argc, char *argv[])
     s_log_init ("gnetlist");
 
     s_log_message("gEDA/gnetlist version %s%s.%s\n", PREPEND_VERSION_STRING,
-                  DOTTED_VERSION, DATE_VERSION);
+                  PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION);
     s_log_message
         ("gEDA/gnetlist comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.\n");
     s_log_message
diff --git a/gnetlist/tests/drc2/Makefile.am b/gnetlist/tests/drc2/Makefile.am
index 82c943a..9be1840 100644
--- a/gnetlist/tests/drc2/Makefile.am
+++ b/gnetlist/tests/drc2/Makefile.am
@@ -40,9 +40,12 @@ EXTRA_DIST = duplicated-refdes.sch duplicated-refdes.drc2 \
 # make distcheck
 check_SCRIPTS = tests
 
-BUILDDIR=$(top_builddir)/tests/drc2
+BUILDDIR=$(builddir)
 SRCDIR=$(srcdir)
 
+gnet_srcdir=$(top_srcdir)/gnetlist
+gnet_builddir=$(top_builddir)/gnetlist
+
 .PHONY : tests
 tests:
 # cleanup
@@ -51,8 +54,8 @@ tests:
 
 # copy required file(s)
 	sed \
-		-e 's;@scheme_srcdir@;${top_srcdir}/scheme;g' \
-		-e 's;@scheme_builddir@;${top_builddir}/scheme;g' \
+		-e 's;@scheme_srcdir@;${gnet_srcdir}/scheme;g' \
+		-e 's;@scheme_builddir@;${gnet_builddir}/scheme;g' \
 		$(SRCDIR)/gnetlistrc.drc2 > $(BUILDDIR)/gnetlistrc
 
 # make the tests
@@ -61,8 +64,8 @@ tests:
 	  file_basename=`basename $$file .sch`; \
 	  echo Checking test in $(SRCDIR)/$$file_basename.sch; \
 	  ( export TESTDIR=$(SRCDIR) ; \
-	    $(top_builddir)/src/gnetlist -g drc2 -o $(BUILDDIR)/new_$$file_basename.drc2 \
-            $$file ); \
+	    $(gnet_builddir)/src/gnetlist -g drc2 -o $(BUILDDIR)/new_$$file_basename.drc2 \
+            $$file > /dev/null 2>&1); \
           diff $(SRCDIR)/$$file_basename.drc2 \
                  $(BUILDDIR)/new_$$file_basename.drc2; \
           if [ $$? -ne 0 ]; then \
diff --git a/gnetlist/tests/hierarchy/Makefile.am b/gnetlist/tests/hierarchy/Makefile.am
index d3104a8..eefab65 100644
--- a/gnetlist/tests/hierarchy/Makefile.am
+++ b/gnetlist/tests/hierarchy/Makefile.am
@@ -9,14 +9,14 @@ EXTRA_DIST = 1217.geda bottom.sch bottom.sym gnetlistrc.hierarchy gschemrc \
 # make distcheck
 check_SCRIPTS = tests
 
-BUILDDIR=$(top_builddir)/tests/hierarchy
+BUILDDIR=$(top_builddir)/gnetlist/tests/hierarchy
 SRCDIR=$(srcdir)
-GNETLIST=$(top_builddir)/src/gnetlist
+GNETLIST=$(top_builddir)/gnetlist/src/gnetlist
 
 tests:
 	rm -f $(BUILDDIR)/new_*
 	cp -f $(SRCDIR)/gnetlistrc.hierarchy $(BUILDDIR)/gnetlistrc
-	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/scheme ; export SCMDIR ; \
+	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/gnetlist/scheme ; export SCMDIR ; \
 	  echo $$TESTDIR; \
 	  $(GNETLIST) \
 	     -o $(BUILDDIR)/new_hierarchy.geda -g geda \
diff --git a/gnetlist/tests/hierarchy2/Makefile.am b/gnetlist/tests/hierarchy2/Makefile.am
index 56ee141..0192f12 100644
--- a/gnetlist/tests/hierarchy2/Makefile.am
+++ b/gnetlist/tests/hierarchy2/Makefile.am
@@ -6,14 +6,14 @@ EXTRA_DIST = gafrc.hierarchy2 hierarchy2.geda top.sch under.sch under.sym
 # make distcheck
 check_SCRIPTS = tests
 
-BUILDDIR=$(top_builddir)/tests/hierarchy2
+BUILDDIR=$(top_builddir)/gnetlist/tests/hierarchy2
 SRCDIR=$(srcdir)
-GNETLIST=$(top_builddir)/src/gnetlist
+GNETLIST=$(top_builddir)/gnetlist/src/gnetlist
 
 tests:
 	rm -f $(BUILDDIR)/new_*
 	cp -f $(SRCDIR)/gafrc.hierarchy2 $(BUILDDIR)/gafrc
-	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/scheme ; export SCMDIR ; \
+	( TESTDIR=$(SRCDIR); export TESTDIR ; SCMDIR=${top_builddir}/gnetlist/scheme ; export SCMDIR ; \
 	  echo $$TESTDIR; \
 	  $(GNETLIST) \
 	     -o $(BUILDDIR)/new_hierarchy2.geda -g geda \
diff --git a/gnetlist/utils/Makefile.am b/gnetlist/utils/Makefile.am
index 97eab95..2c94045 100644
--- a/gnetlist/utils/Makefile.am
+++ b/gnetlist/utils/Makefile.am
@@ -2,16 +2,11 @@
 
 bin_PROGRAMS = mk_verilog_syms
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
 mk_verilog_syms_SOURCES = \
 		mk_verilog_syms.c
 
-INCLUDES = 
-
-mk_verilog_syms_LDADD = -lm 
+mk_verilog_syms_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLIGS)
+mk_verilog_syms_LDFLAGS = -lm
 
 MOSTLYCLEANFILES = *.log *.ps core FILE *~ prototype.bak
 CLEANFILES = *.log *.ps core FILE *~ prototype.bak

commit a4f28a7217f117b1601561b31c9bf8d1096da25f
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gsymcheck to unified build system.
    
    Also removes the empty 'gsymcheck/examples' and 'gsymcheck/scheme'
    directories.
    
    Note: make distcheck does not pass in this commit.

diff --git a/Makefile.am b/Makefile.am
index d926bee..c2b60fd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem gattrib
+SUBDIRS = intl libgeda gschem gattrib gsymcheck
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/configure.ac b/configure.ac
index 104d07a..9fc2724 100644
--- a/configure.ac
+++ b/configure.ac
@@ -194,5 +194,12 @@ AC_CONFIG_FILES([Makefile
                  gattrib/src/Makefile
                  gattrib/data/Makefile
 
+                 gsymcheck/docs/Makefile
+                 gsymcheck/include/Makefile
+                 gsymcheck/lib/Makefile
+                 gsymcheck/lib/system-gsymcheckrc
+                 gsymcheck/src/Makefile
+                 gsymcheck/tests/Makefile
+                 gsymcheck/Makefile
 ])
 AC_OUTPUT
diff --git a/gsymcheck/.gitignore b/gsymcheck/.gitignore
index b6406a0..0bfd58c 100644
--- a/gsymcheck/.gitignore
+++ b/gsymcheck/.gitignore
@@ -1,27 +1,4 @@
 Makefile
 Makefile.in
-*.cache
-configure
-config.h
-config.h.in
-config.log
-config.status
-stamp-h1
-aclocal.m4
-confdefs.h
-config.guess
-config.sub
-depcomp
-install-sh
-missing
-mkinstalldirs
 *~
 *#
-TAGS
-GPATH
-GRTAGS
-GSYMS
-GTAGS
-HTML
-gschem.log
-gsymcheck.log
diff --git a/gsymcheck/Makefile.am b/gsymcheck/Makefile.am
index 3dedaf9..8c63960 100644
--- a/gsymcheck/Makefile.am
+++ b/gsymcheck/Makefile.am
@@ -1,20 +1,9 @@
 
-SUBDIRS = src include lib scheme examples docs tests
+SUBDIRS = src include lib docs tests
 
-EXTRA_DIST = BUGS ChangeLog-1.0 autogen.sh
-
-proto:
-	(cd src ; ./create_proto)
-
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = BUGS ChangeLog-1.0
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak 
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-		       config.status aclocal.m4 config.guess config.sub \
-		       depcomp install-sh missing mkinstalldirs
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gsymcheck/docs/Makefile.am b/gsymcheck/docs/Makefile.am
index 1704a98..8efd255 100644
--- a/gsymcheck/docs/Makefile.am
+++ b/gsymcheck/docs/Makefile.am
@@ -5,26 +5,19 @@ BUILT_SOURCES = gsymcheck.html
 
 man_MANS = gsymcheck.1
 
-docsmandir = @GEDADOCDIR@/man
+docsmandir = $(docdir)/man
 docsman_DATA = gsymcheck.html
 
-
-%.html: %.1
-	@echo "Creating html manpage (using groff)"
-	@rm -rf $*.tmp
-	@if test "x$(GROFF)" != xno; then                        \
-		LC_NUMERIC=C $(GROFF) -man -T html  $*.1 >$*.tmp;\
-		mv -f $*.tmp $*.html                            ;\
-	else                                                     \
-		echo "** Did not find groff **"                 ;\
-		echo "Some Documentation might not be correct!" ;\
-                touch $*.html                                   ;\
-	fi
-
-gsymcheck.html: gsymcheck.1
+.1.html:
+if ENABLE_GROFF
+	LC_NUMERIC=C $(GROFF) -man -T html $< > $@.tmp \
+	  && mv -f $@.tmp $@
+else
+	echo "Cannot build $@ from $<: groff is missing."
+endif
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~ gsymcheck.html
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure gsymcheck.html
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *~ Makefile.in gsymcheck.html
 
diff --git a/gsymcheck/examples/.gitignore b/gsymcheck/examples/.gitignore
deleted file mode 100644
index 23c1897..0000000
--- a/gsymcheck/examples/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile
-Makefile.in
-*~
diff --git a/gsymcheck/examples/Makefile.am b/gsymcheck/examples/Makefile.am
deleted file mode 100644
index 27782c3..0000000
--- a/gsymcheck/examples/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-EXTRA_DIST =
-
-MOSTLYCLEANFILES =  core *.log FILE *.ps *~
-CLEANFILES = core *.log FILE *.ps *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = core *.log FILE *.ps *~ Makefile.in configure
-
-
-
diff --git a/gsymcheck/include/Makefile.am b/gsymcheck/include/Makefile.am
index d8cfb92..4c23ce0 100644
--- a/gsymcheck/include/Makefile.am
+++ b/gsymcheck/include/Makefile.am
@@ -4,6 +4,5 @@ noinst_HEADERS = globals.h i_vars.h papersizes.h prototype.h struct.h
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure
-
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gsymcheck/lib/Makefile.am b/gsymcheck/lib/Makefile.am
index e523c38..f75e916 100644
--- a/gsymcheck/lib/Makefile.am
+++ b/gsymcheck/lib/Makefile.am
@@ -1,10 +1,10 @@
 
-rcdatadir = @GEDARCDIR@
+rcdatadir = $(GEDARCDIR)
 rcdata_DATA = system-gsymcheckrc 
 
 EXTRA_DIST = system-gsymcheckrc.in 
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = system-gsymcheckrc *.log *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = system-gsymcheckrc *.log *~ Makefile.in
diff --git a/gsymcheck/scheme/.gitignore b/gsymcheck/scheme/.gitignore
deleted file mode 100644
index ec52e3c..0000000
--- a/gsymcheck/scheme/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile.in
-Makefile
-*~
diff --git a/gsymcheck/scheme/Makefile.am b/gsymcheck/scheme/Makefile.am
deleted file mode 100644
index 678e07e..0000000
--- a/gsymcheck/scheme/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-
-scmdatadir = @gedadatadir@/scheme
-
-MOSTLYCLEANFILES = *.log *~
-CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure
diff --git a/gsymcheck/src/Makefile.am b/gsymcheck/src/Makefile.am
index 773dd7f..861817d 100644
--- a/gsymcheck/src/Makefile.am
+++ b/gsymcheck/src/Makefile.am
@@ -14,12 +14,12 @@ gsymcheck_SOURCES = \
 	s_log.c \
 	s_symstruct.c
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
-INCLUDES = -I$(top_srcdir)/include @GSYMCHECK_CFLAGS@
-gsymcheck_LDADD = @GSYMCHECK_LDFLAGS@
+gsymcheck_CPPFLAGS = -I$(top_srcdir)/libgeda/include -I$(srcdir)/../include \
+	-I$(top_srcdir) -I$(includedir)
+gsymcheck_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLIGS) $(GLIB_CFLAGS) \
+	$(GUILE_CFLAGS) $(GDK_PIXBUF_CFLAGS)
+gsymcheck_LDFLAGS = $(GLIB_LIBS) $(GUILE_LIBS) $(GDK_PIXBUF_LIBS)
+gsymcheck_LDADD = $(top_builddir)/libgeda/src/libgeda.la
 
 EXTRA_DIST = create_proto 
 
diff --git a/gsymcheck/src/g_rc.c b/gsymcheck/src/g_rc.c
index be7b4ea..97eb4cb 100644
--- a/gsymcheck/src/g_rc.c
+++ b/gsymcheck/src/g_rc.c
@@ -19,6 +19,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -48,10 +49,10 @@ SCM g_rc_gsymcheck_version(SCM version)
   SCM_ASSERT (scm_is_string (version), version,
 	      SCM_ARG1, "gsymcheck-version");
   
-  if (g_strcasecmp (SCM_STRING_CHARS (version), DATE_VERSION) != 0) {
+  if (g_strcasecmp (SCM_STRING_CHARS (version), PACKAGE_DATE_VERSION) != 0) {
     fprintf(stderr,
             "You are running gEDA/gaf version [%s%s.%s],\n",
-            PREPEND_VERSION_STRING, DOTTED_VERSION, DATE_VERSION);
+            PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION);
     fprintf(stderr,
             "but you have a version [%s] gsymcheckrc file:\n[%s]\n",
             SCM_STRING_CHARS (version), rc_filename);
diff --git a/gsymcheck/src/gsymcheck.c b/gsymcheck/src/gsymcheck.c
index cb01e8b..5f7b134 100644
--- a/gsymcheck/src/gsymcheck.c
+++ b/gsymcheck/src/gsymcheck.c
@@ -19,6 +19,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <sys/stat.h>
diff --git a/gsymcheck/tests/Makefile.am b/gsymcheck/tests/Makefile.am
index c174cba..c890b95 100644
--- a/gsymcheck/tests/Makefile.am
+++ b/gsymcheck/tests/Makefile.am
@@ -70,5 +70,5 @@ tests:
 
 MOSTLYCLEANFILES = *.log *~ new_*
 CLEANFILES = *.log *~ new_*
-DISTCLEANFILES = *.log core FILE *~ prototype.bak new_*
-MAINTAINERCLEANFILES = system-gsymcheckrc *.log *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~ new_*
+MAINTAINERCLEANFILES = *.log *~ Makefile.in

commit c9dda500098db72d9d0c2dfc984dd543b7cab943
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gattrib to unified build system.

diff --git a/Makefile.am b/Makefile.am
index 1a50836..d926bee 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = intl libgeda gschem
+SUBDIRS = intl libgeda gschem gattrib
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/autogen.sh b/autogen.sh
index 37c738b..e2786ae 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -25,7 +25,7 @@ ac_script=configure.ac
 am_version=1.6.0
 aclocal_flags="$ACLOCAL_FLAGS -I m4"
 tooldir=build-tools
-podirs="libgeda/po gschem/po" # gattrib/po
+podirs="libgeda/po gschem/po gattrib/po"
 
 srcdir=`dirname $0`
 if test "x$srcdir" = x ; then srcdir=.; fi
diff --git a/configure.ac b/configure.ac
index d3005fb..104d07a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -184,5 +184,15 @@ AC_CONFIG_FILES([Makefile
                  gschem/tests/Makefile
                  gschem/scheme/Makefile
 
+                 gattrib/Makefile
+                 gattrib/po/Makefile.in
+                 gattrib/design/Makefile
+                 gattrib/docs/Makefile
+                 gattrib/include/Makefile
+                 gattrib/lib/Makefile
+                 gattrib/lib/system-gattribrc
+                 gattrib/src/Makefile
+                 gattrib/data/Makefile
+
 ])
 AC_OUTPUT
diff --git a/gattrib/.gitignore b/gattrib/.gitignore
index 017310f..23c1897 100644
--- a/gattrib/.gitignore
+++ b/gattrib/.gitignore
@@ -1,21 +1,3 @@
 Makefile
 Makefile.in
-config.h
-config.h.in
-config.log
-config.status
-configure
-stamp-h1
-*.cache
-aclocal.m4
-config.guess
-config.rpath
-config.sub
-depcomp
-install-sh
-missing
-mkinstalldirs
-ABOUT-NLS
-intl
-.desktop-i18n
 *~
diff --git a/gattrib/Makefile.am b/gattrib/Makefile.am
index bef959f..898f62e 100644
--- a/gattrib/Makefile.am
+++ b/gattrib/Makefile.am
@@ -1,24 +1,9 @@
-
-AM_CFLAGS = -g -O2 
-
 SUBDIRS = po src include lib design docs data
 
 EXTRA_DIST = BUGS NOTES README ChangeLog ChangeLog-1.0 AUTHORS \
-	COPYING INSTALL autogen.sh ToDos \
-	icon-theme-installer desktop-i18n
-
-distclean-local:
-	-rm -rf autom4te*.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te*.cache
+	COPYING INSTALL ToDos
 
 MOSTLYCLEANFILES = *.log core FILE *~ #*#
 CLEANFILES = *.log core FILE *~ #*#
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure \
-                       config.status aclocal.m4 #*#
-
-DISTCHECK_CONFIGURE_FLAGS = --disable-update-desktop-database
-
-ACLOCAL_AMFLAGS = -I m4
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in #*#
diff --git a/gattrib/data/Makefile.am b/gattrib/data/Makefile.am
index 183ce4d..747cea2 100644
--- a/gattrib/data/Makefile.am
+++ b/gattrib/data/Makefile.am
@@ -1,5 +1,5 @@
 theme=hicolor
-xdgdatadir=@XDGDATADIR@
+xdgdatadir=$(XDGDATADIR)
 themedir=$(xdgdatadir)/icons/$(theme)
 
 app_icon = geda-gattrib
@@ -26,7 +26,7 @@ DOMAIN=geda-gattrib
 @DESKTOP_I18N_DESKTOP_RULE@
 
 install_icon_exec = \
-	$(SHELL) $(top_srcdir)/icon-theme-installer \
+	$(ICON_THEME_INSTALLER) \
 	-t $(theme) \
 	-s $(srcdir) \
 	-d "x$(DESTDIR)" \
@@ -39,12 +39,12 @@ install-data-local:
 
 
 install-data-hook:
-if ENABLE_UPDATE_DESKTOP_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_DESKTOP_DATABASE) "$(DESTDIR)$(desktopdir)"
 endif
 
 uninstall-hook:
-if ENABLE_UPDATE_DESKTOP_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_DESKTOP_DATABASE) "$(DESTDIR)$(desktopdir)"
 endif
 	$(install_icon_exec) -u $(theme_icons)
diff --git a/gattrib/design/Makefile.am b/gattrib/design/Makefile.am
index 8bfda1c..a19c5e0 100644
--- a/gattrib/design/Makefile.am
+++ b/gattrib/design/Makefile.am
@@ -4,4 +4,4 @@ EXTRA_DIST = ProgramArchitecture.gnumeric gEDA_Structures_updated.png
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
 DISTCLEANFILES = *.log core FILE *~ 
-MAINTAINERCLEANFILES = system-gattribrc *.log *~ Makefile.in configure
+MAINTAINERCLEANFILES = *.log *~ Makefile.in
diff --git a/gattrib/docs/Makefile.am b/gattrib/docs/Makefile.am
index f44e99d..5733314 100644
--- a/gattrib/docs/Makefile.am
+++ b/gattrib/docs/Makefile.am
@@ -7,7 +7,7 @@ all:
 
 doxygen: gattrib.dox
 	@echo 'Creating doxygen documentation for gattrib...'
-if BUILDDOC
+if ENABLE_DOXYGEN
 	$(DOXYGEN) gattrib.dox
 else
 	@echo 'Doxygen is not installed on your system.' >> $@
@@ -17,7 +17,7 @@ endif
 MOSTLYCLEANFILES = 	*.log *~
 CLEANFILES = 		*.log *~
 DISTCLEANFILES =        *.log
-MAINTAINERCLEANFILES = 	*.log *~ Makefile.in configure
+MAINTAINERCLEANFILES = 	*.log *~ Makefile.in
 
 distclean-local:
 	-rm -rf html latex
diff --git a/gattrib/icon-theme-installer b/gattrib/icon-theme-installer
deleted file mode 100755
index e070868..0000000
--- a/gattrib/icon-theme-installer
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/bin/sh
-
-# icon-theme-installer
-# Copyright (C) 2006 Novell, Inc.
-# Written by Aaron Bockover <abock@xxxxxxxxx>
-# Licensed under the MIT/X11 license
-#
-# Modified by Peter Clifton to allow icons with numerals in the filename
-#
-# This script is meant to be invoked from within a Makefile/Makefile.am
-# in the install-data-local and uninstall-data sections. It handles the
-# task of properly installing icons into the icon theme. It requires a
-# few arguments to set up its environment, and a list of files to be
-# installed. The format of the file list is critical:
-#
-# <category>,<local-src-file-name>
-#
-#   apps,music-player-banshee.svg
-#   apps,music-player-banshee-16.png
-#   apps,music-player-banshee-22.png
-#
-# <category> is the icon theme category, for instance, apps, devices,
-# actions, emblems...
-#
-# <local-src-file-name> must have a basename in the form of:
-#
-#   proper-theme-name[-<SIZE>].<EXTENSION>
-#
-# Where <SIZE> should be either nothing, which will default to scalable
-# or \-[0-9]{2}, which will expand to <SIZE>x<SIZE>. For example:
-#
-#   music-player-banshee-16.png
-#
-# The <SIZE> here is -16 and will expand to 16x16 per the icon theme spec
-#
-# What follows is an example Makefile.am for icon theme installation:
-#
-# ---------------
-# theme=hicolor
-# themedir=$(datadir)/icons/$(theme)
-# theme_icons = \
-#	apps,music-player-banshee.svg \
-#	apps,music-player-banshee-16.png \
-#	apps,music-player-banshee-22.png \
-#	apps,music-player-banshee-24.png \
-#	apps,music-player-banshee-32.png
-#
-# install_icon_exec = $(top_srcdir)/build/icon-theme-installer -t $(theme) -s $(srcdir) -d "x$(DESTDIR)" -b $(themedir) -m "$(mkinstalldirs)" -x "$(INSTALL_DATA)"
-# install-data-local:
-#	$(install_icon_exec) -i $(theme_icons)
-#
-#	uninstall-hook:
-#		$(install_icon_exec) -u $(theme_icons)
-#
-#	MAINTAINERCLEANFILES = Makefile.in
-#	EXTRA_DIST = $(wildcard *.svg *.png)
-# ---------------
-#
-# Arguments to this program:
-#
-# -i         : Install
-# -u         : Uninstall
-# -t <theme> : Theme name (hicolor)
-# -b <dir>   : Theme installation dest directory [x$(DESTDIR)] - Always prefix
-#              this argument with x; it will be stripped but will act as a
-#              placeholder for zero $DESTDIRs (only set by packagers)
-# -d <dir>   : Theme installation directory [$(hicolordir)]
-# -s <dir>   : Source directory [$(srcdir)]
-# -m <exec>  : Command to exec for directory creation [$(mkinstalldirs)]
-# -x <exec>  : Command to exec for single file installation [$(INSTALL_DATA)]
-# <remainging> : All remainging should be category,filename pairs
-
-while getopts "iut:b:d:s:m:x:" flag; do
-	case "$flag" in
-		i) INSTALL=yes ;;
-		u) UNINSTALL=yes ;;
-		t) THEME_NAME=$OPTARG ;;
-		d) INSTALL_DEST_DIR="`echo $OPTARG | sed 's;^x;;'`" ;;
-		b) INSTALL_BASE_DIR=$OPTARG ;;
-		s) SRC_DIR=$OPTARG ;;
-		m) MKINSTALLDIRS_EXEC=$OPTARG ;;
-		x) INSTALL_DATA_EXEC=$OPTARG ;;
-	esac
-done
-
-shift `expr $OPTIND - 1`
-
-if test "x$INSTALL" = "xyes" -a "x$UNINSTALL" = "xyes"; then
-	echo "Cannot pass both -i and -u"
-	exit 1
-elif test "x$INSTALL" = "x" -a "x$UNINSTALL" = "x"; then
-	echo "Must path either -i or -u"
-	exit 1
-fi
-
-if test -z "$THEME_NAME"; then
-	echo "Theme name required (-t hicolor)"
-	exit 1
-fi
-
-if test -z "$INSTALL_BASE_DIR"; then
-	echo "Base theme directory required [-d \$(hicolordir)]"
-	exit 1
-fi
-
-if test ! -x `echo "$MKINSTALLDIRS_EXEC" | cut -f1 -d' '`; then
-	echo "Cannot find '$MKINSTALLDIRS_EXEC'; You probably want to pass -m \$(mkinstalldirs)"
-	exit 1
-fi
-
-if test ! -x `echo "$INSTALL_DATA_EXEC" | cut -f1 -d' '`; then
-	echo "Cannot find '$INSTALL_DATA_EXEC'; You probably want to pass -x \$(INSTALL_DATA)"
-	exit 1
-fi
-
-if test -z "$SRC_DIR"; then
-	SRC_DIR=.
-fi
-
-for icon in $@; do
-	size=`echo $icon | sed -n 's/.*-\([0-9]*\).*/\1/p'`
-	category=`echo $icon | cut -d, -f1`
-	build_name=`echo $icon | cut -d, -f2`
-	install_name=`echo $build_name | sed 's/-[0-9]\+//g'`
-	install_name=`basename $install_name`
-
-	if test -z $size; then 
-		size=scalable;
-	else
-		size=${size}x${size};
-	fi
-	
-	install_dir=${INSTALL_DEST_DIR}${INSTALL_BASE_DIR}/$size/$category
-	install_path=$install_dir/$install_name
-	
-	if test "x$INSTALL" = "xyes"; then
-		echo "Installing $size $install_name into $THEME_NAME icon theme"
-		
-		$MKINSTALLDIRS_EXEC $install_dir || {
-			echo "Failed to create directory $install_dir"
-			exit 1
-		}
-		
-		$INSTALL_DATA_EXEC $SRC_DIR/$build_name $install_path || {
-			echo "Failed to install $SRC_DIR/$build_name into $install_path"
-			exit 1
-		}
-
-		if test ! -e $install_path; then
-			echo "Failed to install $SRC_DIR/$build_name into $install_path"
-			exit 1
-		fi
-	else
-		if test -e $install_path; then
-			echo "Removing $size $install_name from $THEME_NAME icon theme"
-
-			rm $install_path || { 
-				echo "Failed to remove $install_path"
-				exit 1
-			}
-		fi
-	fi
-done
-
-if test "x$INSTALL" = "xyes"; then
-	gtk_update_icon_cache_bin="`(which gtk-update-icon-cache || echo /opt/gnome/bin/gtk-update-icon-cache)2>/dev/null`"
-	gtk_update_icon_cache_bin="${GTK_UPDATE_ICON_CACHE_BIN:-$gtk_update_icon_cache_bin}"
-
-	gtk_update_icon_cache="$gtk_update_icon_cache_bin -f -t $INSTALL_BASE_DIR"
-
-	if test -z "$INSTALL_DEST_DIR"; then 
-		if test -x $gtk_update_icon_cache_bin; then 
-			echo "Updating GTK icon cache"
-			$gtk_update_icon_cache
-		else
-			echo "*** Icon cache not updated. Could not execute $gtk_update_icon_cache_bin"
-		fi
-	else
-		echo "*** Icon cache not updated. After install, run this:"
-		echo "***   $gtk_update_icon_cache"
-	fi
-fi
-
diff --git a/gattrib/include/Makefile.am b/gattrib/include/Makefile.am
index b94eb41..3d741d6 100644
--- a/gattrib/include/Makefile.am
+++ b/gattrib/include/Makefile.am
@@ -12,6 +12,6 @@ noinst_HEADERS = \
 
 MOSTLYCLEANFILES = *.log core FILE *~ #*#
 CLEANFILES = *.log core FILE *~ #*#
-DISTCLEANFILES = *.log core FILE *~ prototype.bak #*#
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure #*#
+DISTCLEANFILES = *.log core FILE *~ #*#
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in #*#
 
diff --git a/gattrib/lib/Makefile.am b/gattrib/lib/Makefile.am
index 9aee358..0eae5b3 100644
--- a/gattrib/lib/Makefile.am
+++ b/gattrib/lib/Makefile.am
@@ -1,6 +1,6 @@
 
-rcdatadir = @GEDARCDIR@
-datadir = @GEDADATADIR@
+rcdatadir = $(GEDARCDIR)
+datadir = $(GEDADATADIR)
 rcdata_DATA = system-gattribrc
 data_DATA = gattrib-menus.xml
 
diff --git a/gattrib/po/Makevars b/gattrib/po/Makevars
index 9b27ec1..b0f4372 100644
--- a/gattrib/po/Makevars
+++ b/gattrib/po/Makevars
@@ -1,11 +1,11 @@
 # Makefile variables for PO directory in any package using GNU gettext.
 
 # Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
+DOMAIN = geda-gattrib
 
 # These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
+subdir = gattrib/po
+top_builddir = ../..
 
 # These options get passed to xgettext.
 XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
diff --git a/gattrib/po/POTFILES.in b/gattrib/po/POTFILES.in
index 5e76840..9e7959a 100644
--- a/gattrib/po/POTFILES.in
+++ b/gattrib/po/POTFILES.in
@@ -1 +1 @@
-data/geda-gattrib.desktop.in
+gattrib/data/geda-gattrib.desktop.in
diff --git a/gattrib/po/de.po b/gattrib/po/de.po
index d984cf1..433f67c 100644
--- a/gattrib/po/de.po
+++ b/gattrib/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de_DE\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:24+0100\n"
+"POT-Creation-Date: 2009-08-07 23:28+0100\n"
 "PO-Revision-Date: 2008-12-20 14:37+0000\n"
 "Last-Translator: Werner Hoch <werner.ho@xxxxxx>\n"
 "Language-Team: deutsch <de@xxxxxx>\n"
@@ -16,10 +16,10 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: data/geda-gattrib.desktop.in.h:3
+#: gattrib/data/geda-gattrib.desktop.in.h:3
 msgid "gEDA Attribute Editor"
 msgstr "gEDA Attributeditor"
 
-#: data/geda-gattrib.desktop.in.h:4
+#: gattrib/data/geda-gattrib.desktop.in.h:4
 msgid "Manipulate component attributes with gattrib"
 msgstr "Editieren von Bauteilattributen mit gattrib"
diff --git a/gattrib/po/es.po b/gattrib/po/es.po
index 2620cb4..df08191 100644
--- a/gattrib/po/es.po
+++ b/gattrib/po/es.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gattrib VERSION\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:24+0100\n"
+"POT-Creation-Date: 2009-08-07 23:28+0100\n"
 "PO-Revision-Date: 2008-12-20 14:03+0000\n"
 "Last-Translator: Carlos Nieves Ã?nega <cnieves@xxxxxxxxx>\n"
 "Language-Team: geda-dev <geda-dev@xxxxxxxxxxxxx>Report-Msgid-Bugs-To: MIME-"
@@ -17,10 +17,10 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/geda-gattrib.desktop.in.h:3
+#: gattrib/data/geda-gattrib.desktop.in.h:3
 msgid "gEDA Attribute Editor"
 msgstr "Editor de Propiedades de gEDA"
 
-#: data/geda-gattrib.desktop.in.h:4
+#: gattrib/data/geda-gattrib.desktop.in.h:4
 msgid "Manipulate component attributes with gattrib"
 msgstr "Manejar propiedades de componentes con gattrib"
diff --git a/gattrib/po/nl.po b/gattrib/po/nl.po
index a4d2ddc..83782fb 100644
--- a/gattrib/po/nl.po
+++ b/gattrib/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geda-gattrib\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:24+0100\n"
+"POT-Creation-Date: 2009-08-07 23:28+0100\n"
 "PO-Revision-Date: 2008-12-20 14:03+0000\n"
 "Last-Translator: Bert Timmerman <bert.timmerman@xxxxxxxxx>\n"
 "Language-Team: gEDA developers <geda-dev@xxxxxxxxxxxxxx>\n"
@@ -17,10 +17,10 @@ msgstr ""
 "X-Poedit-Language: Dutch\n"
 "X-Poedit-Country: NETHERLANDS\n"
 
-#: data/geda-gattrib.desktop.in.h:3
+#: gattrib/data/geda-gattrib.desktop.in.h:3
 msgid "gEDA Attribute Editor"
 msgstr "gEDA Attribuut Bewerking"
 
-#: data/geda-gattrib.desktop.in.h:4
+#: gattrib/data/geda-gattrib.desktop.in.h:4
 msgid "Manipulate component attributes with gattrib"
 msgstr "Manipuleer componenten attributen met gattrib"
diff --git a/gattrib/src/Makefile.am b/gattrib/src/Makefile.am
index ab28a33..509a0ae 100644
--- a/gattrib/src/Makefile.am
+++ b/gattrib/src/Makefile.am
@@ -1,10 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 ## This Makefile.am created for gattrib by SDB 12.13.2003
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
 bin_PROGRAMS = gattrib
 
 ## don't forget all *.h files */
@@ -36,21 +32,15 @@ gattrib_SOURCES = \
 		gattrib.c 
 
 
-INCLUDES = -I$(includedir) -I$(top_srcdir)/include @GATTRIB_CFLAGS@
-gattrib_LDFLAGS = -L$(libdir) @GATTRIB_LDFLAGS@
-gattrib_LDADD = -L$(libdir) @GATTRIB_LDFLAGS@
-
-## Don't need these right now.
-## man_MANS = gattrib.1
-## EXTRA_DIST = gattrib.1 
+gattrib_CPPFLAGS = -I$(top_srcdir)/libgeda/include \
+	-I$(srcdir)/../include -I$(top_srcdir) -I$(includedir)
+gattrib_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLAGS) $(GLIB_CFLAGS) \
+	$(GTK_CFLAGS) $(GTHREAD_CFLAGS) $(GUILE_CFLAGS)
+gattrib_LDFLAGS = $(GLIB_LIBS) $(GTK_LIBS) $(GTHREAD_LIBS) \
+	$(GUILE_LIBS)
+gattrib_LDADD = $(top_builddir)/libgeda/src/libgeda.la
 
 MOSTLYCLEANFILES = *.log *.ps core FILE *~ #*# 
 CLEANFILES = *.log *.ps core FILE *~ #*#
 DISTCLEANFILES = *.log core FILE *~ #*#
 MAINTAINERCLEANFILES = *.log *.ps core FILE *~ #*#
-
-
-
-
-
-
diff --git a/gattrib/src/g_rc.c b/gattrib/src/g_rc.c
index dd3b0a1..c7eee48 100644
--- a/gattrib/src/g_rc.c
+++ b/gattrib/src/g_rc.c
@@ -25,6 +25,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -67,10 +68,12 @@ SCM g_rc_gattrib_version(SCM version)
   SCM_ASSERT (scm_is_string (version), version,
 	      SCM_ARG1, "gattrib-version");
   
-  if (g_strcasecmp (SCM_STRING_CHARS (version), DATE_VERSION) != 0) {
+  if (g_strcasecmp (SCM_STRING_CHARS (version),
+                    PACKAGE_DATE_VERSION) != 0) {
     fprintf(stderr,
             "You are running gEDA/gaf version [%s%s.%s],\n",
-            PREPEND_VERSION_STRING, DOTTED_VERSION, DATE_VERSION);
+            PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION,
+            PACKAGE_DATE_VERSION);
     fprintf(stderr,
             "but you have a version [%s] gattribrc file.\n",
             SCM_STRING_CHARS (version));
diff --git a/gattrib/src/gattrib.c b/gattrib/src/gattrib.c
index 46d5954..a84fa78 100644
--- a/gattrib/src/gattrib.c
+++ b/gattrib/src/gattrib.c
@@ -100,6 +100,7 @@
 
 
 #include <config.h>
+#include <version.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -235,7 +236,7 @@ void gattrib_main(void *closure, int argc, char *argv[])
 
   s_log_message
     ("gEDA/gattrib version %s%s.%s\n", PREPEND_VERSION_STRING, 
-     DOTTED_VERSION, DATE_VERSION);
+     PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION);
   s_log_message
     ("gEDA/gattrib comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.\n");
   s_log_message
diff --git a/gattrib/src/x_dialog.c b/gattrib/src/x_dialog.c
index 5030788..314d3a7 100644
--- a/gattrib/src/x_dialog.c
+++ b/gattrib/src/x_dialog.c
@@ -28,6 +28,8 @@
 #include "config.h"
 #endif
 
+#include <version.h>
+
 /*------------------------------------------------------------------
  * Includes required to run graphical widgets.
  *------------------------------------------------------------------*/
@@ -349,7 +351,8 @@ void x_dialog_about_dialog()
                                    GTK_MESSAGE_INFO,
                                    GTK_BUTTONS_OK,
                                    string, PREPEND_VERSION_STRING, 
-                                   DOTTED_VERSION, DATE_VERSION);
+                                   PACKAGE_DOTTED_VERSION,
+                                   PACKAGE_DATE_VERSION);
   
   gtk_window_set_title(GTK_WINDOW(dialog), "About...");
 

commit 75e35a9265199e310e4778773b0b3341659ff4a5
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Add gschem to unified build system.
    
    N.b. gschemdoc is now created directly rather than by prepending
    config.sh.

diff --git a/Makefile.am b/Makefile.am
index 3a8a2c8..1a50836 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = libgeda intl
+SUBDIRS = intl libgeda gschem
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/autogen.sh b/autogen.sh
index e9be5f0..37c738b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -25,7 +25,7 @@ ac_script=configure.ac
 am_version=1.6.0
 aclocal_flags="$ACLOCAL_FLAGS -I m4"
 tooldir=build-tools
-podirs="libgeda/po" #gschem/po gattrib/po
+podirs="libgeda/po gschem/po" # gattrib/po
 
 srcdir=`dirname $0`
 if test "x$srcdir" = x ; then srcdir=.; fi
diff --git a/configure.ac b/configure.ac
index d43c901..d3005fb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -169,5 +169,20 @@ AC_CONFIG_FILES([Makefile
                  libgeda/scheme/Makefile
                  libgeda/share/Makefile
                  libgeda/src/Makefile
+
+                 gschem/Makefile
+                 gschem/po/Makefile.in
+                 gschem/docs/Makefile
+                 gschem/include/Makefile
+                 gschem/scripts/Makefile
+                 gschem/src/Makefile
+                 gschem/examples/Makefile
+                 gschem/lib/Makefile
+                 gschem/lib/system-gschemrc
+                 gschem/data/Makefile
+                 gschem/bitmap/Makefile
+                 gschem/tests/Makefile
+                 gschem/scheme/Makefile
+
 ])
 AC_OUTPUT
diff --git a/gschem/Makefile.am b/gschem/Makefile.am
index c2d3373..9ed6048 100644
--- a/gschem/Makefile.am
+++ b/gschem/Makefile.am
@@ -1,27 +1,13 @@
-SUBDIRS = include lib intl src po scheme bitmap scripts examples \
-          tests docs data
+SUBDIRS = \
+	po bitmap data docs examples include lib scheme scripts \
+	src tests
 
-EXTRA_DIST = BUGS ChangeLog-1.0 autogen.sh config.rpath \
-             icon-theme-installer desktop-i18n
-
-#proto:
-#	(cd src ; ./create_proto)
-
-distclean-local:
-	-rm -rf autom4te.cache
+EXTRA_DIST = BUGS ChangeLog-1.0
 
 maintainer-clean-local:
-	-rm -rf autom4te.cache \
-          intl/*.h intl/*.c intl/*.alias intl/*.y intl/*.sin intl/VERSION \
-          intl/config.charset intl/Makefile.in intl/ChangeLog \
-          po/*.sed po/*.header po/*.sin po/*.template po/Rules-quot
-
-ACLOCAL_AMFLAGS = -I m4
+	-rm -rf po/*.sed po/*.header po/*.sin po/*.template po/Rules-quot
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-	               config.status aclocal.m4 config.guess config.rpath \
-		       config.sub depcomp install-sh missing mkinstalldirs
-DISTCHECK_CONFIGURE_FLAGS = --disable-update-desktop-database
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gschem/bitmap/Makefile.am b/gschem/bitmap/Makefile.am
index 994fcb2..e75da3c 100644
--- a/gschem/bitmap/Makefile.am
+++ b/gschem/bitmap/Makefile.am
@@ -1,5 +1,5 @@
 
-bitmapdatadir = @GEDADATADIR@/bitmap
+bitmapdatadir = $(GEDADATADIR)/bitmap
 bitmapdata_DATA = gschem-bus.xpm gschem-comp.xpm gschem-net.xpm		 \
 		  gschem-new.xpm gschem-open.xpm gschem-redo.xpm	 \
 		  gschem-save.xpm gschem-select.xpm gschem-undo.xpm	 \
@@ -28,5 +28,5 @@ EXTRA_DIST = $(bitmapdata_DATA) README
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *~ Makefile.in
diff --git a/gschem/data/Makefile.am b/gschem/data/Makefile.am
index d05fc30..79ad4ed 100644
--- a/gschem/data/Makefile.am
+++ b/gschem/data/Makefile.am
@@ -26,7 +26,7 @@ DOMAIN=geda-gschem
 @DESKTOP_I18N_DESKTOP_RULE@
 
 install_icon_exec = \
-	$(SHELL) $(top_srcdir)/icon-theme-installer \
+	$(ICON_THEME_INSTALLER) \
 	-t $(theme) \
 	-s $(srcdir) \
 	-d "x$(DESTDIR)" \
@@ -39,12 +39,12 @@ install-data-local:
 
 
 install-data-hook:
-if ENABLE_UPDATE_DESKTOP_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_DESKTOP_DATABASE) "$(DESTDIR)$(desktopdir)"
 endif
 
 uninstall-hook:
-if ENABLE_UPDATE_DESKTOP_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_DESKTOP_DATABASE) "$(DESTDIR)$(desktopdir)"
 endif
 	$(install_icon_exec) -u $(theme_icons)
diff --git a/gschem/docs/Makefile.am b/gschem/docs/Makefile.am
index 63dfe31..6869b31 100644
--- a/gschem/docs/Makefile.am
+++ b/gschem/docs/Makefile.am
@@ -8,7 +8,7 @@ all:
 
 doxygen: gschem.dox
 	@echo 'Creating doxygen documentation for gschem...'
-if BUILDDOC
+if ENABLE_DOXYGEN
 	$(DOXYGEN) gschem.dox
 	-cd latex && $(MAKE)
 	-cd ..
@@ -19,10 +19,10 @@ endif
 
 MOSTLYCLEANFILES = 	*.log *~
 CLEANFILES = 		*.log *~
-DISTCLEANFILES = 	*.log core FILE *~ prototype.bak \
+DISTCLEANFILES = 	*.log core FILE *~ \
 			*.dvi *.info *.info-* *.aux *.fn \
 			*.fns *.cp *.ky *.pg *.toc *.tp *.vrs *.vr 
-MAINTAINERCLEANFILES = 	*.log *~ Makefile.in configure
+MAINTAINERCLEANFILES = 	*.log *~ Makefile.in
 
 distclean-local:
 	-rm -rf html latex
diff --git a/gschem/examples/Makefile.am b/gschem/examples/Makefile.am
index 9fb020f..e802f35 100644
--- a/gschem/examples/Makefile.am
+++ b/gschem/examples/Makefile.am
@@ -19,8 +19,5 @@ EXTRA_DIST = \
 
 MOSTLYCLEANFILES =  core *.log FILE *.ps *~
 CLEANFILES = core *.log FILE *.ps *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = core *.log FILE *.ps *~ Makefile.in configure
-
-
-
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = core *.log FILE *.ps *~ Makefile.in
diff --git a/gschem/include/Makefile.am b/gschem/include/Makefile.am
index 386c2ef..dda9158 100644
--- a/gschem/include/Makefile.am
+++ b/gschem/include/Makefile.am
@@ -16,6 +16,5 @@ noinst_HEADERS = \
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure
-
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gschem/lib/Makefile.am b/gschem/lib/Makefile.am
index d2cf22e..1f1bc15 100644
--- a/gschem/lib/Makefile.am
+++ b/gschem/lib/Makefile.am
@@ -1,10 +1,10 @@
 
-rcdatadir = @GEDARCDIR@
+rcdatadir = $(GEDARCDIR)
 rcdata_DATA = system-gschemrc gschem-gtkrc gschem-colormap-lightbg gschem-colormap-darkbg
 
 EXTRA_DIST = system-gschemrc.in gschem-gtkrc gschem-colormap-lightbg gschem-colormap-darkbg
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak system-gschemrc
-MAINTAINERCLEANFILES = system-gschemrc system-gnetlistrc system-gsymbolrc *.log *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~ system-gschemrc
+MAINTAINERCLEANFILES = system-gschemrc system-gnetlistrc system-gsymbolrc *.log *~ Makefile.in
diff --git a/gschem/po/Makevars b/gschem/po/Makevars
index 9b27ec1..18ccd7f 100644
--- a/gschem/po/Makevars
+++ b/gschem/po/Makevars
@@ -1,11 +1,11 @@
 # Makefile variables for PO directory in any package using GNU gettext.
 
 # Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
+DOMAIN = geda-gschem
 
 # These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
+subdir = gschem/po
+top_builddir = ../..
 
 # These options get passed to xgettext.
 XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
diff --git a/gschem/po/POTFILES.in b/gschem/po/POTFILES.in
index 10f216a..26bbea7 100644
--- a/gschem/po/POTFILES.in
+++ b/gschem/po/POTFILES.in
@@ -1,60 +1,60 @@
-src/rcstrings.c
-src/a_pan.c
-src/a_zoom.c
-src/g_funcs.c
-src/g_hook.c
-src/g_keys.c
-src/g_rc.c
-src/g_register.c
-src/globals.c
-src/gschem.c
-src/gschem_accel_label.c
-src/gschem_cairo.c
-src/i_basic.c
-src/i_callbacks.c
-src/i_vars.c
-src/o_arc.c
-src/o_attrib.c
-src/o_basic.c
-src/o_box.c
-src/o_buffer.c
-src/o_bus.c
-src/o_circle.c
-src/o_complex.c
-src/o_copy.c
-src/o_cue.c
-src/o_delete.c
-src/o_find.c
-src/o_grips.c
-src/o_line.c
-src/o_misc.c
-src/o_move.c
-src/o_net.c
-src/o_path.c
-src/o_picture.c
-src/o_pin.c
-src/o_select.c
-src/o_slot.c
-src/o_text.c
-src/o_undo.c
-src/parsecmd.c
-src/x_attribedit.c
-src/x_autonumber.c
-src/x_basic.c
-src/x_color.c
-src/x_compselect.c
-src/x_dialog.c
-src/x_event.c
-src/x_fileselect.c
-src/x_grid.c
-src/x_image.c
-src/x_log.c
-src/x_menus.c
-src/x_multiattrib.c
-src/x_pagesel.c
-src/x_preview.c
-src/x_print.c
-src/x_script.c
-src/x_stroke.c
-src/x_window.c
-data/geda-gschem.desktop.in
+gschem/src/rcstrings.c
+gschem/src/a_pan.c
+gschem/src/a_zoom.c
+gschem/src/g_funcs.c
+gschem/src/g_hook.c
+gschem/src/g_keys.c
+gschem/src/g_rc.c
+gschem/src/g_register.c
+gschem/src/globals.c
+gschem/src/gschem.c
+gschem/src/gschem_accel_label.c
+gschem/src/gschem_cairo.c
+gschem/src/i_basic.c
+gschem/src/i_callbacks.c
+gschem/src/i_vars.c
+gschem/src/o_arc.c
+gschem/src/o_attrib.c
+gschem/src/o_basic.c
+gschem/src/o_box.c
+gschem/src/o_buffer.c
+gschem/src/o_bus.c
+gschem/src/o_circle.c
+gschem/src/o_complex.c
+gschem/src/o_copy.c
+gschem/src/o_cue.c
+gschem/src/o_delete.c
+gschem/src/o_find.c
+gschem/src/o_grips.c
+gschem/src/o_line.c
+gschem/src/o_misc.c
+gschem/src/o_move.c
+gschem/src/o_net.c
+gschem/src/o_path.c
+gschem/src/o_picture.c
+gschem/src/o_pin.c
+gschem/src/o_select.c
+gschem/src/o_slot.c
+gschem/src/o_text.c
+gschem/src/o_undo.c
+gschem/src/parsecmd.c
+gschem/src/x_attribedit.c
+gschem/src/x_autonumber.c
+gschem/src/x_basic.c
+gschem/src/x_color.c
+gschem/src/x_compselect.c
+gschem/src/x_dialog.c
+gschem/src/x_event.c
+gschem/src/x_fileselect.c
+gschem/src/x_grid.c
+gschem/src/x_image.c
+gschem/src/x_log.c
+gschem/src/x_menus.c
+gschem/src/x_multiattrib.c
+gschem/src/x_pagesel.c
+gschem/src/x_preview.c
+gschem/src/x_print.c
+gschem/src/x_script.c
+gschem/src/x_stroke.c
+gschem/src/x_window.c
+gschem/data/geda-gschem.desktop.in
diff --git a/gschem/po/af.po b/gschem/po/af.po
index 89324cd..4f8a660 100644
--- a/gschem/po/af.po
+++ b/gschem/po/af.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geda-gschem\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-20 14:27+0000\n"
 "Last-Translator: Bernd Jendrissek <bernd.jendrissek@xxxxxxxxx>\n"
 "Language-Team: <geda-dev@xxxxxxxxxxxxxx>\n"
@@ -14,608 +14,615 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Lêer"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nuwe Venster"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nuwe Bladsy"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Maak Bladsy Oop..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Sluit Bladsy"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Gaan Bladsy Terug"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Bewaar Bladsy"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Bewaar Bladsy As..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Bewaar Alles"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Druk..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Skryf afbeelding..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "Onlangse lêers"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Voer Script Uit..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Sluit Venster"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Sluit"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Bewerk"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Maak Ongedaan"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Herstel"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Uitsoekmodus"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Sny 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Kopieer"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Plak 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Bewerk..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Bewerk Teks..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Kopieermodus"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Meervoudige Kopieermodus"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Skuifmodus"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Verwyder"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Roteer-90-modus"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Weerkaatsmodus"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Gleuf..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Kleur..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Sluit"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Ontsluit"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Lynwydte en -tipe..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Vultipe"
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Simboolverskuiwing..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Lê Komponent/Afbeelding In"
 
 # FIXME: too klunky!
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Ont-lê Komponent/Afbeelding In"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Vernuwe Komponent"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Toon/Verberg Onsigbare Teks"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Maak Onsigbare Teks Sigbaar"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Buffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Kopieer in 1 in"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Kopieer in 2 in"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Kopieer in 3 in"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Kopieer in 4 in"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Kopieer in 5 in"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Sny in 1 in"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Sny in 2 in"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Sny in 3 in"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Sny in 4 in"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Sny in 5 in"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Plak vanuit 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Plak vanuit 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Plak vanuit 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Plak vanuit 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Plak vanuit 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Aansig"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Herteken"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Skuif Aansig"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Zoem Reghoek"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Zoem Omvang"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Zoem In"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Zoem Uit"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Zoem Ten Volle"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Bladsy"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Bestuurder..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Volgende"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Vorige"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Nuwe"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Gaan Terug"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Sluit Af"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Werp Weg"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Voeg By"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Komponent..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Skakeling"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Eienskap..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Teks..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Lyn"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Reghoek"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Sirkel"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Boog"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pen"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Afbeelding"
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hierargie"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Stroombaandiagram Af"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Simbool Af"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Op"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Dokumentasie"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Eienskappe"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Heg aan"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Heg af"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Toon Waarde"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Toon Naam"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Toon Beide"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Skakel Sigbaarheid"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Vind Spesifieke Teks..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Verskuil Spesifieke Teks..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Toon Spesifieke Teks..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Nommereer Teks Outomaties..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Opsies"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Teksgrootte..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr ""
 
 # FIXME: Find a better expression for "Snap Grid".
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Snaproosterspasiëring"
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr "Vergroot Roosterspasiëring"
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr "Verklein Roosterspasiëring"
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Skakel Skets/Omtrekreghoek"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Skakel Net Rubberband"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Wys Aantekeningevenster"
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Wys Koordinatevenster"
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Help"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Handleiding"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "gEDA Dokumentasie"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "gschem FAQ"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Komponent Dokumentasie"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "Oor gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr ""
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Zoem is te klein!  Kan nie verder zoem nie.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Kon nie vertak nie\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Kon nie %s oproep nie\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Dokumentasieopdragte werk nie onder MinGW nie.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Ongeldige zoemmaat [%d] aan %s gegee\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Ongeldige grootte [%d] gegee aan text-size\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Ongeldige grootte [%f] aan postscript-font-scale gegee\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Ongeldige grootte [%d] aan snap-size gegee\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Ongeldige getal vlakke [%d] gegee aan undo-levels\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Ongeldige grootte [%d] gegee aan bus-ripper-size\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Ongeldige puntgrootte [%d] gegee aan grid-dot-size\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr "Ongeldige puntgrootte [%d] gegee aan grid-dot-size\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr "Ongeldige puntgrootte [%d] gegee aan grid-dot-size\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Ongeldige verkuiwing [%d] gegee aan add-attribute-offset\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "Ongeldige hoeveelheid sekondes [%d] gegee aan auto-save-interval\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Ongeldige versterking [%d] gegee aan mousepan-gain\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Ongeldige versterking [%d] gegee aan keyboardpan-gain\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr ""
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Ongeldige versterking [%d] gegee aan mousepan-gain\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "Ongeldige hoeveelheid sekondes [%d] gegee aan auto-save-interval\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem uitgawe %s%s.%s\n"
 
 # FIXME: Best to get a real lawyer to translate this into Afrikaans legalese.
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -624,30 +631,28 @@ msgstr ""
 "details.\n"
 
 # FIXME: Track down other projects' translations of the GPL boilerplate.
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
 msgstr ""
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr ""
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr ""
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -655,390 +660,396 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Het misluk of scm-aanvangslêer [%s] te lees\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Het scm-aanvangslêer [%s] gelees\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Het misluk of scm-aanvangslêer [%s] te lees\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Scheme-gids is NIE gestel nie!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Voer guile script [%s] uit\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Onbekende einde vir lyn (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Onbekende tipe vir lyn (%d)!\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Komponentmodus"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Teksmodues"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Roteermodus"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Aansigskuifmodus"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Plak %d Modus"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "Netmodus"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Netmodus"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Busmodus"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Lynmodus"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Reghoekmodus"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Afbeeldingmodus"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Sirkelmodus"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Boogmodus"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Penmodus"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Beweeg"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Veelvoudige Kopieer"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Toon Verskuilde"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr ""
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Handeling"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Wyserslag"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "geen"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Herhaal/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "AF"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Rooster(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentasie vir [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Nuwe bladsy geskep [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "Nuwe Venster geskep [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Misluk om alles te bewaar"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Alles Bewaar"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Sluit Venster\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Kies eers voorwerpe"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Bewerk Lyntipe"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Bewerk Teks"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Gleuf"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Kleur"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Roteer"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Weerkaats"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Verskuif"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr ""
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr ""
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr ""
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
 msgstr ""
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Lê In"
 
 # FIXME: too klunky!
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Ont-lê In"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr ""
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "ToonVerskuil"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "MaakSigbaar"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr ""
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr ""
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Plak vanuit 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Maak buffer leeg"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Kopieer 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Kopieer 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Kopieer 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Kopieer 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Kopieer 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Sny 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Sny 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Sny 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Sny 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Sny 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Plak 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Plak 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Plak 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Plak 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Plak 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Komponent"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Eienskap"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Soek vir bron [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Kan nie bron [%s] vind nie\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Soek vir simbool [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
 # FIXME: "aangeduide".
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1046,243 +1057,244 @@ msgstr ""
 "Hierdie opdrag haal die komponentdokumentasie van die web, maar daar is geen "
 "aangeduide komponent nie"
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "ToonN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "ToonW"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "ToonB"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "SigSkakel"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Jammer, maar hierdie opsie werk nie\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Handelingsterugvoermodus na SKETS gestel\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Handelingsterugvoermodus na OMTREKREGHOEK\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Rooster AF\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr ""
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr ""
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Rubberband AF\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Rubberband AAN\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Onbekende tipe vir reghoek (vul)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Het 'n ongeldige buffer_number gekry [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Het 'n ongeldige whichone in o_bus_draw_xor_single gekry\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Onbekende tipe vir sirkel (vul)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Verskuif stroombaandiagram [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Het 'n onverwagte NULL in o_edit gekry\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Voorwerp klaar gesluit\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "Voorwerp klaar ontsluit\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Verskuilde teks is nou sigbaar\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Verskuilde teks is nou onsigbaar\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr "o_autosave_backups: Kan nie die egte lêernaam van %s kry nie."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "Kon NIE vorige bestandlêer [%s] lees-skryf stel nie\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Kon NIE bestandlêer [%s] lees-slegs stel nie\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Kon NIE bestandlêer [%s] bewaar nie\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "FOUT: NULL voorwerp in o_move_end!\n"
 
 # Thanks to Frank Shearar for reminding me of BLIKSEM!
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 "BLIKSEM!  Het probeer om die whichone te vind, maar kon dit nie kry nie!\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Het 'n voorwerp wat nie 'n lyn is nie in o_move_check_endpoint gekry\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr "Het 'n ongeldige whichone in o_net_draw_xor_single gekry\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 "Het probeer om meer as twee busrippers bytevoeg.  Interne gschem fout.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Busrippersimbool [%s] is nie in enige komponentbiblioteek gevind nie\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Onbekende tipe vir reghoek (vul)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Kon nie afbeelding laai nie: %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Afbeelding"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "FOUT: NULL voorwerp!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "\"slot\" eienskap is misvorm\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "\"numslots\" eienskap bestaan nie\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Gleuwe is nie toegelaat vir hierdie komponent nie\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Nuwe gleufnommer buite bereik\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr ""
 "uggg!  Jy het probeer om iets as 'n gleuf te bewerk, maar dit bestaan nie!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr ""
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1297,423 +1309,428 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Enkeleienskap-Bewerker"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Bewerk Eienskap</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Voeg Eienskap By</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Naam:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Waarde:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Sigbaar"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Toon Slegs Waarde"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Toon Slegs Naam"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Toon Naam & Waarde"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>AAnhegopsies</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Alles"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Komponente"
 
 # FIXME: "Nette"
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Nette"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Vervang bestaande eienskappe"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 msgstr ""
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 "duplikaatgleuf mag probleme veroorsaak: [symbolname=%s, number=%d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonaal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "Bo to onder"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "Onder tot bo"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "Links tot regs"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "Regs tot links"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "Lêerorde"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr ""
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Bestek</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Soek vir:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr ""
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Slaan nommers oor in:"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr ""
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Lopende bladsy"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Hele hierargie"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Vervang bestaande nommers"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Opsies</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Begin by nommer:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Rangskikkingsorde:"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Verwyder syfers"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Outomatiese begleuwing"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Kon nie aanspraak maak op die kleur %s nie!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "swart"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "wit"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Kon nie aanspraak maak op die kleur %s nie!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Kon nie aanspraak maak op die kleur %s nie!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Het probeer om 'n ongeldige kleur te kry: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Het probeer om 'n ongeldige kleur te kry: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Deursyfer:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Naam"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Waarde"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Verstekgedrag - verwys na komponent"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Lê komponent in stroombaandiagram in"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Sluit komponent as afsonderlike voorwerpe in"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Kies Komponent..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "In Gebruik"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Biblioteke"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Voorskou"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Teksaantekening..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
 "Middle button to rotate while placing."
 msgstr ""
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Links Onder"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Middel Links"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Links Bo"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Middel Onder"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Middel Middel"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Middel Bo"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Regs Onder"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Middel Regs"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Regs Bo"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Bewerk Tekseienskappe"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Teksinhoud</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Tekseienskappe</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Kleur:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Grootte:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Sporing:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Solied"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Gestippeld"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Gebroke"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Sentreer"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Spook"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*onveranderd*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Bewerk Lynwyddte & -styl"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Styl:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Wydte:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Streeplengte"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Streepspasie"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Hol"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Gevul"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Rooster"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Arseer"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Bewerk Vultipe"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Vultipe:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Lynwydte:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Hoek 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Steek 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Hoek 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Steek 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Boogparameters"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Beginhoek:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Grade van Kromming:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1721,44 +1738,44 @@ msgstr ""
 "Afwyking om te verskuif?\n"
 "(0 vir oorsprong)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Teksgrootte"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Gee nuwe teksgrootte aan:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr ""
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr ""
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Bewerk gleufnommer"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Bewerk gleufnommer:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Omtrent..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA: GPL Elektroniese Ontwerp Outomatisering</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>gschem uitgawe %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1771,142 +1788,142 @@ msgstr ""
 "en vele andere (Sien AUTHORS lêer)"
 
 # FIXME: May need to have a deëlteken on second 'o'.
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Koordinate"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Skerm"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Wêreld"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Voeg Eienskap By"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Teks"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "Kies"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Zoem Reghoek"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Funksie"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "FOUT: NULL voorwerp in color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Kleurbewerking"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Voorwerpkleur:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Funksie"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr "Sleutelslae"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Vind Teks"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Teks om te vind:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "daal in hierargie af"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Verskuil Teks"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Verskuil teks beginnende met:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Toon Teks"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Toon Teks beginnende met:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "Kies die stroombaandiagramme wat jy wil bewaar:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 "Wil jy veranderinge aan stroombaandiagram \"%s\" bewaar voor jy afsluit?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
@@ -1914,15 +1931,15 @@ msgstr ""
 "Daar is %d stroombaandiagramme met onbewaarde veranderinge.  Wil jy die "
 "veranderinge bewaar voor jy afsluit?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr "As jy nie bewaar nie, sal al jou veranderinge permanent verloregaan."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "Sluit sonder om te bewaar"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1940,49 +1957,49 @@ msgstr ""
 "Die naam mag nie met 'n spasie eindig nie.\n"
 "Die waarde mag nie met 'n spasie begin nie."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Ongeldige Eienskap"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Penmodus"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Funksie"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Stroombaandiagramme"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Simbole"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Stroombaandiagramme en simbole"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Alle lêers"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Open..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Bewaar as..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -1990,29 +2007,29 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 msgid "Overwrite file?"
 msgstr "Vervang lêer?"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr ""
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: Kon nie eps-lêer %s skryf nie.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: Kon nie %s-lêer %s skryf nie.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2025,259 +2042,259 @@ msgstr ""
 "\n"
 "%s.\n"
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Het kleurafbeelding na [%s] [%d x %d] geskryf\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Het swart-en-witafbeelding na [%s] [%d x %d] geskryf\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr "x_image_lowlevel: Kon nie pixbuf van gschem se venster kry nie.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Wydte x Hoogte"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Afbeeldingsoort"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Stand"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Voeg Net By"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Voeg Eienskap By"
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Voeg Komponent By"
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Voeg Bus By"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Voeg Teks By"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Zoem In"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Zoem Uit"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Zoem Reghoek"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Zoem Uitmate"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Kies"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Bewerk"
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Bewerk Lyntipe"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Kopieer"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Skuif"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Verwyder"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Stroombaandiagram Af"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Simbool Af"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Op"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr "Het probeer om gevoeligheid op nie-bestaande menu-artikel '%s'\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "popup_menu artikelfabriek bestaan nie!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Kon nie lêer %s oopmaak nie\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Maak Skoon"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Eienskappe met 'n leë naam word verbied.  Kies asseblief 'n naam."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Toon slegs waarde"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Toon slegs naam"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Dupliseer"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Bewerk Eienskappe"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Sig?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "W"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Voeg Eienskap By"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Voeg Eienskap By"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Werp Bladsy Weg"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Bladsybestuurder"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Lêernaam"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Veranderd"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Regs-klik op die lêernaam vir meer opsies..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Plak Buffer"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Kies PostScript Lêernaam"
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Uitmate met kantlyn"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Uitmate sonder kantlyn"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Huidige Venster"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Landskap"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Portret"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Instellinge"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Uitset-papiergrootte:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientasie"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Bestemming"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "Lêer:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Opdrag:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Geen drukbestemming aangegee nie\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Kan nie huidige stroombaandiagram na [%s] druk nie\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2286,45 +2303,45 @@ msgstr ""
 "Fout gedurende lêerdruk na '%s'\n"
 "Ondersoek die log-venster vir meer inligting"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Het lopende stroombaandiagram na [%s] gedruk\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Kon nie aanspraak maak op gc nie\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Nuwe lêer"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Maak Oop"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Maak lêer oop..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Bewaar"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Bewaar lêer"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Maak laaste handeling ongedaan"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Herhaal laas-ongedane handeling"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2332,98 +2349,98 @@ msgid ""
 "Right mouse button to cancel"
 msgstr ""
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
 msgstr ""
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
 msgstr ""
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Voeg Teks By..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Kies"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Kiesmodus"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Kies"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Herhaal/geen"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Kanselleer"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr ""
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Laai stroombaandiagram [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 msgid "Failed to load file"
 msgstr "Misluk om lêer te laai"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, c-format
 msgid "New file [%s]\n"
 msgstr "Nuwe lêer [%s]\n"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Kon nie bladsy [%s] bewaar nie\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Fout gedurende poging om te bewaar"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Bewaar as [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Bewaar [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Bewaar"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Werp bladsy [%s] weg\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Sluit [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 msgid "gEDA Schematic Editor"
 msgstr "gEDA Stroombaandiagram Bewerker"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr "Skep en bewerk stroombaandiagramme en simbole met gschem"
 
diff --git a/gschem/po/de.po b/gschem/po/de.po
index 646ad13..f8e5775 100644
--- a/gschem/po/de.po
+++ b/gschem/po/de.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-21 12:10+0100\n"
 "Last-Translator: Werner Hoch <werner.ho@xxxxxx>\n"
 "Language-Team: deutsch <de@xxxxxx>\n"
@@ -17,612 +17,619 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Datei"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Neues Fenster"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Neue Seite"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Ã?ffnen..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Seite schlieÃ?en"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Wiederherstellen"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Seite speichern"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Speichern unter..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Alles speichern"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Drucken..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Speichere Bild..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "Zuletzt verwendete Dateien"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Skript ausführen..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Fenster schlieÃ?en"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Beenden"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Rückgängig"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Wiederherstellen"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Auswahl Modus"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Ausschneiden 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Kopieren"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Einfügen 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Bearbeiten..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Text bearbeiten..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Kopier Modus"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Mehrfach Kopier Modus"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Verschiebe Modus"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Löschen"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Dreh Modus (90°)"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Spiegel Modus"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Slot..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Farbe..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Sperren"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Entsperren"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Linieneigenschaften..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Füllung..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Symbol transferieren..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Bauteil/Bild einbetten"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Bauteil/Bild ausbetten"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Bauteil aktualisieren"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Zeige/Verberge unsichtbaren Text"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Text sichtbar machen"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Puffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Kopiere in 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Kopiere in 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Kopiere in 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Kopiere in 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Kopiere in 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Ausschneiden in 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Ausschneiden in 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Ausschneiden in 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Ausschneiden in 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Ausschneiden in 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Einfügen aus 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Einfügen aus 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Einfügen aus 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Einfügen aus 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Einfügen aus 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Ansicht"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Neu zeichnen"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Ausschnitt verschieben"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Ausschnitt wählen"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Automatisch"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Vergrö�ern"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Verkleinern"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Ganze Seite"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Seite"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Manager..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Nächste"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Vorherige"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Neu"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Wiederherstellen"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "SchlieÃ?en"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Ablegen"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Einfügen"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Bauteil..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Netz"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Attribut..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Text..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Linie"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Rechteck"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Kreis"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Bogen"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "AnschluÃ?"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Bild..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hierarchie"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "zum Schaltplan hinab"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "zum Symbol hinab"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Hinauf"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Dokumentation"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Attribut"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Anbringen"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Ablösen"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Wert zeigen"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Name zeigen"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Name & Wert zeigen"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Sichbarkeit EIN/AUS"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Suche Text..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Verberge Text..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Zeige Text..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Text durchnummerieren..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Optionen"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Text Grö�e..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "am Raster ausrichten EIN/AUS"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "RastermaÃ? eingeben..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr "Rasterma� vergrö�ern"
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr "RastermaÃ? verkleinern"
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Auswahl Umgebung/Lokal"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Gummifäden EIN/AUS"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Statusmeldungen anzeigen..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Koordinaten anzeigen..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Hilfe"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Handbuch"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "gEDA Dokumentation"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "gschem FAQ"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Bauteil Dokumentation"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "Ã?ber gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Tastenkürzel"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Bereich zu klein! Eine weitere Vergrö�erung ist nicht möglich.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "fork fehlgeschlagen!\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Konnte %s nicht aufrufen\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Die Funktion \"Dokumentation\" wird unter MinGW nicht unterstützt.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Ein ungültiger Vergrösserungsfaktor [%d] wurde an %s übergeben.\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Eine ungültige Grö�e [%d] wurde an text-size übergeben.\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Ein ungültiger Wert [%f] wurde an postscript-font-scale übergeben.\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Eine ungültige Grö�e [%d] wurde an snap-size übergeben.\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Eine ungültige Ebenenanzahl [%d] wurde an undo-levels übergeben.\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Eine ungültige Grö�e [%d] wurde an bus-ripper-size übergeben.\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "An \"grid-dot-size\" wurde eine falsche Punktgrö�e [%d] übergeben.\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr ""
 "An \"grid-fixed-threshold\" wurde ein falscher Punktabstand [%d] übergeben.\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr ""
 "An \"grid-fixed-threshold\" wurde ein falscher Punktabstand [%d] übergeben.\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Ein ungültiger Offset [%d] wurde an add-attribute-offset übergeben.\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr ""
 "An \"auto-save-interval\" wurde eine ungültige Sekundenanzahl [%d] "
 "übergeben\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Ein ungültiger Werte [%d] wurde an mousepan-gain übergeben.\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Ein ungültiger Wert [%d] wurde an keyboardpan-gain übergeben.\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr ""
 "An \"select-slack-pixels\" wurde eine ungültige Pixelzahl [%d] übergeben\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Ein unzulässiger Wert [%d] wurde an zoom-gain übergeben\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr ""
 "Eine unzulässige Anzahl von Schritten [%d] wurde an scrollpan-steps "
 "übergeben\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem Version %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -630,16 +637,14 @@ msgstr ""
 "gEDA/gschem kommt OHNE JEGLICHE GARANTIE. Bitte lies die Datei COPYING "
 "fürnähere Informationen.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "Dies ist Freie Software. Sie darf gerne weitergegeben werden. Bitte lies "
 "die\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -647,17 +652,17 @@ msgstr ""
 "Lizenzbestimmungen in der Datei COPYING für nähere Informationen.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "Dies ist die MINGW32 Portierung.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Aktuelle Spracheinstellungen: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -665,248 +670,252 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Die init scm Datei wurde nicht gefunden [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Lese init scm Datei [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Die Datei init scm [%s] konnte nicht gelesen werden.\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Das scheme Verzeichnis wurde nicht definiert!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Führe guile scipt aus [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 #, fuzzy
 msgid "Accelerator String"
 msgstr "Allgemeiner Text"
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Undefiniertes Ende einer Linie (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Undefinierter Type der Linie (%d).\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Bauteil Modus"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Text Modus"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Dreh Modus"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Ausschnitt Modus"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Einfügen %d Modus"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 msgid "Magnetic Net Mode"
 msgstr "Magnetischer Netz Modus"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Netz Modus"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Bus Modus"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Linien Modus"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Rechteck Modus"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Bild Modus"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Kreis Modus"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Bogen Modus"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "AnschluÃ? Modus"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Verschieben"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Mehrfaches Kopieren"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Zeige Unsichbares"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Am Raster ausrichten aus"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Aktion"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Taste"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "nichts"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Wiederhole/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "AUS"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Raster(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Dokumentation von [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Neue Seite erzeugt [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "Neues Fenster geöffnet [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Alles speichern fehlgeschlagen"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Alles gespeichert"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "SchlieÃ?e Fenster\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Wähle erst Objekte aus"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Editiere Linienart"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Text bearbeiten"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Farbe"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Drehen"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Spiegeln"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Verschieben nach"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr ""
 "ACHTUNG: Keine Transformation mit ausgeschalteter Ausrichtung am Raster!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr ""
 "ACHTUNG:\"am Raster ausrichten\" wird aktiviert und mit der Transformation "
 "fortgefahren.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "ACHTUNG: Das Raster ist ungleich 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -914,144 +923,146 @@ msgstr ""
 "ACHTUNG: Wenn ein Symbol transformiert wird, sollte das Raster auf 100 "
 "gesetzt sein.\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Einbetten"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Ausbetten"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Aktualisieren"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "Zeige Unsichbares"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "Sichbar Machen"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Ansicht aktualisieren (update cues)"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Seite wirklich wiederherstellen?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Einfügen aus 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Leerer Zwischenspeicher"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Kopie 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Kopie 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Kopie 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Kopie 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Kopie 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Ausschneiden 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Ausschneiden 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Ausschneiden 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Ausschneiden 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Ausschneiden 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Einfügen 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Einfügen 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Einfügen 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Einfügen 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Einfügen 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Bauteil"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Attribut"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Suche nach der Quelle [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Die Quelle [%s] konnte nicht gefunden werden.\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Suche nach dem Symbol [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr "Das Symbol ist keine reale Datei. Symbol kann nicht geöffnet werden.\n"
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr "Konnte keinen übergeordneten Schaltplan finden!\n"
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1059,254 +1070,255 @@ msgstr ""
 "Dieser Befehl sucht die Dokumentation eines Bauteils im Internet, aber es "
 "wurde kein Bauteil ausgewählt"
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "ShowN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "ShowV"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "ShowB"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "VisToggle"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Dieser Menupunkt funktioniert nicht. Sorry.\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Aktions-Rückmelde-Modus wurde auf OUTLINE gesetzt.\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Aktions-Rückmelde-Modus wurde auf BOUNDINGBOX gesetzt.\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Raster AUS\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Freihandmodus (ACHTUNG! Ausrichten am Raster abgeschaltet)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Am Raster ausrichten\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Freihandmodus (ACHTUNG! Ausrichten am Raster abgeschaltet)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Gummifäden AUS\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Gummifäden EIN\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr "magnetischer Netz Modus: Ein\n"
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr "magnetischer Netz Modus: Aus\n"
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Undefinierter Typ für das Rechteck (Füllung)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr ""
 "Eine ungültige Zwischenspeichernummer wurde übergeben "
 "[o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr ""
 "Ungültiger Wert in Variable whichone in der Funktion o_bus_draw_xor_single\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Undefinierter Typ für einen Kreis (Füllung).\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Verschiebe Schaltplan [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Der Rückgabewert von o_edit war unerwartet NULL\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Objekt bereits gesperrt\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "Objekt bereits entsperrt\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Verborgener Text ist jetzt sichtbar.\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Verborgener Text ist jetzt unsichbar.\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 "Das Symbol [%s] konnte nicht gefunden werden. Aktualisierung "
 "fehlgeschlagen.\n"
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr ""
 "o_autosave_backups: Konnte den tatsächlichen Dateinamen von %s nicht "
 "ermitteln."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "Die vorherige Backup-Datei [%s] konnte nicht auf read-write gesetzt werden.\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Die Backup-Datei [%s] konnte nicht auf readonly gesetzt werden.\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Die Backup-Datei [%s] konnte nicht gespeichert werden.\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "FEHLER: NULL Objekt innerhalb von o_move_end.\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 "Versuchte vergebens das Objekt innerhalb von o_move_return_whichone zu "
 "finden.\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Da ist ein Objekt in o_move_check_endpoint, welches keine Linie ist.\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr ""
 "Ungültiger Wert der Variablen whichone innerhalb von o_net_draw_xor_single\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 "Achtung: Der Startpunkt des Netzes befindet sich nicht auf dem Raster\n"
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr "Achtung: Das Ende des Netzes befindet sich nicht auf dem Raster\n"
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 "Interner gschem Fehler: Versuchte mehr als zwei Bus Abzweigungen "
 "hinzuzufügen\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Das Busripper Symbol [%s] wurde in keiner Bauteilbibliothek gefunden\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Unbekannte Füllart einer Pfad-Definition!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Das Bild [%s] konnte nicht geladen werden"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Bild"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "FEHLER: NULL Objekt!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Slot Attribut ist fehlerhaft.\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "Das numslots Attribut fehlt\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Bei diesem Bauteil ist nur ein slot erlaubt.\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Neue slot Nummer au�erhalb des gültigen Wertebereichs\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Ups! Sie versuchen einen slot zu editieren, der nicht existiert.\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Rückgängig/Wiederherstellen wurde in der rc Datei deaktiviert.\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1331,68 +1343,69 @@ msgstr ""
 "  -h            Hilfe (diese Ausgabe)\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr "Ungültige Anzeigeoption, zeige beide als Voreinstellung\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Editor für ein Attribut"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Attribut bearbeiten</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Attribut hinzufügen</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Name:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Wert:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Sichtbar"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Nur Wert anzeigen"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Nur Name anzeigen"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Zeige Name & Wert"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Optionen</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Alle"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Bauteile"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Netz"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Vorhandene Attribute ersetzen"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
@@ -1400,7 +1413,7 @@ msgstr ""
 "Objekte mit \"numslot\" Attribut und ohne \"slot\" Attribut können beim "
 "automatischen Nummerieren von Bauteilen Probleme verursachen.\n"
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
@@ -1408,172 +1421,173 @@ msgstr ""
 "Doppelt vergebener slot kann Probleme verursachen: [Symbolname=%s, Number=%"
 "d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr "Es wurde kein Suchstring im Dialog eingegeben.\n"
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr "Am Ende des Suchstrings fehlt ein '*' oder ein '?'.\n"
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "Von oben nach unten"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "Von unten nach oben"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "Von links nach rechts"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "Von rechts nach links"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "Dateireihenfolge"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Nummeriere Text automatisch"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Suchbereich</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Suchen nach:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr "Nummeriere Text in:"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Ã?berspringe Nummern:"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "Ausgewählte Objekte"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Aktuelle Seite"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Gesamte Hierarchie"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Vorhandene Nummern überschreiben"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Optionen</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Startnummer:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Sortierung:"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Nummern entfernen"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Automatische Nummerierung von Slots"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Konnte die Farbe %s nicht zuteilen!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "schwarz"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "weiss"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Konnte die Farbe %s nicht zuteilen!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Konnte die Farbe %s nicht zuteilen!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Versuchte eine ungültige Farbe zuzuteilen: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Versuchte eine ungültige Farbe zuzuteilen: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filter:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Name"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Wert"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Bauteil referenzieren (Voreinstellung)"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Bauteil in den Schaltplan einbetten"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Bauteil als Einzelkomponenten einfügen"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Bauteil auswählen..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "In Verwendung"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Bibliotheken"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Vorschau"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Text Eingabe..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1583,176 +1597,179 @@ msgstr ""
 "bewege den Cursor ins Fenster, klicke um den Text zu plazieren.\n"
 "Mittlere Maustaste dreht während des Plazierens."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Unten Links"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Mitte Links"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Oben Links"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Unten Mitte"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Mitte Mitte"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Oben Mitte"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Unten Rechts"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Mitte Rechts"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "0ben Rechts"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Text Eigenschaften bearbeiten"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Textinhalt</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Texteigenschaften</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Farbe:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Grö�e:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Ausrichtung:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Durchgehend"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Gepunktet"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Gestrichelt"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "StrichPunkt"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "StrichZweiPunkt"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*unverändert*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Linieneigenschaften bearbeiten"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Typ:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Breite:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Linienlänge:"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Linienlücke:"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Leer"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Gefüllt"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Gitter"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Schraffiert"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Editiere Füllmuster"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Füllmuster:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Linienbreite:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Winkel 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Abstand 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Winkel 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Abstand 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Bogen Parameter"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr "Bogen Radius:"
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Start Winkel:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Ã?ffnungswinkel:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1760,44 +1777,44 @@ msgstr ""
 "Wie weit soll verschoben werden?\n"
 "(0 verschiebt zum Ursprung)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Text Grö�e"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Neue Textgrö�e eingeben:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr "Rasterabstand"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr "Neuen Rasterabstand eingeben"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Editiere slot Nummer"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Editiere slot Nummer:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Ã?ber..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA : GPL Electronic Design Automation</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>gschem Version %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1809,139 +1826,139 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "und vielen anderen (siehe Datei: AUTHORS)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Koordinaten"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Bildschirm (Pixel)"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Global (0.001\")"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr "Hintergrund"
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr "Netz-Endemarkierung"
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr "Graphik"
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr "Logik Markierung"
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr "Rasterpunkt"
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 msgid "Detached attribute"
 msgstr "Attribut ablösen"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Text"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 msgid "Selection"
 msgstr "Auswahl"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr "Randmarkierung"
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 msgid "Zoom box"
 msgstr "Ausschnitt wählen"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr "Ausgabehintergrund"
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 msgid "Net junction"
 msgstr "Netzverbindung"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "FEHLER: NULL Objekt innerhalb von color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Farbe bearbeiten"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Objekt Farbe:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Funktion"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr "Tastenkürzel"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Suche Text"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Zu suchender Text:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "In der Hierachie hinabsteigen"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Verberge Text"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Verberge Text, der beginnt mit:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Zeige Text"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Zeige Text, der beginnt mit:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "_Wählen Sie die zu speichernden Seiten:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 "Sollen die Ã?nderungen am Schaltplan \"%s\" vor dem SchlieÃ?en gespeichert "
 "werden?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
@@ -1949,15 +1966,15 @@ msgstr ""
 "Es gibt %d ungesicherte Schaltpläne. Sollen die �nderungen vor dem Schlie�en "
 "gespeichert werden?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr "Wenn Sie nicht speichern, werden Sie alle Ã?nderungen verlieren."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "SchlieÃ?en _ohne Speichern"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1975,49 +1992,49 @@ msgstr ""
 "Der Name darf nicht mit einem Leerzeichen enden.\n"
 "Der Wert darf nicht mit einem Leerzeichen beginnen."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Fehlerhaftes Attribut"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Linien Typ"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Netz-Endemarkierung"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Schaltpläne"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Symbole"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Schaltpläne und Symbole"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Alle Dateien"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Ã?ffnen..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Speichern unter..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2028,29 +2045,29 @@ msgstr ""
 "\n"
 "Soll die Datei überschrieben werden?"
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 msgid "Overwrite file?"
 msgstr "Datei überschreiben?"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr "Das Speichern wurde durch den Anwender abgebrochen\n"
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr "Encapsulated Postscript"
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: Konnte eps-Datei %s nicht schreiben.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: Konnte %s-Datei %s nicht schreiben.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2063,266 +2080,266 @@ msgstr ""
 "\n"
 "%s.\n"
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Farbiges Bild als [%s] gespeichert. Grö�e [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Schwarz & wei� Bild als [%s] gespeichert. Grö�e [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr "x_image_lowlevel: konnte kein Bild vom gschem-Fenster bekommen.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Breite x Höhe"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Bild Format"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 "** Diese Fehlermeldung enthält eine ungültige UTF-8 Kodierung. Siehe gschem."
 "log und stderr.\n"
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Status"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Netz einfügen"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Attribut hinzufügen..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Bauteil einfügen..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Bus einfügen"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Text einfügen"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Vergrö�ern"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Verkleinern"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Ausschnitt wählen"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Automatisch"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Auswählen"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Bearbeiten..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Editiere Linienart"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Kopieren"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Verschieben"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Löschen"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/zum Schaltplan hinab"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/zum Symbol hinab"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Hinauf"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr ""
 "Es wurde versucht die Empfindlichkeit des nicht existenten Menueintrags '%s' "
 "zu setzen\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "Popup_menu_item_factory existiert nicht\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Es wurde versucht die Sensibilität für einen nichtexistierenden Menueintrag "
 "zu setzen\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Konnte Datei %s nicht öffnen\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Entfernen"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr ""
 "Attribute mit leerem Namen sind nicht erlaubt. Gib bitte einen Namen ein."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Nur Wert anzeigen"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Nur Name anzeigen"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Duplizieren"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Attribute bearbeiten"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Sichtbar?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "Name"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "Wert"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Attribut ablösen"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Attribut hinzufügen"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Seite ablegen"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Seiten Manager"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Dateiname"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Geändert"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Rechtsklick auf den Dateinamen für mehr Optionen..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Auswahl einfügen"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "PostScript Dateinamen auswählen..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Alles mit Rand"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Alles ohne Rand"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Aktuelles Fenster"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Querformat"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Hochformat"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Einstellungen"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Papiergrö�e:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Ausrichtung:"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Ziel"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "Datei:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Befehl:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Das Ziel für den Ausdruck fehlt\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Aktueller Schaltplan kann nicht in [%s] gedruckt werden.\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2331,45 +2348,45 @@ msgstr ""
 "Fehler beim Drucken in die Datei '%s'\n"
 "Nähere Informationen sind im Log-Fenster."
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Aktueller Schalplan in [%s] ausgedruckt\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Konnte gc in x_window_setup_gc nicht zuweisen\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Neue Datei"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Ã?ffnen"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Datei öffnen..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Speichern"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Datei speichern"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "letzte Aktion rückgängig machen"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "letzte Aktion wiederherstellen"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2381,7 +2398,7 @@ msgstr ""
 "und klicke um es zu plazieren\n"
 "mit rechter Maustaste abbrechen"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2389,7 +2406,7 @@ msgstr ""
 "Netz einfügen\n"
 "mit rechter Maustaste abbrechen"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2397,86 +2414,86 @@ msgstr ""
 "Bus einfügen\n"
 "mit rechter Maustaste abbrechen"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Text einfügen..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Auswählen"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Auswahl Modus"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Auswählen"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Wiederholen/nichts"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Cancel"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Ausschnitt/Cancel"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Lade Schaltplan [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 msgid "Failed to load file"
 msgstr "Eine Datei konnte nicht geladen werden"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, c-format
 msgid "New file [%s]\n"
 msgstr "Neue Datei [%s]\n"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Die Seite [%s] konnte nicht gespeichert werden.\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Fehler während des Speicherns"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Gespeichert unter [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Gespeichert [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Gespeichert"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "SchlieÃ?e Schaltplan [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "SchlieÃ?e [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 msgid "gEDA Schematic Editor"
 msgstr "gEDA Schaltplan Editor"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 "Erstellen oder editieren eines elektrischen Schaltplans oder Symbols mit "
diff --git a/gschem/po/en_GB.po b/gschem/po/en_GB.po
index e99646c..7ffd19e 100644
--- a/gschem/po/en_GB.po
+++ b/gschem/po/en_GB.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geda-schem\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2009-01-02 14:32+0100\n"
 "Last-Translator: Peter Clifton <pcjc2@xxxxxxxxx>\n"
 "Language-Team: geda-dev <geda-dev@xxxxxxxx>\n"
@@ -15,605 +15,612 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "File"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "New Window"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "New Page"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Open Page..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Close Page"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Revert Page"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Save Page"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Save Page As..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Save All"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Print..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Write image..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "Recent files"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Execute Script..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Close Window"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Quit"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Edit"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Undo"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Redo"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Select Mode"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Cut 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Copy"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Paste 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Edit..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Edit Text..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Copy Mode"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Multiple Copy Mode"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Move Mode"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Delete"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Rotate 90 Mode"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Mirror Mode"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Slot..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Colour..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Lock"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Unlock"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Line Width & Type..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Fill Type..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Symbol Translate..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Embed Component/Picture"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Unembed Component/Picture"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Update Component"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Show/Hide Inv Text"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Make Inv Text Vis"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Buffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Copy into 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Copy into 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Copy into 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Copy into 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Copy into 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Cut into 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Cut into 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Cut into 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Cut into 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Cut into 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Paste from 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Paste from 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Paste from 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Paste from 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Paste from 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "View"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Redraw"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Pan"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Zoom Box"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Zoom Extents"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Zoom In"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Zoom Out"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Zoom Full"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr "Dark colour scheme"
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr "Light colour scheme"
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Page"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Manager..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Next"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Previous"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "New"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Revert"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Close"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Discard"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Add"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Component..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Net"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Attribute..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Text..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Line"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Box"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Circle"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Arc"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pin"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Picture..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hierarchy"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Down Schematic"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Down Symbol"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Up"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentation"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Attributes"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Attach"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Detach"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Show Value"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Show Name"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Show Both"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Toggle Visibility"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Find Specific Text..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Hide Specific Text..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Show Specific Text..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Autonumber Text..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Options"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Text Size..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr "Cycle grid styles"
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Toggle Snap On/Off"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Snap Grid Spacing..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr "Scale up Grid Spacing"
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr "Scale down Grid Spacing"
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Toggle Outline/Box"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Toggle Net Rubberband"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Show Log Window..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Show Coord Window..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Help"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Manual"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "gEDA Documentation"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "gschem FAQ"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Component Documentation"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "About gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Hotkeys"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Zoom too small!  Cannot zoom further.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Could not fork\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Could not invoke %s\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Documentation commands not supported under MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Invalid zoomfactor [%d] passed to %s\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Invalid size [%d] passed to text-size\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Invalid size [%f] passed to postscript-font-scale\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Invalid size [%d] passed to snap-size\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Invalid num levels [%d] passed to undo-levels\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Invalid size [%d] passed to bus-ripper-size\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Invalid offset [%d] passed to add-attribute-offset\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "Invalid number of seconds [%d] passed to auto-save-interval\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Invalid gain [%d] passed to mousepan-gain\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Invalid gain [%d] passed to keyboardpan-gain\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Invalid gain [%d] passed to zoom-gain\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "Invalid number of steps [%d] scrollpan-steps\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem version %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -621,15 +628,13 @@ msgstr ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -637,17 +642,17 @@ msgstr ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "This is the MINGW32 port.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Current locale settings: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -655,244 +660,248 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Couldn't find init scm file [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Read init scm file [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Failed to read init scm file [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Scheme directory NOT set!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Executing guile script [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Unknown end for line (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Unknown type for stroke (%d) !\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Component Mode"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Text Mode"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Rotate Mode"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Pan Mode"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Paste %d Mode"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 msgid "Magnetic Net Mode"
 msgstr "Magnetic Net Mode"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Net Mode"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Bus Mode"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Line Mode"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Box Mode"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Picture Mode"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Circle Mode"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Arc Mode"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Pin Mode"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Move"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Multiple Copy"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Show Hidden"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Snap Off"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Action"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Stroke"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "none"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Repeat/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "OFF"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr "NONE"
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Grid(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentation for [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "New page created [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "New Window created [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Failed to Save All"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Saved All"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Closing Window\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Select objs first"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Edit Line Type"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Edit Text"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Colour"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Rotate"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Mirror"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Translate"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "WARNING: Do not translate with snap off!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "WARNING: Turning snap on and continuing with translate.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "WARNING: Snap grid size is not equal to 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -900,144 +909,146 @@ msgstr ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Embed"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Unembed"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Update"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "ShowHidden"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "MakeVisible"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Update Cues"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Really revert page?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Paste from 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Empty buffer"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Copy 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Copy 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Copy 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Copy 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Copy 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Cut 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Cut 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Cut 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Cut 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Cut 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Paste 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Paste 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Paste 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Paste 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Paste 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Component"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Attribute"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Searching for source [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Cannot find source [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Searching for symbol [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr "Symbol is not a real file. Symbol cannot be loaded.\n"
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr "Cannot find any schematics above the current one!\n"
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1045,240 +1056,241 @@ msgstr ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "ShowN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "ShowV"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "ShowB"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "VisToggle"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Sorry but this is a non-functioning menu option\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Action feedback mode set to OUTLINE\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Action feedback mode set to BOUNDINGBOX\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Grid OFF\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr "Dot grid selected\n"
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr "Mesh grid selected\n"
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Snap OFF (CAUTION!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Snap ON\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Snap OFF (CAUTION!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Rubber band OFF \n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Rubber band ON\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr "magnetic net mode: ON\n"
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr "magnetic net mode: OFF\n"
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Unknown type for box (fill)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Got an invalid buffer_number [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Got an invalid which one in o_bus_draw_stretch\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Unknown type for circle (fill)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Translating schematic [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Got an unexpected NULL in o_edit\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Object already locked\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "Object already unlocked\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Hidden text is now visible\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Hidden text is now invisible\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr "Could not find symbol [%s] in library. Update failed.\n"
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr "o_autosave_backups: Can't get the real filename of %s."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "Could NOT set previous backup file [%s] read-write\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Could NOT set backup file [%s] readonly\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Could NOT save backup file [%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "ERROR: NULL object in o_move_end!\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr "DOH! tried to find the whichone, but didn't find it!\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Got a non line object in o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr "Got an invalid which one in o_net_draw_stretch\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr "Warning: Starting net at off grid coordinate\n"
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr "Warning: Ending net at off grid coordinate\n"
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr "Tried to add more than two bus rippers. Internal gschem error.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Bus ripper symbol [%s] was not found in any component library\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Unknown type for path (fill)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Failed to load picture: %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Picture"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "ERROR: NULL object!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Slot attribute malformed\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "numslots attribute missing\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Slotting not allowed for this component\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "New slot number out of range\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "uggg! you tried to slot edit something that doesn't exist!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Undo/Redo disabled in rc file\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1303,68 +1315,69 @@ msgstr ""
 "  -h            Help; this message\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr "Got invalid show option; defaulting to show both\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Single Attribute Editor"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Edit Attribute</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Add Attribute</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Name:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Value:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Visible"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Show Value Only"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Show Name Only"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Show Name & Value"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Attach Options</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "All"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Components"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Nets"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Replace existing attributes"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
@@ -1372,179 +1385,180 @@ msgstr ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr "No searchstring given in autonumber text.\n"
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr "No '*' or '?' given at the end of the autonumber text.\n"
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "Top to bottom"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "Bottom to top"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "Left to right"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "Right to left"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "File order"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Autonumber text"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Scope</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Search for:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr "Autonumber text in:"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Skip numbers found in:"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "Selected objects"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Current page"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Whole hierarchy"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Overwrite existing numbers"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Options</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Starting number:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Sort order:"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Remove numbers"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Automatic slotting"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Could not allocate the colour %s!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "black"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "white"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Could not allocate display colour %i!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Could not allocate outline colour %i!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Tried to get an invalid colour: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Tried to get an invalid outline colour: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filter:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Name"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Value"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Default behavior - reference component"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Embed component in schematic"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Include component as individual objects"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Select Component..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "In Use"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Libraries"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Preview"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Text Entry..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1554,176 +1568,179 @@ msgstr ""
 "move cursor into window, click to place text.\n"
 "Middle button to rotate while placing."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Lower Left"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Middle Left"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Upper Left"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Lower Middle"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Middle Middle"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Upper Middle"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Lower Right"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Middle Right"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Upper Right"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Edit Text Properties"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Text Content</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Text Properties</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Colour:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Size:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Alignment:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Solid"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Dotted"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Dashed"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Center"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Phantom"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*unchanged*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Edit Line Width & Type"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Type:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Width:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Dash Length:"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Dash Space:"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Hollow"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Filled"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Mesh"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Hatch"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Edit Fill Type"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Fill Type:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Line Width:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Angle 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Pitch 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Angle 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Pitch 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Arc Params"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr "Arc Radius:"
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Start Angle:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Degrees of Sweep:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1731,44 +1748,44 @@ msgstr ""
 "Offset to translate?\n"
 "(0 for origin)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Text Size"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Enter new text size:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr "Snap Size"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr "Enter new snap grid spacing:"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Edit slot number"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Edit slot number:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "About..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA: GPL Electronic Design Automation</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>gschem version %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1780,152 +1797,152 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "And many others (See AUTHORS file)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coords"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Screen"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "World"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr "Background"
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr "Net endpoint"
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr "Graphic"
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr "Logic bubble"
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr "Grid point"
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 msgid "Detached attribute"
 msgstr "Detached attribute"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Text"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 msgid "Selection"
 msgstr "Selection"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr "Bounding box"
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 msgid "Zoom box"
 msgstr "Zoom box"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr "Output background"
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 msgid "Net junction"
 msgstr "Net junction"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr "Mesh grid major"
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr "Mesh grid minor"
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr "Unknown"
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "ERROR: NULL object in color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Colour Edit"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Object colour:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Function"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr "Keystroke(s)"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Find Text"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Text to find:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "descend into hierarchy"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Hide Text"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Hide text starting with:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Show Text"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Show text starting with:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "S_elect the schematics you want to save:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr "Save the changes to schematic \"%s\" before closing?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr "If you don't save, all your changes will be permanently lost."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "_Close without saving"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1942,49 +1959,49 @@ msgstr ""
 "The name cannot end with a space.\n"
 "The value cannot start with a space."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Invalid Attribute"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Pin Mode"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Net endpoint"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Schematics"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Symbols"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Schematics and symbols"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "All files"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Open..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Save as..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -1995,29 +2012,29 @@ msgstr ""
 "\n"
 "Would you like to overwrite it?"
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 msgid "Overwrite file?"
 msgstr "Overwrite file?"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr "Save cancelled on user request\n"
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr "Encapsulated Postscript"
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: Unable to write eps file %s.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: Unable to write %s file %s.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2030,258 +2047,258 @@ msgstr ""
 "\n"
 "%s.\n"
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Wrote colour image to [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Wrote black and white image to [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Width x Height"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Image type"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Status"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Add Net"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Add Attribute..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Add Component..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Add Bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Add Text"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Zoom In"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Zoom Out"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Zoom Box"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Zoom Extents"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Select"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Edit..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Edit Line Type"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Copy"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Move"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Delete"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Down Schematic"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Down Symbol"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Up"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr "Tried to set the sensitivity on non-existent menu item '%s'\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "Popup_menu_item_factory doesn't exist!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr "Tried to set the sensitivity on a non-existent popup menu_item\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Couldn't open file %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Clear"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Attributes with empty name are not allowed. Please set a name."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Show Value only"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Show Name only"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Duplicate"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Edit Attributes"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Vis?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "V"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Detached attribute"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Add Attribute"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Discard Page"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Page Manager"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Filename"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Changed"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Right click on the filename for more options..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 msgid "Preview Buffer"
 msgstr "Preview Buffer"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Select PostScript Filename..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Extents with margins"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Extents no margins"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Current Window"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Landscape"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Portrait"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Settings"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Output paper size:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientation:"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Destination"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "File:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Command:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "No print destination specified\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Cannot print current schematic to [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2290,45 +2307,45 @@ msgstr ""
 "Error printing to file '%s'\n"
 "Check the log window for more information"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Printed current schematic to [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Couldn't allocate gc\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "New file"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Open"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Open file..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Save"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Save file"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Undo last operation"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Redo last undo"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2340,7 +2357,7 @@ msgstr ""
 "click to place\n"
 "Right mouse button to cancel"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2348,7 +2365,7 @@ msgstr ""
 "Add nets mode\n"
 "Right mouse button to cancel"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2356,86 +2373,86 @@ msgstr ""
 "Add buses mode\n"
 "Right mouse button to cancel"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Add Text..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Select"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Select mode"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Pick"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Repeat/none"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Cancel"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Pan/Cancel"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Loading schematic [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 msgid "Failed to load file"
 msgstr "Failed to load file"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, c-format
 msgid "New file [%s]\n"
 msgstr "New file [%s]\n"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Could NOT save page [%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Error while trying to save"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Saved as [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Saved [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Saved"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Discarding page [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Closing [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 msgid "gEDA Schematic Editor"
 msgstr "gEDA Schematic Editor"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr "Create and edit electrical schematics and symbols with gschem"
 
diff --git a/gschem/po/es.po b/gschem/po/es.po
index cf4d5c4..4d7e315 100644
--- a/gschem/po/es.po
+++ b/gschem/po/es.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gschem VERSION\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-21 21:20+0100\n"
 "Last-Translator: Carlos Nieves Ã?nega <cnieves@xxxxxxxxxx>\n"
 "Language-Team: Spanish/SpainMIME-Version: 1.0\n"
@@ -16,625 +16,632 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);X-Generator: KBabel 1.0.2\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Archivo"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nueva ventana"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nueva página"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Abrir página"
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Cerrar página"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Recargar página"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Guardar página"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Guardar página como..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Guardar todo"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Imprimir..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Guardar imagen..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "Archivos recientes"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Ejecutar subprograma..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Cerrar ventana"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Salir"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Editar"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Deshacer"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Rehacer"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Seleccionar"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Cortar 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Copiar"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Pegar 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Editar..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Editar texto..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Copiar"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Modo de copia múltiple"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Mover"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Borrar"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Rotar 90º"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Voltear"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Elemento..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Color..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Fijar"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Desfijar"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Anchura y tipo de línea"
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Tipo de relleno"
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Mover símbolo..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Incrustar componente/imagen"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Desincrustar componente/imagen"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Actualizar componente"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Mostrar/Ocultar texto oculto"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Hacer visible el texto oculto"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Memoria intermedia"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Copiar en memoria intermedia 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Copiar en memoria intermedia 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Copiar en memoria intermedia 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Copiar en memoria intermedia 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Copiar en memoria intermedia 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Cortar en memoria intermedia 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Cortar en memoria intermedia 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Cortar en memoria intermedia 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Cortar en memoria intermedia 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Cortar en memoria intermedia 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Pegar memoria intermedia 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Pegar memoria intermedia 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Pegar memoria intermedia 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Pegar memoria intermedia 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Pegar memoria intermedia 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Ver"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Redibujar"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Centrar respecto al cursor"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Ampliar"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Mostrar todo"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Aumentar ampliación"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Disminuir ampliación"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Vista completa"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Página"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Administrador..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Siguiente"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Anterior"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Nuevo"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Recargar"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Cerrar"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Descartar"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Añadir"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Componente..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Conexión"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Propiedad..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Texto..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Línea"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Rectángulo"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Círculo"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Arco"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pin"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Imagen..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Jerarquía"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Descender en esquema"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Descender en símbolo"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Arriba"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentación"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Propiedades"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Adjuntar"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "No adjuntar"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Mostrar valor"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Mostrar nombre"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Mostrar ambos"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Cambiar visibilidad"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Encontrar texto específico..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Ocultar texto específico..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Mostrar texto específico..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Autonumerar texto..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Opciones"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Tamaño de texto..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Act/Desact ajuste a la rejilla"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Espaciado de la rejilla..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr "Aumentar espaciado de la rejilla..."
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr "Disminuir espaciado de la rejilla..."
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Cambiar Silueta/Rectángulo"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Act/Desact conservar conexiones"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Mostrar ventana de registro..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Mostrar ventana de coordenadas..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Ayuda"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Manual"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "Documentación de gEDA"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "PUF de gschem"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Documentación del componente"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "Acerca de gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Teclas rápidas"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "¡Vista demasiado ampliada! No se puede ampliar más.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "No se ha podido crear un proceso hijo\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "No se ha podido llamar a %s\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "No se pueden utilizar los comandos de documentación bajo MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr ""
 "Se ha especificado un factor de ampliación no válido [%d] a la función %s\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Se ha especificado un tamaño no válido [%d] a la función text-size\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr ""
 "Se ha especificado un tamaño no válido [%f] a la función postscript-font-"
 "scale\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Se ha especificado un tamaño no válido [%d] a la función snap-size\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr ""
 "Número de niveles [%d] no válidos especificados a la función undo-levels\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Tamaño no válido [%d] especificado a la función bus-ripper-size\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr ""
 "Tamaño de punto no válido [%d] especificado a la función grid-dot-size\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr ""
 "Espaciado de punto no válido [%d] especificado a la función grid-fixed-"
 "threshold\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr ""
 "Espaciado de punto no válido [%d] especificado a la función grid-fixed-"
 "threshold\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr ""
 "Se ha especificado un desplazamiento no válido [%d] a la función add-"
 "attribute-offset\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr ""
 "Se ha especificado un número de segundos no válido [%d] a la función auto-"
 "save-interval\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr ""
 "Se ha especificado un aumento no válido [%d] a la función mousepan-gain\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr ""
 "Se ha especificado un aumento no válido [%d] a la función keyboardpan-gain\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr ""
 "Se ha especificado un número de pixels no válido [%d] a la función select-"
 "slack-pixels\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr ""
 "Se ha llamado a la función zoom-gain con un nivel de aumento [%d] no válido\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr ""
 "Se ha llamado a la función scrollpan-steps con un número de pasos no válido "
 "[%d]\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "Versión de gEDA/gschem %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -642,14 +649,12 @@ msgstr ""
 "gEDA/gschem no incluye NINGUNA GARANT�A; véase el fichero COPYING para más "
 "detalles.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr "Esto es software libre, y puede redistribuirlo bajo ciertas\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -657,17 +662,17 @@ msgstr ""
 "condiciones; por favor vea el fichero COPYING para más detalles.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "�sta es la adaptación MINGW32.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Entorno actual de locale: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -675,247 +680,251 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "No se ha podido encontrar el fichero de inicialización scm [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Leído fichero de inicialización scm [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Fallo al leer fichero de inicialización scm [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "¡Directorio de Scheme no especificado!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Ejecutando programa de guile [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Final de línea desconocido (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Tipo de línea desconocido (%d)\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Modo Componentes"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Modo Texto"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Rotar"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Modo Centrar"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Modo Pegar %d"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 msgid "Magnetic Net Mode"
 msgstr "Modo Ayuda a la conexión"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Modo Conexión"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Modo Bus"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Modo Línea"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Modo Rectángulo"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Modo Imagen"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Modo Círculo"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Modo Arco"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Modo Pin"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Mover"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Copia múltiple"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Mostrar ocultos"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Desactivado el ajuste a la rejilla"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Acción"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Gesto"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "ninguno"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Repetir/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "NO"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Rejilla(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentación de [%s, %s, %s, %s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Se ha creado una página nueva [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "Se ha creado una nueva ventana [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "No se ha podido guardar todo"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Guardado todo"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Cerrando ventana\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Antes seleccione objetos"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Editar tipo de línea"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Editar texto"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Elemento"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Color"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Rotar"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Voltear"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Mover"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr ""
 "ADVERTENCIA: ¡No mueva objetos con el ajuste a la rejilla desactivado!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr ""
 "ADVERTENCIA: Activando el ajuste a la rejilla y continuando con el "
 "movimiento.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "ADVERTENCIA: ¡El tamaño de la rejilla no es 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -923,144 +932,146 @@ msgstr ""
 "ADVERTENCIA: Si está moviendo un símbolo al origen, el tamaño de la "
 "rejilladebe ser de 100\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Incrustar"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Desincrustar"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Actualizar"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "Mostrar ocultos"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "Hacer visible"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Actualizar entradas"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "¿Seguro que quiere recargar la página?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Pegar memoria intermedia 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Buffer vacío"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Copiar 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Copiar 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Copiar 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Copiar 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Copiar 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Cortar 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Cortar 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Cortar 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Cortar 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Cortar 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Pegar 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Pegar 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Pegar 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Pegar 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Pegar 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Componente"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Propiedad"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Buscando origen [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "No se ha podido encontrar la fuente [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Buscando símbolo [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr "El símbolo no es un archivo físico. No se puede cargar el símbolo.\n"
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr "¡No se ha podido encontrar ningún esquema jerárquico superior!\n"
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1068,262 +1079,263 @@ msgstr ""
 "Este comando consigue la información del componente de internet, pero no hay "
 "ningún componente seleccionado"
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "Mostrar nombre"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "Mostrar valor"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "Mostrar ambos"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "Cambiar visibilidad"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Disculpe. Esta opción del menú no funciona\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Modo de realimentación seleccionado: SILUETA\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Modo de realimentación seleccionado: CONTENEDOR\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Rejilla DESACTIVADA\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "¡PRECAUCI�N!: Ajuste a la rejilla DESACTIVADO \n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Ajuste a la rejilla ACTIVADO\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "¡PRECAUCI�N!: Ajuste a la rejilla DESACTIVADO \n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Goma de borrar DESACT\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Goma de borrar ACT\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr "Modo de Ayuda a la conexión: ACTIVADO\n"
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr "Modo de Ayuda a la conexión: DESACTIVADO\n"
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "¡Tipo de relleno de rectángulo desconocido!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr ""
 "Se ha recibido un número de memoria intermedia no válida en la función "
 "o_buffer_paste_start\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr ""
 "Se ha recibido un parámetro no válido (\"whichone\") en la función "
 "o_bus_draw_xor_single\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "¡Tipo de relleno de círculo desconocido!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Convirtiendo esquema [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Se ha recibido NULL (no esperado) en la función o_edit\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Objeto previamente fijado\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "El objeto no estaba fijado\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "El texto oculto es ahora visible\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "El texto oculto es ahora invisible\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 "No se pudo encontrar el símbolo [%s] en la librería. Error al actualizar.\n"
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr ""
 "o_autosave_backups: Imposible averiguar el nombre de archivo real de %s."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "NO se han podido cambiar los permisos de la copia de seguridad anterior [%s] "
 "a lectura-escritura\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr ""
 "NO se han podido cambiar los permisos de la copia de seguridad anterior [%s] "
 "a sólo lectura\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "NO se ha podido guardar la copia de seguridad [%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "ERROR: en la función o_move_end, ¡el objeto es NULL!\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 "¡Eh! Se ha intentado encontrar el parámetro \"whichone\", pero ¡no se ha "
 "encontrado!\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr ""
 "Se ha recibido un objeto que no es una línea en la función "
 "o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr ""
 "Se ha recibido un parámetro no válido (\"whichone\") en la función "
 "o_net_draw_xor_single\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 "Advertencia: se ha iniciado la conexión en una coordenada fuera de la "
 "rejilla\n"
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 "Advertencia: se ha finalizado la conexión en una coordenada fuera de la "
 "rejilla\n"
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 "Se ha intentado añadir más de dos conexiones a bus. Error interno de "
 "gschem.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "No se ha encontrado el símbolo %s en ninguna librería de componentes\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "¡Tipo de camino (relleno) desconocido!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Fallo al cargar la imagen: %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Imagen"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "ERROR: ¡objeto vacío (NULL)!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "El atributo del elemento está mal especificado\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "La propiedad \"numslots\" no está definida\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "No se permiten múltiples elementos para este componente\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "El nuevo número de elemento está fuera de rango\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "¡¡Ufff!! ¡se ha intentado editar el elemento de algo que no existe!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "¡Deshacer/Rehacer deshabilitado en el fichero rc!\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1347,69 +1359,70 @@ msgstr ""
 "  -h                Ayuda; éste mensaje\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 "Se ha recibido una opción de mostrar no válida; mostrando ambos por defecto\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Editor de una única propiedad"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Editar propiedades</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Añadir propiedad</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Nombre:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Valor:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Visible"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Mostrar sólo valor"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Mostrar sólo nombre"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Mostrar nombre y valor"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Opciones de asociación</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Todo"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Componentes"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Conexiones"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Reemplazar las propiedades existentes"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
@@ -1417,7 +1430,7 @@ msgstr ""
 "Un componente con varios elementos sin la propiedad 'slot' puede causar "
 "problemas al autonumerar los números de elemento\n"
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
@@ -1425,172 +1438,173 @@ msgstr ""
 "La duplicidad de la propiedad 'slot' puede causar problemas: [nombre del "
 "símbolo=%s, número=%d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr "No se ha especificado una cadena de búsqueda para autonumerar texto.\n"
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr "No se ha especificado '*' o '?' al final del texto a autonumerar.\n"
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "De arriba hacia abajo"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "De abajo hacia arriba"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "De izquierda hacia derecha"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "De derecha hacia izquierda"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "Orden de archivos:"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Autoenumerar texto"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Ã?mbito</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Buscar:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr "Autoenumerar texto en:"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Ignorar números encontrados en:"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "Objetos seleccionados"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Hoja actual"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Jerarquía completa"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Sobreescribir los números existentes"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Opciones</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Número inicial:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Método de ordenación:"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Borrar los números"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Asignar números de elemento automáticamente"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "¡No se puede reservar memoria para el color %s!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "negro"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "blanco"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "¡No se puede reservar memoria para el color %s!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "¡No se puede reservar memoria para el color %s!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Se ha intentado obtener un color no válido: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Se ha intentado obtener un color no válido: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filtro:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Nombre"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Valor"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Comportamiento por defecto - designar componente"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Incrustar componente en el esquema"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Incluir componentes como objetos individuales"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Seleccionar componente..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "En uso"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Librerías"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Vista preliminar"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Introducción de texto..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1601,176 +1615,179 @@ msgstr ""
 "para colocar el texto.\n"
 "Botón intermedio para rotar mientras está colocando el texto."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Abajo a la izquierda"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Centrado a la izquierda"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Arriba a la izquierda"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Abajo centrado"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Centrado Centrado"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Arriba centrado"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Abajo a la derecha"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Centrado a la derecha"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Arriba a la derecha"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Editar las propiedades del texto"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Contenido del texto</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Propiedades del texto</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Color:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Tamaño:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Alineación:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Sólido"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Punteado"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Guión"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Centrar"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Fantasma"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*sin modificar*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Editar ancho y tipo de línea"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Tipo:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Ancho:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Longitud de la línea en la discontinuidad:"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Espaciado de la discontinuidad:"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Hueco"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Relleno"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Malla"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Trama"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Editar tipo de relleno"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Tipo de relleno:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Ancho de línea:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Ã?ngulo 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Separación 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Ã?ngulo 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Separación 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Parámetros de arco"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr "Radio de arco:"
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Ã?ngulo de comienzo:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Grados de barrido:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1778,44 +1795,44 @@ msgstr ""
 "¿Desplazamiento del movimiento?\n"
 "(0 para el origen)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Tamaño de texto"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Introduzca nuevo tamaño de texto:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr "Tamaño de la rejilla"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr "Introduzca el nuevo espaciado de la rejilla:"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Editar número de elemento"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Editar número de elemento:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Acerca de..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA: Automatización de Diseño Electrónico GPL</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>versión de gschem %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1827,152 +1844,152 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "Y muchos otros (Véase el archivo AUTHORS)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coordenadas"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Pantalla"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Mundo"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr "Fondo"
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr "Punto final de conexión"
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr "Gráfico"
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr "Negación lógica"
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr "Punto de rejilla"
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 msgid "Detached attribute"
 msgstr "Desvincular propiedad"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Texto"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 msgid "Selection"
 msgstr "Selección"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr "Envolvente"
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 msgid "Zoom box"
 msgstr "Ventana de ampliado"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr "Fondo de salida"
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 msgid "Net junction"
 msgstr "Unión de conexiones"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr "Desconocido"
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "ERROR: ¡objeto vacío (NULL) en la función color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Editar color"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Color del componente:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Función"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr "Pulsación(es)"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Encontrar texto:"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Texto a encontrar:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "Descender en la jerarquía"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Ocultar texto:"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Ocultar texto que comienza por:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Mostrar texto"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Mostrar texto que comienza por:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "S_eleccione los esquemas que quiere guardar:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr "¿Guardar cambios del esquema \"%s\" antes de salir?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 "Hay %d esquemas con cambios sin guardar. ¿Guardar cambios antes de cerrar?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr "Si no los guarda, todos los cambios se perderán definitivamente."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "_Cerrar sin guardar"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1990,49 +2007,49 @@ msgstr ""
 "El nombre no puede finalizar en un espacio.\n"
 "El valor no puede empezar con un espacio."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Propiedad incorrecta"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Modo Pin"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Punto final de conexión"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Esquemas"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Símbolos"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Esquemas y símbolos"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Todos los archivos"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Abrir..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Guardar como..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2043,29 +2060,29 @@ msgstr ""
 "\n"
 "¿Quiere sobreescribirlo?"
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 msgid "Overwrite file?"
 msgstr "¿Sobreescribir el archivo?"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr "El usuario ha cancelado la operación de guardar los cambios\n"
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr "Postscript encapsulado"
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: Imposible escribir archivo eps: %s.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: Imposible escribir archivo %s: %s.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2078,266 +2095,266 @@ msgstr ""
 "\n"
 "%s.\n"
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Se ha guardado la imagen en color en [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Se ha guardado la imagen en blanco y negro en [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr "x_image_lowlevel: Imposible obtener pixbuf de la ventana de gschem.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Anchura x Altura"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Tipo de imagen"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 "** mensaje sin codificación UTF-8 en la ventana de registro. Véase la "
 "ventana de registro de gschem o la salida de errores.\n"
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Estado"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Añadir conexión..."
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Añadir propiedad"
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Añadir componente..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Añadir bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Añadir texto"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Aumentar ampliación"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Disminuir ampliación"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Ampliar zona"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Mostrar todo"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Seleccionar"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Editar..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Editar tipo de línea"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Copiar"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Mover"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Borrar"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Descender en esquema"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Descender en símbolo"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Arriba"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr ""
 "Se ha intentado modificar la sensibilidad de una opción de menú que no "
 "existe '%s'\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "¡No existen menúes contextuales!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Se ha intentado modificar la sensibilidad de una opción de menú que no "
 "existe\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "No se ha podido abrir el archivo %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Borrar"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr ""
 "No se permiten las propiedades sin nombre. Por favor, introduzca un nombre."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Mostrar sólo valor"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Mostrar sólo nombre"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Duplicar"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Editar propiedades"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Visible?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "V"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Desvincular propiedad"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Añadir propiedad"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Descartar página"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Administrador de páginas"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Nombre de archivo"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Modificado"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Pulse con el botón derecho para ver más opciones..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Pegar"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Seleccionar archivo PostScript..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Completo con márgenes"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Completo sin márgenes"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Ventana actual"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Apaisado"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Vertical"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Opciones"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Tamaño de papel:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientación:"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Destino"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "Archivo:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Comando:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "No se ha especificado el destino de impresión\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "No se puede imprimir el esquema actual a [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2346,45 +2363,45 @@ msgstr ""
 "Error al imprimir al fichero '%s'\n"
 "Vea la ventana de registro para más información"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Se ha imprimido el esquema actual a [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "No se ha podido reservar memoria para la variable gc\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Nuevo archivo"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Abrir"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Abrir archivo"
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Guardar"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Guardar archivo"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Deshacer última operación"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Rehacer el último deshacer"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2396,7 +2413,7 @@ msgstr ""
 "ventana principal, y presione el botón izq. del ratón para colocarlo.\n"
 "Botón derecho del ratón para cancelar"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2404,7 +2421,7 @@ msgstr ""
 "Añadir conexión\n"
 "Botón derecho del ratón para cancelar"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2412,86 +2429,86 @@ msgstr ""
 "Añadir bus\n"
 "Botón derecho del ratón para cancelar"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Añadir texto..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Seleccionar"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Seleccionar"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Coger"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Repetir/ninguno"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menú/Cancelar"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Panorámica/Cancelar"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Cargando esquema [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 msgid "Failed to load file"
 msgstr "Fallo al cargar el archivo"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, c-format
 msgid "New file [%s]\n"
 msgstr "Nuevo archivo [%s]\n"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "NO se ha podido guardar la página [%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Error al intentar guardar"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Guardado como [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Guardado [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Guardado"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Descartando página [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Cerrando [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 msgid "gEDA Schematic Editor"
 msgstr "Editor de esquemas gEDA"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr "Crear y modificar esquemas y símbolos con gschem"
 
diff --git a/gschem/po/fr.po b/gschem/po/fr.po
index cd1b3b6..5454bd6 100644
--- a/gschem/po/fr.po
+++ b/gschem/po/fr.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr_FR\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-20 14:26+0000\n"
 "Last-Translator: Patrick Bernaud <b-patrick@xxxxxxxxxx>\n"
 "Language-Team: French\n"
@@ -18,629 +18,634 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Fichier"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nouvelle fenêtre"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nouvelle page"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Ouvrir une page..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Fermer la page"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Annuler les modifications"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Enregistrer la page"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Enregistrer la page sous..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Enregistrer toutes les pages"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Imprimer..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 #, fuzzy
 msgid "Write image..."
 msgstr "Exporter l'image..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 #, fuzzy
 msgid "Recent files"
 msgstr "Nouveau fichier"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Exécuter le script..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Fermer la fenêtre"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Quitter"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Ã?dition"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Défaire"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Refaire"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Mode Sélection"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Couper 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Copier"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Coller 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Ã?diter"
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Ã?diter le texte..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Mode Copie"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Mode Copie Multiple"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Mode Déplacement"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Supprimer"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Mode Rotation 90"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Mode Miroir"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Slot..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Couleur..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Verrouiller"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Déverrouiller"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Ã?paisseur & type de ligne..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Type de remplissage..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Translater le symbole..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Embarquer le composant/l'image"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Débarquer le composant/l'image"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Mise à jour du composant"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Afficher/Cacher le texte invisible"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Rendre le texte invisible visible"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Tampon"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Copier dans 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Copier dans 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Copier dans 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Copier dans 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Copier dans 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Couper dans 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Couper dans 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Couper dans 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Couper dans 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Couper dans 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Coller depuis 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Coller depuis 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Coller depuis 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Coller depuis 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Coller depuis 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Affichage"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Redessiner"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Panoramique"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Zoom boîte"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Agrandissement auto"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Réduction"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Agrandissement"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Agrandissement minimum"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Page"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Gestionnaire..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Suivante"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Précédente"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Nouvelle"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Restaurer"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Fermer"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Abandonner"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Ajouter"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Composant..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Piste"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Attribut..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Texte..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Ligne"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Boîte"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Cercle"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Arc"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Broche"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Image..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hiérarchie"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Descendre dans la hiérarchie"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Descendre dans le symbole"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Remonter"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentation"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Attributs"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Attacher"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Détacher"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Montrer la valeur"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Montrer le nom"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Montrer le nom et la valeur"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Afficher/Cacher"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Rechercher le texte..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Cacher le texte..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Montrer le texte..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Annotation automatique..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Options"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Taille de texte..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Activer/Désactiver le snap"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Espacement de la grille de snap..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 #, fuzzy
 msgid "Scale up Grid Spacing"
 msgstr "Espacement de la grille de snap..."
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 #, fuzzy
 msgid "Scale down Grid Spacing"
 msgstr "Espacement de la grille de snap..."
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr ""
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr ""
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Montrer la fenêtre de messages..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Montrer la fenêtre de coordonnées..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Aide"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 #, fuzzy
 msgid "Manual"
 msgstr "Manuel..."
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 #, fuzzy
 msgid "gEDA Documentation"
 msgstr "Documentation"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr ""
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 #, fuzzy
 msgid "Component Documentation"
 msgstr "Documentation"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr ""
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Raccourcis"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Agrandissement maximum ! Impossible d'agrandir plus.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Impossible de créer un processus fils\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Impossible de lancer %s\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Commandes de documentation non supportées sous MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Agrandissement [%d] passé à %s invalide\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Taille [%d] passée à text-size invalide\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Taille [%f] passée à postscript-font-scale invalide\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Taille [%d] passée à snap-size invalide\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Nombre de niveaux [%d] passé à undo-levels invalide\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Taille [%d] passée à bus-ripper-size invalide\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Taille de point [%d] passée à grid-dot-size invalide\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr ""
 "Seuil d'affichage de grille [%d] passé à grid-fixed-threshold invalide\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr ""
 "Seuil d'affichage de grille [%d] passé à grid-fixed-threshold invalide\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Offset [%d] passé à add-attribute-offset invalide\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "Nombre de secondes [%d] passé  auto-save-interval invalide\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Gain [%d] passé à mousepan-gain invalide\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Gain [%d] passé à keyboardpan-gain invalide\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, fuzzy, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr "Nombre de secondes [%d] passé  auto-save-interval invalide\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Gain [%d] passé à mousepan-gain invalide\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "Nombre de secondes [%d] passé  auto-save-interval invalide\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem version %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
 msgstr "gEDA/gschem n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "Ceci est un logiciel libre et vous êtes invité à le redistribuer en "
 "respectant\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -649,17 +654,17 @@ msgstr ""
 "COPYING.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "Ceci est le portage sous MINGW32\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Locale en cours : %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -667,246 +672,250 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "�chec de la lecture du fichier scm de démarrage [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Lecture du fichier scm de démarrage [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "�chec de la lecture du fichier scm de démarrage [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Répertoire Scheme NON initialisé !\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Exécution du script guile [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 #, fuzzy
 msgid "Accelerator String"
 msgstr "Saisie de texte"
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Extrémité de ligne inconnue (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Type de ligne pour ligne inconnu (%d) !\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Mode Composant"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Mode Texte"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Mode Rotation"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Mode Panoramique"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Mode Coller %d"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "Mode Lien"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Mode Lien"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Mode Bus"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Mode Ligne"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Mode Boîte"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Mode Image"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Mode Cercle"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Mode Arc"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Mode Broche"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Déplacer"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Copie Multiple"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Montrer caché"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Snap Off"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Action"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr ""
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "aucun"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Répéter"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr ""
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Grille(%s,%s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentation pour [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Nouvelle page [%s] créée\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, fuzzy, c-format
 msgid "New Window created [%s]\n"
 msgstr "Nouvelle fenêtre créée\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Ã?chec de la sauvegarde de toutes les pages"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Toutes les pages enregistrées"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Fermeture de la fenêtre\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Sélectionnez d'abord des objets"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Ã?diter le type de ligne"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Ã?diter le texte"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Couleur"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Pivoter"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Miroir"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Translater"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "ATTENTION : ne translatez pas quand le snap est désactivé !\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "ATTENTION : activation du snap et poursuite de la translation.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "ATTENTION : la taille du snap sur la grille n'est pas égale à 100 !\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -914,390 +923,393 @@ msgstr ""
 "ATTENTION : si vous déplacez un symbole à l'origine, la taille de snap de la "
 "grille devrait être de 100 !\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Embarquer"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Débarquer"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Mettre à jour"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "AfficheCaché"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "RendVisible"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Met à jour les extrémités"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Abandonner les modifications ?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Coller depuis 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Tampon vide"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Copier 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Copier 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Copier 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Copier 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Copier 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Couper 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Couper 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Couper 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Couper 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Couper 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Coller 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Coller 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Coller 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Coller 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Coller 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Composant"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Attribut"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Recherche de source [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Impossible de trouver source [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Recherche du symbole [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
 msgstr ""
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "MontrerN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "MontrerV"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "MontrerNV"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr ""
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Désolé mais c'est une option de menu non fonctionnelle\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Mode de retour utilisateur positionné à OUTLINE\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Mode de retour utilisateur positionné à BOUNDINGBOX\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Grille OFF\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Snap OFF (ATTENTION)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Snap ON\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Snap OFF (ATTENTION)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr ""
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Type de remplissage de boîte inconnu !\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Valeur de buffer_number incorrecte [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Valeur de whichone incorrecte dans o_bus_draw_xor_single\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Type de remplissage pour cercle inconnu !\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Translation du schéma [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "o_current==NULL dans o_edit()\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 #, fuzzy
 msgid "Object already locked\n"
 msgstr "Objet déjà verrouillé\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 #, fuzzy
 msgid "Object already unlocked\n"
 msgstr "Objet déjà déverrouillé\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Le texte normalement caché est maintenant visible\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Le texte normalement caché est maintenant invisible\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr ""
 "o_autosave_backups() : Impossible de récupérer le véritable nom du fichier %s"
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "Impossible de passer le fichier copie de sauvegarde [%s] en lecture/"
 "écriture\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr ""
 "Impossible de passer le fichier copie de sauvegarde [%s] en lecture seule\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "�chec lors de la création de la copie de sauvegarde [%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "ERREUR : object==NULL dans o_move_end !\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr "Incapable de déterminer le whichone de l'object !\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "L'objet passé n'est pas une ligne dans o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr "Valeur de whichone incorrecte dans o_net_draw_xor_single\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 "Tentative d'ajout de plus de deux jonctions de bus. Erreur interne gschem.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, fuzzy, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Impossible de trouver %s dans toutes les bibliothèques de composants\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Type de remplissage de boîte inconnu !\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Ã?chec lors du chargement de l'image : %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Image"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "ERREUR : object==NULL !\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Attribut slot mal formé\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "attribut numslots manquant\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Le slotting n'est pas supporté par ce composant\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Nouvelle valeur de slot hors plage\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Tentative d'édition de slot sur un objet inexistant !\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Opérations Défaire/Refaire désactivées dans fichier rc\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1322,70 +1334,71 @@ msgstr ""
 "  -h            Aide, affichage de ce message\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 "Option d'affichage invalide ; changement pour affichage du nom et de la "
 "valeur\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Ã?diteur d'attribut"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Ã?diter un attribut</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Ajouter un attribut</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Nom :"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Valeur :"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Visible"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Montrer seulement la valeur"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Montrer seulement le nom"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Montrer le nom et la valeur"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Options d'attache</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Tous"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Composants"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Pistes"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Remplacer les attributs existants"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
@@ -1393,7 +1406,7 @@ msgstr ""
 "Les objets à slots sans attribut de slot sont susceptibles de créer des "
 "problèmes durant l'annotation automatique\n"
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
@@ -1401,174 +1414,175 @@ msgstr ""
 "Les slots dupliqués sont susceptibles de créer des problèmes : [symbolname=%"
 "s, number=%d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr "Pas de motif de recherche fourni pour l'annotation automatique.\n"
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 "Pas de caractère '*' ou '?' à la fin du motif de recherche pour annotation "
 "automatique.\n"
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "en diagonal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "de haut en bas"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "de bas en haut"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "de gauche à droite"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "de droite à gauche"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "dans ordre des éléments du fichier"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Annotation automatique"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Portée</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Motif de recherche :"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr "Annoter automatiquement :"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Passer les nombres trouvés dans :"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "les objets sélectionnés"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "la page en cours"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "la hiérarchie complète"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Remplacer les annotations existantes"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Options</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Indice de départ :"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Ordre :"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Supprimer les annotations"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Slotting automatique"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Impossible d'allouer la couleur %s !\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "noir"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "blanc"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Impossible d'allouer la couleur %s !\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Impossible d'allouer la couleur %s !\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Tentative d'obtention d'une couleur invalide : %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Tentative d'obtention d'une couleur invalide : %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filtre:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Nom"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Valeur"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Comportement par défaut - référencer le composant"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Embarquer le composant dans le schéma"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Ã?clater le composant en objets individuels"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Sélecteur de composant..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr ""
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Bibliothèques"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Prévisualisation"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Ajout de texte..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1578,176 +1592,179 @@ msgstr ""
 "déplacez le curseur dans la fenêtre, cliquez pour placer le texte.\n"
 "Bouton du milieu pour pivoter le texte avant placement."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "En bas à gauche"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Au milieu à gauche"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "En haut à gauche"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "En bas au milieu"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Au centre"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "En haut au milieu"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "En bas à droite"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Au milieu à droite"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "En haut à droite"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Editer les propriétés du texte"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Texte</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Propriétés du texte</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Couleur :"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Taille :"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Alignement du texte :"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Continu"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Pointillés"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Tirets"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Centré"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Fantôme"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*inchangé*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Ã?paisseur et type de ligne"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Type :"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Largeur :"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Longueur du tiret :"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Espace entre tirets :"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Vide"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Plein"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Quadrillage"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Rayures"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Ã?diter le type de remplissage"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Type de remplissage :"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Ã?paisseur :"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Angle1 :"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Ã?cart1 :"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Angle2 :"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Ã?cart2 :"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Paramètres d'arc"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Angle de départ :"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Balayage :"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1755,44 +1772,44 @@ msgstr ""
 "Cible pour translation ?\n"
 "(0 pour translation à l'origine)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Taille de texte :"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Entrez la nouvelle taille de texte :"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr "Grille de snap"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr "Entrez le nouvel espacement de la grille de snap :"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Numéro de slot"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Numéro de slot :"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Ã? propos..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA : GPL Electronic Design Automation</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, fuzzy, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>gschem version %s%s.$s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 #, fuzzy
 msgid ""
 "Written by:\n"
@@ -1805,145 +1822,145 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "Et bien d'autres (consultez le fichier AUTHORS)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coords"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Ã?cran"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Monde"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Ajouter un attribut"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Texte"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "Sélection"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Zoom boîte"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Action"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "ERREUR : object==NULL dans color_edit_dialog_apply !\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Sélecteur de couleur"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Couleur de l'objet :"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 #, fuzzy
 msgid "Function"
 msgstr "Action"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 #, fuzzy
 msgid "Keystroke(s)"
 msgstr "Action : raccourci(s)"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Recherche de texte"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Texte à rechercher :"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "descendre dans la hiérarchie"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Cacher le texte"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Cacher le texte commençant par :"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Montrer le texte"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Montrer le texte commençant par :"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "_Sélectionnez les schémas que vous souhaitez enregistrer :"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 "Voulez-vous enregistrer les modifications dans le schéma \"%s\" avant de le "
 "fermer ?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, fuzzy, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
@@ -1951,17 +1968,17 @@ msgstr ""
 "Il y a %d schémas avec des modifications non enregistrées. Voulez-vous "
 "enregistrer les modifications avant de fermer ?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr ""
 "Si vous n'enregistrez pas, les modifications effectuées seront "
 "définitivement perdues."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "Fermer sans sa_uvegarder"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1972,50 +1989,50 @@ msgid ""
 "The value cannot start with a space."
 msgstr ""
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 #, fuzzy
 msgid "Invalid Attribute"
 msgstr "Ajouter un attribut"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Type :"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Action"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "sch - Schémas"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "sym - Symboles"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "sym/sch - Schémas et symboles"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "* - Tous fichiers"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Ouvrir..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Enregistrer sous..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2023,30 +2040,30 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 #, fuzzy
 msgid "Overwrite file?"
 msgstr "Nouveau fichier"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr ""
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, fuzzy, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel(): Impossible d'écrire le fichier PNG.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, fuzzy, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel(): Impossible d'écrire le fichier PNG.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2055,264 +2072,264 @@ msgid ""
 "%s.\n"
 msgstr ""
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Image couleur exportée dans fichier [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Image noire et blanche exportée dans fichier [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr ""
 "x_image_lowlevel(): Impossible de récupérer le pixbuf depuis la fenêtre de "
 "gschem.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 #, fuzzy
 msgid "Width x Height"
 msgstr "Largeur x Hauteur :"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 #, fuzzy
 msgid "Image type"
 msgstr "Image"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Messages"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Ajouter une piste"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Ajouter un attribut..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Ajouter un composant..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Ajouter un bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Ajouter du texte"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Agrandir"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Réduire"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Zoom boîte"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Agrandissement auto"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Sélectionner"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Ã?diter..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Ã?diter le type de ligne"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Copier"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Déplacer"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Supprimer"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Descendre dans le schéma"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Descendre dans le symbole"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Remonter"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, fuzzy, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr "Tentative de rendre sensible un élément de menu inexistant\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "Popup_menu_item_factory n'existe pas !\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Tentative de rendre sensible un élément de menu contextuel inexistant\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, fuzzy, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Impossible de lancer %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Effacer"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Les attributs sans nom sont interdits. Donnez un nom."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Montrer seulement la valeur"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Montrer seulement le nom"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Cloner"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Ã?diteur d'attributs"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Vis?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "V"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Ajouter un attribut"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Ajouter un attribut"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Abandonner la page"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Gestionnaire de pages"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Nom de fichier"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Modifié"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Utilisez le clic droit sur le nom de fichier pour plus d'options..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Tampon"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Enregistrer en PostScript sous..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Totalité avec marges"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Totalité sans marge"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Vue en cours"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Paysage"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Portrait"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Configuration"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Taille de papier :"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientation :"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Destination"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "Fichier :"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Commande :"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Destination pour l'impression non spécifiée\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Impossible d'imprimer le schéma en cours dans [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2321,45 +2338,45 @@ msgstr ""
 "Erreur pendant l'impression du fichier '%s'\n"
 "Reportez-vous à la fenêtre des messages pour plus de détails"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Schéma en cours imprimé dans fichier [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Allocation gc impossible\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Nouveau fichier"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Ouvrir"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Ouvrir fichier..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Enregistrer"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Sauvegarder le fichier"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Défaire la dernière opération"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Refaire le dernier défait"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2371,7 +2388,7 @@ msgstr ""
 "pointeur dans la fenêtre principale.\n"
 "Clic gauche pour placer, clic droit pour annuler."
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2379,7 +2396,7 @@ msgstr ""
 "Mode ajout de piste\n"
 "Clic droit pour annuler"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2387,88 +2404,88 @@ msgstr ""
 "Mode ajout de bus\n"
 "Clic droit pour annuler"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Ajouter du texte..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Sélectionner"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Mode sélection"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Prendre"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Répéter/aucun"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Annuler"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Panoramique/Annuler"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Chargement du schéma [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 #, fuzzy
 msgid "Failed to load file"
 msgstr "Ã?chec lors du chargement de l'image : %s"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, fuzzy, c-format
 msgid "New file [%s]\n"
 msgstr "Nouveau fichier"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Ã?chec sauvegarde de la page [%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Erreur lors de la tentative de sauvegarde"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Enregistré sous [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Sauvegarder [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Sauvegarder"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Abandonne page [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Ferme [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 #, fuzzy
 msgid "gEDA Schematic Editor"
 msgstr "Descendre dans la hiérarchie"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 
diff --git a/gschem/po/it.po b/gschem/po/it.po
index 995da26..5042d2a 100644
--- a/gschem/po/it.po
+++ b/gschem/po/it.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: it_IT\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-20 14:38+0000\n"
 "Last-Translator: Michele <michelinux@xxxxxxxx>\n"
 "Language-Team: Italiano <michelinux@xxxxxxxx>\n"
@@ -17,613 +17,620 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "File"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nuova finestra"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nuova pagina"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Apri pagina..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Chiudi pagina"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr ""
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Salva la pagina"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Salva pagina con nome..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Salva tutto"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Stampa..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Scrivi immagine..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "File recenti"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Esegui Script..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Chiudi finestra"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Esci"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Modifica"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Annulla"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Ripristina"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Modalità selezione"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Taglia 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Copia"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Incolla 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Modifica..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Modifica il testo..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Modalità copia"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Modalità di copiatura multipla"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Modalità spostamento"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Cancella"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Ruota di 90 gradi"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Modalità specchio"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Slot..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Colore..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Blocca"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Sblocca"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Tipo & Larghezza della linea..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Riempimento..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Converti simbolo..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Componente/Immagine fissato/a"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Componente/immagine non fissato/a"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Aggiorna Componente"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Mostra/Nascondi Testo Invisibile"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Rendi Invisibile Testo Visibile"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Buffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Copia in 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Copia in 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Copia in 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Copia in 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Copia in 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Taglia in 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Taglia in 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Taglia in 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Taglia in 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Taglia in 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Incolla da 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Incolla da 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Incolla da 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Incolla da 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Incolla da 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Vista"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Aggiorna"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Pan"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Ingrandisci Riquadro"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Adatta alla pagina"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Ingrandisci"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Riduci"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Riduci al Massimo"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Pagina"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Gestore..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Successiva"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Precedente"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Nuovo"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Riduce e Centra lo Schema"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Chiudi"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Annulla"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Aggiungi"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Componente..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Collegamento"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Caratteristica..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Testo..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Linea"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Box"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Cerchio"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Arco"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pin"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Immagine..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Gerarchia"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Scarica Schematico"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Scarica Simbolo"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Sopra"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentazione"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Caratteristiche"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Collega"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Scollega"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Mostra Valore"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Mostra Nome"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Mostra Entrambi"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Pulsante Visibilità"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Trova Testo Specifico..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Nascondi Testo Specifico..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Mostra Testo Specifico..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr ""
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Opzioni"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Ampiezza Testo..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr ""
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Ampiezza Griglia"
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr ""
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr ""
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr ""
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr ""
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Mostra Finestra File di Log..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Mostra Coordinate Finestra..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Aiuto"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Manuale"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "Documentazione gEDA"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "FAQ gschem"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Documentazione componente"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "Informazioni su gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Hotkeys"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr ""
 "Eccessiva riduzione dell'immagine!  Non è possibile ridurla ulteriormente.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Impossibile creare un nuovo processo\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Non è possibile invocare %s\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Comandi documentazione non supportati sotto MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Fattore di ingrandimento [%d] passato a %s non valido.\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Grandezza [%d] passata alla dimensione del testo, non valida\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "L'ampiezza [%f] passata al postscript-font-scale non è valida\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "L'ampiezza [%d] , assegnata alla snap size, non è corretta\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Il numero di livelli [%d] assegnato ai livelli Cancella non è valido\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr ""
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr ""
 "Il valore [%d] dell'ampiezza dei punti passata alla griglia non è valida\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr ""
 "Il valore [%d] dell'ampiezza dei punti passata alla griglia non è valida\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr ""
 "Il valore [%d] dell'ampiezza dei punti passata alla griglia non è valida\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr ""
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr ""
 "Il numero di secondi indicati [%d] non è valido ai fini dell'intervallo di "
 "auto salvataggio\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr ""
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr ""
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr "Il numero [%d] di pixel indicati non è valido\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Grandezza [%d] passata alla dimensione del testo, non valida\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr ""
 "Il numero di secondi indicati [%d] non è valido ai fini dell'intervallo di "
 "auto salvataggio\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem versione %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -631,32 +638,30 @@ msgstr ""
 "gEDA/gschem viene rilasciato SENZA GARANZIA ALCUNA A CAUSA DEL SUO SVILUPPO "
 "IN FASE ALFA; leggere il file COPYING per ulteriori informazioni.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "Questo software è rilasciato sotto licenza GPL e può essere ridistribuito "
 "sotto determinate\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
 msgstr "condizioni; per favore leggi il file COPYNG per ulteriori dettagli.\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "Port per MINGW32.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Impostazioni locali correnti: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -664,247 +669,251 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Fallita la lettura del file init scm [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Lettura del file init scm [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Fallita la lettura del file init scm [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Cartelle degli schemi non impostata!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Esecuzione dello script guile [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Non corretta terminazione per la linea (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Tipo di linea sconosciuta per (%d) !\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Scelta Componente"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Modalità Testo"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Modalità Rotazione"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr ""
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Modalità %d Incolla"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "Modalità Collegamento"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Modalità Collegamento"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Modalità Bus"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Modalità Linea"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Modalità Riquadro"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Modalità Immagine"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Modalità Cerchio"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Modalità Arco"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Modalità Pin"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Sposta"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Copia Multipla"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Mostra Nascosto"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Snap Off"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Azione"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr ""
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "none"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Ripeti/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "OFF"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Griglia(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentazione per [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Nuova Pagina Creata [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "Creata Nuova Finestra [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Salvataggio Fallito"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Salvato Tutto"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Chiusura Finestra\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Seleziona prima un oggetto"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Modifica il Tipo di Linea"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Modifica Testo"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Colore"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Ruota"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Specchio"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Converti"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "ATTENZIONE: Non effettuare la conversione in modalità snap off!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr ""
 "ATTENZIONE: Sei in modalità snap off; passa prima in modalità snap on e poi "
 "continua con la conversione.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "ATTENZIONE: L'ampiezza snap gride non è uguale a 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -912,144 +921,146 @@ msgstr ""
 "ATTENZIONE: se stai convertendo un simbolo dalla sua origine, è opportuno "
 "che l'ampiezza snap gride venga impostata a 100\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Posizionato"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Non posizionato"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Aggiorna"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "Mostra Nascosto"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "Rendi Visibile"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr ""
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Vuoi veramente ritornare alla pagina precedente?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Incolla da 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Buffer vuoto"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Copia 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Copia 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Copia 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Copia 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Copia 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Taglia 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Taglia 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Taglia 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Taglia 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Taglia 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Incolla 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Incolla 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Incolla 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Incolla 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Incolla 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Componente"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Caratteristica"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Ricerca del sorgente [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Impossibile trovare il sorgente [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Ricerca del simbolo [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1057,246 +1068,247 @@ msgstr ""
 "Questo comando reperisce la documentazione del componente da Internet, ma "
 "non hai selezionato nessun componente da cercare."
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "MostraN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "MostraV"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "MostraB"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "Visibilità Strumenti"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Spiacente, ma questa non è una funzione del menù opzioni\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr ""
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr ""
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Griglia NON ATTIVA\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Snap OFF (ATTENZIONE!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Snap ON\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Snap OFF (ATTENZIONE!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Rubber band OFF \n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Rubber band ON\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Sconosciuto tipo per il riquadro (riempimento)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Ottenuto un non valido buffer_number [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Ottenuto un non valido buffer_number [o_buffer_paste_start]\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Tipo sconosciuto per il cerchio (riempimento)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Spostamento schema [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Ottenuto un NULLO inaspettato in o_edit\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Oggetto già bloccato\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "Oggetto già sbloccato\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Il testo nascosto è ora visibile\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Il testo ora è non visibile\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 "Non è possibile trovare il simbolo [%s] nella libreria. Aggiornamento "
 "fallito.\n"
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr "o_autosave_backups: Non è possibile ottenere il vero nome del file %s."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "NOn è possibile impostare il precedente file di ripristino [%s] in lettura-"
 "scrittura\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr ""
 "Non è possibile impostare il precedente file di ripristino [%s] in sola "
 "lettura\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Non è possibile salvare il file di ripristino [%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "ERRORE: oggetto NULLO in o_move_end!\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Ottenuto un oggetto non in linea in o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr ""
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr ""
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Sconosciuto tipo per il riquadro (riempimento)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Fallito il caricamento dell'immagine: [%s]"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Immagine"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "ERRORE: oggetto NULLO!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Attributo dello slot malposto\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "attributo del numero dello slot mancante\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr ""
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Numero del nuovo slot fuori dal limite\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Hai provato a editare qualcosa che non esiste!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Cancella/Ripristina disabilitato nel file rc\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1321,245 +1333,247 @@ msgstr ""
 "  -h            Help; this message\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Editor Singola Caratteristica"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Modifica Caratteristiche</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Aggiungi Caratteristiche</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Nome:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Valore:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Visibile"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Mostra Solo il Valore"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Mostra Solo il Nome"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Mostra Nome & Valore"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Aggiungi Opzioni</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Tutto"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Componenti"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Collegamenti"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Ridefinisci le caratteristiche esistenti"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 msgstr ""
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonale"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "Dall'alto verso il basso"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "Dal basso verso l'alto"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "Da sinistra a destra"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "Da destra a sinistra"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "Sequenza dei file"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr ""
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Visibilità</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Ricerca di:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr ""
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr ""
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "Oggetti selezionati"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Pagina corrente"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Intera gerarchia"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Sovrascrivi i numeri esistenti"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Opzioni</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Numero iniziale:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr ""
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Rimuovi numeri"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr ""
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Non è possibile inserire il colore %s!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "nero"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "bianco"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Non è possibile inserire il colore %s!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Non è possibile inserire il colore %s!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Provato a ottenere un colore non valido: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Provato a ottenere un colore non valido: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filtro:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Nome"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Valore"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Comportamento predefinito - Consultazione componente"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Fissa il componente nello schema"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Includi componente come oggetto individuale"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Seleziona Componente..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "In uso"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Librerie"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Anteprima"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Inserisci Testo..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1570,219 +1584,222 @@ msgstr ""
 "e clicca con il tasto sinistro per rilasciare il testo.\n"
 "Il pulsante centrale del mouse ruota il testo."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "In basso a sinistra"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Regione centrale a sinistra"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "In alto a sinistra"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Regione centrale in basso"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Centro della regione centrale"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Regione centrale in alto"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "In basso a destra"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Zona centrale a destra"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "In alto a destra"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Modifica proprietà del testo"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr ""
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Proprietà del testo</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Colore:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Ampiezza:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Allineamento:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Continua"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Punteggiata"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Tratteggiata"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Centro"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr ""
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*non cambiato*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Modifica Larghezza & Tipo di Linea"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Tipo:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Larghezza:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Lunghezza linea tratteggiata:"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Spazio linea tratteggiata:"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Vuoto"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Riempito"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Rete"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Tratteggio"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Modifica il Tipo di Riempimento"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Tipo di riempimento:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Larghezza linea:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Angolo 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Livello 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Angolo 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Livello 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Parametri Arco"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Angolo di Attacco:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Gradi di sviluppo dell'arco:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
 msgstr ""
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Dimensione Testo"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Inserisci nuova ampiezza del testo:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr ""
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr ""
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Modifica numero slot"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Modifica numero slot:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Altro..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA: GPL Electronic Design Automation</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>versione di gschem %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1794,141 +1811,141 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "...e molti altri (leggere il file AUTHORS)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coordinate"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Schermo"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr ""
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Aggiungi Attributo"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Testo"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "Seleziona"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Ingrandisci Riquadro"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Funzione"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "ERRORE: oggetto NULLO in color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Modifica Colore"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Colore dell'oggetto:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Funzione"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr ""
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Trova testo"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Testo da cercare:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "discende nella gerarchia"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Nascondi testo"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Nascondi il testo iniziando con:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Mostra testo"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Mostra il testo iniziando con:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "S_eleziona lo schematico che vuoi salvare:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr "Salvare i cambi allo schematico \"%s\" prima di chiudere?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
@@ -1936,17 +1953,17 @@ msgstr ""
 "Ci sono %d schemi che presentano cambi non salvati. Salvare i cambi prima di "
 "chiudere?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr ""
 "Se non effettui un salvataggio dei cambi, essi verranno definitivamente "
 "persi."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "_Chiudi senza salvare"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1964,49 +1981,49 @@ msgstr ""
 "Il nome non deve terminare con uno spazio.\n"
 "Il valore non deve iniziare con uno spazio."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Caratteristica non valida"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Modalità Pin"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Funzione"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Schematici"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Simboli"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Schematici e Simboli"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Tutti i File"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Apri..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Salva con nome..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2014,30 +2031,30 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 #, fuzzy
 msgid "Overwrite file?"
 msgstr "Nuovo file"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr "formato eps (Encapsulated Postscript)"
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: non è possibile scrivere il file eps %s.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr ""
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2046,265 +2063,265 @@ msgid ""
 "%s.\n"
 msgstr ""
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Scritta immagine a colori per [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Scritta immagine in bianco e nero per [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr ""
 "x_image_lowlevel: incapace ad ottenere immagine pixbuf dalla finestra di "
 "gschem.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Larghezza x Altezza"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Tipo di immagine"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Stato"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Aggiungi Net"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Aggiungi Attributo..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Aggiungi Componente..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Aggiungi Bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Aggiungi Testo"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Ingrandisci"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Riduci"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Ingrandisci Riquadro"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Adatta alla pagina"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Seleziona"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Modifica..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Modifica il Tipo di Linea"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Copia"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Sposta"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Cancella"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Rilascia schematico"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Rilascia simbolo"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Sopra"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, fuzzy, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr "Provato a impostare la sensibilità  su un menù di voci non esistenti\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "La voce Popup_menu_item_factory non esiste!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Provato a impostare la sensibilità su una finestra di popup menu_itemi\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Non è possibile aprire il file %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Pulisci"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr ""
 "Attributi con il nome vuoto non sono permessi. Per favore inserisci un nome."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Mostra solo il Valore"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Mostra solo il Nome"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Duplicare"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Modifica Caratteristiche"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Vis?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "V"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Aggiungi Attributo"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Aggiungi Attributo"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Abbandona la pagina"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Gestore Pagina"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Nome file"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Cambiato"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr ""
 "Clicca con il tasto destro del mouse sul nome del file per ulteriori "
 "opzioni..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Incolla buffer"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Seleziona il nome del file Psotscript..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Estensioni con margini"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Estensioni senza margini"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Finestra Corrente"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Landscape"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Portrait"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Impostazioni"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Ampiezza del foglio:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientazione:"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Destinazione"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "File:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Comando:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Non è stata specificata nessuna stampante\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Non è possibile stampare lo schema corrente in [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2313,45 +2330,45 @@ msgstr ""
 "Errore nella stampa del file '%s'\n"
 "Verifica la finestra di stato per maggiori informazioni"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Lo schema corrente è stato stampato in [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Impossibile l'allocazione di gc\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Nuovo file"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Apri"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Apri file..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Salva"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Salva file"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Annulla l'ultima operazione"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Ripristina ultima operazione annullata"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2365,7 +2382,7 @@ msgstr ""
 "Il tasto destro del mouse serve ad abbandonare il componente al fine di "
 "sceglierne un altro."
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2374,7 +2391,7 @@ msgstr ""
 "Tasto destro del mouse per\n"
 "cancellare il collegamento"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2383,88 +2400,88 @@ msgstr ""
 "Tasto destro del mouse per\n"
 "cancellare il collegamento"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Aggiungi Testo..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Seleziona"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Modalità Selezione"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Prendi"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Ripeti/Niente"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menù/Cancella"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Pan/Cancella"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Caricamento schema [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 #, fuzzy
 msgid "Failed to load file"
 msgstr "Fallito il caricamento dell'immagine: [%s]"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, fuzzy, c-format
 msgid "New file [%s]\n"
 msgstr "Nuovo file"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Non è possibile salvare la pagina [%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Errore durante il salvataggio"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Salvato con il nome [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Salvato [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Salvato"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Annulla pagina [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Chiusura [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 #, fuzzy
 msgid "gEDA Schematic Editor"
 msgstr "Scarica Schematico"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 
diff --git a/gschem/po/ja.po b/gschem/po/ja.po
index fcfe716..0323dae 100644
--- a/gschem/po/ja.po
+++ b/gschem/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geda-gschem-CVS-2002-09-26\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-20 14:22+0000\n"
 "Last-Translator: MIYAMOTO Takanori <pnms@xxxxxxxxxxxxxxx>\n"
 "Language-Team: japanese <ja@xxxxxx>\n"
@@ -15,617 +15,624 @@ msgstr ""
 "Content-Type: text/plain; charset=EUC-JP\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "¥Õ¥¡¥¤¥ë"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "¿·µ¬¥¦¥£¥ó¥É¥¦"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "¿·µ¬¥Ú¡¼¥¸"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "³«¤¯..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "ÊĤ¸¤ë"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Ì᤹"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Êݸ"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "̾Á°¤òÉÕ¤±¤ÆÊݸ..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "¤¹¤Ù¤ÆÊݸ"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "°õºþ..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 #, fuzzy
 msgid "Write image..."
 msgstr "¥¤¥á¡¼¥¸½ÐÎÏ..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 #, fuzzy
 msgid "Recent files"
 msgstr "¿·µ¬¥Õ¥¡¥¤¥ë"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "¥¹¥¯¥ê¥×¥È¼Â¹Ô..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "½ªÎ»"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "ÊÔ½¸"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "¥¢¥ó¥É¥¥"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "¥ê¥É¥¥"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "ÁªÂò¥â¡¼¥É"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "¥«¥Ã¥È1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "¥³¥Ô¡¼"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "¥Ú¡¼¥¹¥È1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "ÊÔ½¸..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "¥Æ¥­¥¹¥ÈÊÔ½¸..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "¥³¥Ô¡¼¥â¡¼¥É"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 #, fuzzy
 msgid "Multiple Copy Mode"
 msgstr "¥³¥Ô¡¼¥â¡¼¥É"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "°ÜÆ°¥â¡¼¥É"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "ºï½ü"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "90ÅÙ²óž¥â¡¼¥É"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "ȿž¥â¡¼¥É"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "¥¹¥í¥Ã¥È..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "¿§..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "¥í¥Ã¥¯"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "¥í¥Ã¥¯²ò½ü"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Àþ¼ï¤ÈÉý..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Åɤê¤Ä¤Ö¤·¼ïÎà..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "¥·¥ó¥Ü¥ëžÁ÷..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 #, fuzzy
 msgid "Embed Component/Picture"
 msgstr "ÁȤ߹þ¤à"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 #, fuzzy
 msgid "Unembed Component/Picture"
 msgstr "ÁȤ߹þ¤ß²ò½ü"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "ÉôÉʹ¹¿·"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "¥Æ¥­¥¹¥Èɽ¼¨/Èóɽ¼¨"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "±£¤·¥Æ¥­¥¹¥Èɽ¼¨"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "¥Ð¥Ã¥Õ¥¡"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "¥³¥Ô¡¼1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "¥³¥Ô¡¼2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "¥³¥Ô¡¼3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "¥³¥Ô¡¼4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "¥³¥Ô¡¼5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "¥«¥Ã¥È1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "¥«¥Ã¥È2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "¥«¥Ã¥È3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "¥«¥Ã¥È4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "¥«¥Ã¥È5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "¥Ú¡¼¥¹¥È1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "¥Ú¡¼¥¹¥È2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "¥Ú¡¼¥¹¥È3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "¥Ú¡¼¥¹¥È4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "¥Ú¡¼¥¹¥È5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "ɽ¼¨"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "²èÌ̹¹¿·"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "¥Ñ¥ó"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "³ÈÂç"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "³ÈÂçÈÏ°Ï"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "³ÈÂç"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "½Ì¾®"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "ºÇÂç³ÈÂç"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "¥Ú¡¼¥¸"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "¥Þ¥Í¡¼¥¸¥ã..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "¼¡"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Á°"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "¿·µ¬"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Ìá¤ë"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "ÊĤ¸¤ë"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "ÇË´þ"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "ÄɲÃ"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "ÉôÉÊ..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "¥Í¥Ã¥È"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "¥Ð¥¹"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥È..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "¥Æ¥­¥¹¥È..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Àþ"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "¥Ü¥Ã¥¯¥¹"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "±ß"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "±ß¸Ì"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "¥Ô¥ó"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 #, fuzzy
 msgid "Picture..."
 msgstr "°õºþ..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "³¬ÁØ"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "¥¹¥±¥Þ¥Á¥Ã¥¯¤Ø"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "¥·¥ó¥Ü¥ë¤Ø"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "¾å¤Ø"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "¥É¥­¥å¥á¥ó¥Èɽ¼¨/¸¡º÷"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥È"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "¥¢¥¿¥Ã¥Á"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "¥¢¥¿¥Ã¥Á²ò½ü"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "ÃÍɽ¼¨"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "̾Á°É½¼¨"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "̾Á°¤ÈÃͤòɽ¼¨"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "ɽ¼¨/Èóɽ¼¨"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "¥Æ¥­¥¹¥È¸¡º÷..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "¥Æ¥­¥¹¥È¤ò±£¤¹..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "¥Æ¥­¥¹¥È¤òɽ¼¨..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "¥ª¡¼¥È¥Ê¥ó¥Ð¡¼¥Æ¥­¥¹¥È"
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "¥ª¥×¥·¥ç¥ó"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "¥Æ¥­¥¹¥È¥µ¥¤¥º..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "¥¹¥Ê¥Ã¥× ¥ª¥ó/¥ª¥Õ"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "¥°¥ê¥Ã¥É¤Î´Ö³Ö..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 #, fuzzy
 msgid "Scale up Grid Spacing"
 msgstr "¥°¥ê¥Ã¥É¤Î´Ö³Ö..."
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 #, fuzzy
 msgid "Scale down Grid Spacing"
 msgstr "¥°¥ê¥Ã¥É¤Î´Ö³Ö..."
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "¥¢¥¦¥È¥é¥¤¥ó/¥Ü¥Ã¥¯¥¹"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "¥é¥Ð¡¼¥Ð¥ó¥ÉÀÚÂؤ¨"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "¥í¥°¥¦¥£¥ó¥É¥¦É½¼¨..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "ºÂɸ¥¦¥£¥ó¥É¥¦É½¼¨..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "¥Ø¥ë¥×"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 #, fuzzy
 msgid "Manual"
 msgstr "¥Þ¥Ë¥å¥¢¥ë..."
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 #, fuzzy
 msgid "gEDA Documentation"
 msgstr "¥É¥­¥å¥á¥ó¥Èɽ¼¨/¸¡º÷"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr ""
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 #, fuzzy
 msgid "Component Documentation"
 msgstr "¥É¥­¥å¥á¥ó¥Èɽ¼¨/¸¡º÷"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr ""
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 #, fuzzy
 msgid "Hotkeys"
 msgstr "¥Û¥Ã¥È¥­¡¼..."
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "¤³¤ì°Ê¾å¥º¡¼¥à¤Ç¤­¤Þ¤»¤ó¡£\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr ""
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr ""
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr ""
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "̵¸ú¤Ê³ÈÂçΨ[%d]¤¬%s¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, fuzzy, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬snap-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "̵¸ú¤Ê¥¢¥ó¥É¥¥¥ì¥Ù¥ë[%d]¤¬undo-levels¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬bus-ripper¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, fuzzy, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬text-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, fuzzy, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "̵¸ú¤Ê¥¢¥ó¥É¥¥¥ì¥Ù¥ë[%d]¤¬undo-levels¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬snap-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬snap-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, fuzzy, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr "̵¸ú¤Ê¥¢¥ó¥É¥¥¥ì¥Ù¥ë[%d]¤¬undo-levels¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º[%d]¤¬snap-size¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "̵¸ú¤Ê¥¢¥ó¥É¥¥¥ì¥Ù¥ë[%d]¤¬undo-levels¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, fuzzy, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem¥Ð¡¼¥¸¥ç¥ó%s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -633,16 +640,14 @@ msgstr ""
 "gEDA/gschem¤Ï´°Á´¤Ë̵ÊݾڤÇÄ󶡤µ¤ì¤Þ¤¹¡£¾Ü¤·¤¯¤ÏCOPYING¥Õ¥¡¥¤¥ë¤ò¤´Í÷¤¯¤À¤µ"
 "¤¤¡£\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¢¤ê¡¢¤¢¤ë¾ò·ï¤Î²¼¤ÇºÆÈÒÉÛ¤¹¤ë¤³¤È¤¬¾©Î夵¤ì¤Æ¤¤¤Þ"
 "¤¹¡£\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -650,17 +655,17 @@ msgstr ""
 "¾Ü¤·¤¯¤ÏCOPYING¥Õ¥¡¥¤¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤¡£\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "MIGW32ÈǤǤ¹¡£\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr ""
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -668,248 +673,252 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "½é´ü²½scm¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¡£[%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "½é´ü²½scm¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¤¤¤Þ¤¹¡£[%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "½é´ü²½scm¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¡£[%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "scheme¥Ç¥£¥ì¥¯¥È¥ê¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "guile¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¡£[%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "ÉÔÌÀ¤ÊÀþ¤ÎÀèü(%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "ÉÔÌÀ¤ÊÀþ¤Î¼ïÎà(%d)!\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "ÉôÉʥ⡼¥É"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "¥Í¥Ã¥È¥â¡¼¥É"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "²óž¥â¡¼¥É"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "¥Ñ¥ó¥â¡¼¥É"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "¥Ú¡¼¥¹¥È%d¥â¡¼¥É"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "¥Í¥Ã¥È¥â¡¼¥É"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "¥Í¥Ã¥È¥â¡¼¥É"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "¥Ð¥¹¥â¡¼¥É"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Àþ¥â¡¼¥É"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "¥Ü¥Ã¥¯¥¹¥â¡¼¥É"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 #, fuzzy
 msgid "Picture Mode"
 msgstr "¥Ô¥ó¥â¡¼¥É"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "±ß¥â¡¼¥É"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "±ß¸Ì¥â¡¼¥É"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "¥Ô¥ó¥â¡¼¥É"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "°ÜÆ°"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 #, fuzzy
 msgid "Multiple Copy"
 msgstr "¿½Å¥¢¥¿¥Ã¥Á"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "±£¤·¥Æ¥­¥¹¥Èɽ¼¨"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "¥¹¥Ê¥Ã¥×¡¦¥ª¥Õ"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "¥¢¥¯¥·¥ç¥ó"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "¥¹¥È¥í¡¼¥¯"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "¤Ê¤·"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "·«¤êÊÖ¤·/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr ""
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr ""
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr ""
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, fuzzy, c-format
 msgid "New page created [%s]\n"
 msgstr "¿·µ¬¥Ú¡¼¥¸¤òºîÀ®¤·¤Þ¤·¤¿¡£[%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, fuzzy, c-format
 msgid "New Window created [%s]\n"
 msgstr "¿·µ¬¥¦¥£¥ó¥É¥¦¤òºîÀ®¤·¤Þ¤·¤¿¡£\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 #, fuzzy
 msgid "Failed to Save All"
 msgstr "¤¹¤Ù¤ÆÊݸ"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "¤¹¤Ù¤ÆÊݸ"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤Æ¤¤¤Þ¤¹¡£\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "¤Þ¤º¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Àþ¼ï¤òÊÔ½¸"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "¥Æ¥­¥¹¥ÈÊÔ½¸"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "¥¹¥í¥Ã¥È"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "¿§"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "²óž"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "ȿž"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "žÁ÷"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "·Ù¹ð:¥¹¥Ê¥Ã¥×¡¦¥ª¥Õ¤ÇžÁ÷¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "·Ù¹ð:¥¹¥Ê¥Ã¥×¤ò¥ª¥ó¤·¤Æ¤«¤éžÁ÷¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "·Ù¹ð:¥°¥ê¥Ã¥É¥µ¥¤¥º¤¬100¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -917,386 +926,389 @@ msgstr ""
 "·Ù¹ð:¸¶ÅÀ¤ØžÁ÷¤¹¤ë¤È¤­¤Ï¥¹¥Ê¥Ã¥×¤Î¥°¥ê¥Ã¥É¥µ¥¤¥º¤ò\n"
 "100¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "ÁȤ߹þ¤ß"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "ÁȤ߹þ¤ß²ò½ü"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "¹¹¿·"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "±£¤·¥Æ¥­¥¹¥Èɽ¼¨"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "ɽ¼¨¤¹¤ë"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "¥­¥å¡¼¹¹¿·"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 #, fuzzy
 msgid "Really revert page?"
 msgstr "Ì᤹"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "¥Ú¡¼¥¹¥È1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "¥Ð¥Ã¥Õ¥¡¤¬¶õ¤Ç¤¹¡£"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "¥³¥Ô¡¼1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "¥³¥Ô¡¼2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "¥³¥Ô¡¼3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "¥³¥Ô¡¼4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "¥³¥Ô¡¼5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "¥«¥Ã¥È1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "¥«¥Ã¥È2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "¥«¥Ã¥È3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "¥«¥Ã¥È4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "¥«¥Ã¥È5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "¥Ú¡¼¥¹¥È1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "¥Ú¡¼¥¹¥È 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "¥Ú¡¼¥¹¥È 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "¥Ú¡¼¥¹¥È 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "¥Ú¡¼¥¹¥È 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "ÉôÉÊ"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥È"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "¥½¡¼¥¹¸¡º÷Ãæ[%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "¥½¡¼¥¹¤¬¸«ÉÕ¤«¤ê¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "¥·¥ó¥Ü¥ë¸¡º÷Ãæ[%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
 msgstr ""
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "Nɽ¼¨"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "ɽ¼¨V"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "ɽ¼¨B"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "ɽ¼¨ÀÚÂؤ¨"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "µ¡Ç½¤·¤Ê¤¤¥á¥Ë¥å¡¼¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr ""
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr ""
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "¥°¥ê¥Ã¥É¡¦¥ª¥Õ\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "¥¹¥Ê¥Ã¥×¡¦¥ª¥Õ(Ãí°Õ!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "¥¹¥Ê¥Ã¥×¡¦¥ª¥ó\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "¥¹¥Ê¥Ã¥×¡¦¥ª¥Õ(Ãí°Õ!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "¥é¥Ð¡¼¥Ð¥ó¥É¡¦¥ª¥Õ\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "¥é¥Ð¡¼¥Ð¥ó¥É¡¦¥ª¥ó\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "ÉÔÌÀ¤Ê¥Ü¥Ã¥¯¥¹¤Î¼ïÎà(Åɤê¤Ä¤Ö¤·)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr ""
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr ""
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "ÉÔÌÀ¤Ê±ß¤Î¼ïÎà(Åɤê¤Ä¤Ö¤·)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "¥¹¥±¥Þ¥Á¥Ã¥¯¤òžÁ÷¤·¤Æ¤¤¤Þ¤¹¡£[%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr ""
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 #, fuzzy
 msgid "Object already locked\n"
 msgstr "¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤¹¤Ç¤Ë¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 #, fuzzy
 msgid "Object already unlocked\n"
 msgstr "¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤¹¤Ç¤Ë¥í¥Ã¥¯²ò½ü¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "±£¤·¥Æ¥­¥¹¥È¤¬É½¼¨¤µ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "±£¤·¥Æ¥­¥¹¥È¤¬Èóɽ¼¨¤Ë¤Ê¤ê¤Þ¤·¤¿¡£\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr ""
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, fuzzy, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "Êݸ¤Ç¤­¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, fuzzy, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Êݸ¤Ç¤­¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, fuzzy, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Êݸ¤Ç¤­¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr ""
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr ""
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr ""
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, fuzzy, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "̵¸ú¤Ê¥Ñ¥¹[%s]¤¬component-library¤Ë»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "ÉÔÌÀ¤Ê¥Ü¥Ã¥¯¥¹¤Î¼ïÎà(Åɤê¤Ä¤Ö¤·)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, fuzzy, c-format
 msgid "Failed to load picture: %s"
 msgstr "½é´ü²½scm¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¡£[%s]\n"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr ""
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr ""
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "¥¹¥í¥Ã¥È¥¢¥È¥ê¥Ó¥å¡¼¥È¤¬ÊѤǤ¹¡£\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "¥¹¥í¥Ã¥ÈÈֹ椬¤¢¤ê¤Þ¤»¤ó¡£\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "¤³¤ÎÉôÉʤ˥¹¥í¥Ã¥È¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "¥¹¥í¥Ã¥ÈÈֹ椬ÈϰϤò±Û¤¨¤Æ¤¤¤Þ¤¹¡£\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "¤ª¤Ã¤È! ¸ºß¤·¤Ê¤¤¥¹¥í¥Ã¥È¤òÊÔ½¸¤·¤è¤¦¤È¤·¤Þ¤·¤¿!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "¥¢¥ó¥É¥¥/¥ê¥É¥¥¤Ïrc¥Õ¥¡¥¤¥ë¤Ç̵¸ú¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1311,258 +1323,260 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "¥·¥ó¥°¥ë¥¢¥È¥ë¥Ó¥å¡¼¥È¥¨¥Ç¥£¥¿"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 #, fuzzy
 msgid "<b>Edit Attribute</b>"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÊÔ½¸"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 #, fuzzy
 msgid "<b>Add Attribute</b>"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "̾Á°:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "ÃÍ:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "ɽ¼¨"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "ÃͤΤßɽ¼¨"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "̾Á°¤Î¤ßɽ¼¨"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "̾Á°¤ÈÃͤòɽ¼¨"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 #, fuzzy
 msgid "<b>Attach Options</b>"
 msgstr "¥ª¥×¥·¥ç¥ó"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "¤¹¤Ù¤Æ"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "ÉôÉÊ"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "¥Í¥Ã¥È"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr ""
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 msgstr ""
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr ""
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr ""
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr ""
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 #, fuzzy
 msgid "Left to right"
 msgstr "Ãæ±û ±¦"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr ""
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 #, fuzzy
 msgid "File order"
 msgstr "±ß¥â¡¼¥É"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "¥ª¡¼¥È¥Ê¥ó¥Ð¡¼¥Æ¥­¥¹¥È"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr ""
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr ""
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 #, fuzzy
 msgid "Autonumber text in:"
 msgstr "¥ª¡¼¥È¥Ê¥ó¥Ð¡¼¥Æ¥­¥¹¥È"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr ""
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 #, fuzzy
 msgid "Selected objects"
 msgstr "¸ºß¤·¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤¬ÁªÂò¤µ¤ì¤Þ¤·¤¿!\n"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 #, fuzzy
 msgid "Current page"
 msgstr "¥Æ¥¹¥È¥·¡¼¥È"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 #, fuzzy
 msgid "Whole hierarchy"
 msgstr "³¬ÁØ"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 #, fuzzy
 msgid "<b>Options</b>"
 msgstr "¥ª¥×¥·¥ç¥ó"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 #, fuzzy
 msgid "Starting number:"
 msgstr "¥¹¥í¥Ã¥ÈÈÖ¹æÊÔ½¸"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr ""
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr ""
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "»ØÄê¤Ç¤­¤Ê¤¤¿§[%s]¤Ç¤¹!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "¹õ"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "Çò"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "»ØÄê¤Ç¤­¤Ê¤¤¿§[%s]¤Ç¤¹!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "»ØÄê¤Ç¤­¤Ê¤¤¿§[%s]¤Ç¤¹!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "̵¸ú¤Ê¿§¤Î»ØÄê¤Ç¤¹¡£ : %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "̵¸ú¤Ê¿§¤Î»ØÄê¤Ç¤¹¡£ : %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 #, fuzzy
 msgid "Filter:"
 msgstr "¥Õ¥£¥ë¥¿"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "̾Á°"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "ÃÍ"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr ""
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 #, fuzzy
 msgid "Embed component in schematic"
 msgstr "ÁȤ߹þ¤à"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr ""
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "ÉôÉÊÁªÂò..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr ""
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "¥é¥¤¥Ö¥é¥ê"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "¥×¥ì¥Ó¥å¡¼"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "¥Æ¥­¥¹¥È..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1572,193 +1586,196 @@ msgstr ""
 "¥¦¥£¥ó¥É¥¦Æâ¤Ç¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Æ¥­¥¹¥È¤òÇÛÃÖ¤·¤Þ¤¹¡£\n"
 "Ãæ¥Ü¥¿¥ó¤Ç²óž¤·¤Þ¤¹¡£"
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "²¼ º¸"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Ãæ±û º¸"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "¾å º¸"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "²¼ Ãæ±û"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Ãæ±û Ãæ±û"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "¾å Ãæ±û"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "²¼ ±¦"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Ãæ±û ±¦"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "¾å ±¦"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 #, fuzzy
 msgid "Edit Text Properties"
 msgstr "¥µ¥¤¥º"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 #, fuzzy
 msgid "<b>Text Content</b>"
 msgstr "¥ª¥×¥·¥ç¥ó"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 #, fuzzy
 msgid "<b>Text Properties</b>"
 msgstr "¥ª¥×¥·¥ç¥ó"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 #, fuzzy
 msgid "Color:"
 msgstr "¿§"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr ""
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 #, fuzzy
 msgid "Alignment:"
 msgstr "ÇÛÃÖ"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "¼ÂÀþ"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "ÅÀÀþ"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "ÇËÀþ"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Ãæ±û"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "¥Õ¥¡¥ó¥È¥à"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr ""
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Àþ¼ï¤ÈÉýÊÔ½¸"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 #, fuzzy
 msgid "Type:"
 msgstr "¼ïÎà"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 #, fuzzy
 msgid "Width:"
 msgstr "Éý"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 #, fuzzy
 msgid "Dash Length:"
 msgstr "ÇËÀþ¤ÎŤµ"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 #, fuzzy
 msgid "Dash Space:"
 msgstr "ÇËÀþ¤Î´Ö³Ö"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "¶õƶ"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Åɤê¤Ä¤Ö¤·"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "¥á¥Ã¥·¥å"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "¥Ï¥Ã¥Á"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Åɤê¤Ä¤Ö¤·¤òÊÔ½¸"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 #, fuzzy
 msgid "Fill Type:"
 msgstr "Åɤê¤Ä¤Ö¤·¼ïÎà"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 #, fuzzy
 msgid "Line Width:"
 msgstr "Àþ¤ÎÉý"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 #, fuzzy
 msgid "Angle 1:"
 msgstr "³ÑÅÙ1"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 #, fuzzy
 msgid "Pitch 1:"
 msgstr "¥Ô¥Ã¥Á1"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 #, fuzzy
 msgid "Angle 2:"
 msgstr "³ÑÅÙ2"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 #, fuzzy
 msgid "Pitch 2:"
 msgstr "¥Ô¥Ã¥Á2"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "±ß¸Ì¥Ñ¥é¥á¡¼¥¿"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 #, fuzzy
 msgid "Start Angle:"
 msgstr "³«»Ï³Ñ"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 #, fuzzy
 msgid "Degrees of Sweep:"
 msgstr "¥¹¥¤¡¼¥×³Ñ"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1766,49 +1783,49 @@ msgstr ""
 "žÁ÷¤·¤Þ¤¹¤«?\n"
 "(0¤Ç¸¶ÅÀ)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "¥Æ¥­¥¹¥È¥µ¥¤¥º"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 #, fuzzy
 msgid "Enter new text size:"
 msgstr "¥Æ¥­¥¹¥È¥µ¥¤¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 #, fuzzy
 msgid "Snap Size"
 msgstr "¥¹¥Ê¥Ã¥×¥°¥ê¥Ã¥É"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 #, fuzzy
 msgid "Enter new snap grid spacing:"
 msgstr "¥°¥ê¥Ã¥É¥µ¥¤¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "¥¹¥í¥Ã¥ÈÈÖ¹æÊÔ½¸"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 #, fuzzy
 msgid "Edit slot number:"
 msgstr "¥¹¥í¥Ã¥ÈÈÖ¹æÊÔ½¸"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "gschem¤Ë¤Ä¤¤¤Æ..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 #, fuzzy
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "gEDA : GPL Electronic Design Automation"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, fuzzy, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "gschem¥Ð¡¼¥¸¥ç¥ó%s%s.%s"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 #, fuzzy
 msgid ""
 "Written by:\n"
@@ -1821,160 +1838,160 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "¤ª¤è¤ÓÂçÀª¤Î¿Í¡¹(¥Õ¥¡¥¤¥ëAUTHORS»²¾È)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "ºÂɸ"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "¥¹¥¯¥ê¡¼¥ó"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "¥ï¡¼¥ë¥É"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "¥Æ¥­¥¹¥È"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "ÁªÂò"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "³ÈÂç"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "¥¢¥¯¥·¥ç¥ó"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr ""
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "¿§ÊÔ½¸"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr ""
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 #, fuzzy
 msgid "Function"
 msgstr "¥¢¥¯¥·¥ç¥ó"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 #, fuzzy
 msgid "Keystroke(s)"
 msgstr "´Ø¿ô : ¥­¡¼¥¹¥È¥í¡¼¥¯"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 #, fuzzy
 msgid "Find Text"
 msgstr "¥Æ¥­¥¹¥È¸¡º÷"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "¸¡º÷¥Æ¥­¥¹¥È"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "²¼¤Î³¬Áؤ⸡º÷"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 #, fuzzy
 msgid "Hide Text"
 msgstr "¥Æ¥­¥¹¥È¤ò±£¤¹"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "±£¤·¥Æ¥­¥¹¥È"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 #, fuzzy
 msgid "Show Text"
 msgstr "¥Æ¥­¥¹¥Èɽ¼¨"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "¥Æ¥­¥¹¥È"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr ""
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr ""
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr ""
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1985,55 +2002,55 @@ msgid ""
 "The value cannot start with a space."
 msgstr ""
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 #, fuzzy
 msgid "Invalid Attribute"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Àþ¼ï"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "¥¢¥¯¥·¥ç¥ó"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 #, fuzzy
 msgid "Schematics"
 msgstr "sch - ¥¹¥±¥Þ¥Á¥Ã¥¯"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 #, fuzzy
 msgid "Symbols"
 msgstr "sym - ¥·¥ó¥Ü¥ë"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 #, fuzzy
 msgid "Schematics and symbols"
 msgstr "sym/sch - ¥¹¥±¥Þ¥Á¥Ã¥¯¤È¥·¥ó¥Ü¥ë"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 #, fuzzy
 msgid "All files"
 msgstr "* - ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "³«¤¯..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 #, fuzzy
 msgid "Save as..."
 msgstr "ÊÌ̾¤ÇÊݸ..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2041,30 +2058,30 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 #, fuzzy
 msgid "Overwrite file?"
 msgstr "¿·µ¬¥Õ¥¡¥¤¥ë"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr ""
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr ""
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr ""
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2073,330 +2090,330 @@ msgid ""
 "%s.\n"
 msgstr ""
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "¥«¥é¡¼¥¤¥á¡¼¥¸¤ò½ÐÎϤ·¤Þ¤·¤¿¡£[%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Çò¹õ¥¤¥á¡¼¥¸¤ò½ÐÎϤ·¤Þ¤·¤¿¡£[%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr ""
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 #, fuzzy
 msgid "Width x Height"
 msgstr "Éý x ¹â¤µ"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 #, fuzzy
 msgid "Image type"
 msgstr "¥Ú¡¼¥¸"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "¥¹¥Æ¡¼¥¿¥¹"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 #, fuzzy
 msgid "/Add Net"
 msgstr "¥Æ¥­¥¹¥ÈÄɲÃ..."
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 #, fuzzy
 msgid "/Add Attribute..."
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 #, fuzzy
 msgid "/Add Component..."
 msgstr "ÉôÉÊ..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 #, fuzzy
 msgid "/Add Bus"
 msgstr "¥Æ¥­¥¹¥ÈÄɲÃ..."
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 #, fuzzy
 msgid "/Add Text"
 msgstr "¥Æ¥­¥¹¥ÈÄɲÃ..."
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 #, fuzzy
 msgid "/Zoom In"
 msgstr "³ÈÂç"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 #, fuzzy
 msgid "/Zoom Out"
 msgstr "½Ì¾®"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 #, fuzzy
 msgid "/Zoom Box"
 msgstr "³ÈÂç"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 #, fuzzy
 msgid "/Zoom Extents"
 msgstr "³ÈÂçÈÏ°Ï"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 #, fuzzy
 msgid "/Select"
 msgstr "ÁªÂò"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 #, fuzzy
 msgid "/Edit..."
 msgstr "ÊÔ½¸..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Àþ¼ï¤òÊÔ½¸"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 #, fuzzy
 msgid "/Copy"
 msgstr "¥³¥Ô¡¼"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 #, fuzzy
 msgid "/Move"
 msgstr "°ÜÆ°"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 #, fuzzy
 msgid "/Delete"
 msgstr "ºï½ü"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 #, fuzzy
 msgid "/Down Schematic"
 msgstr "¥¹¥±¥Þ¥Á¥Ã¥¯¤Ø"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 #, fuzzy
 msgid "/Down Symbol"
 msgstr "¥·¥ó¥Ü¥ë¤Ø"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 #, fuzzy
 msgid "/Up"
 msgstr "¾å¤Ø"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr ""
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr ""
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, fuzzy, c-format
 msgid "Couldn't open file %s\n"
 msgstr "¤ª¤Ã¤È¡¢¥Ç¥£¥ì¥¯¥È¥ê¤¬³«¤±¤Þ¤»¤ó: %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "¥¯¥ê¥¢"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr ""
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "ÃͤΤßɽ¼¨"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "̾Á°¤Î¤ßɽ¼¨"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr ""
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÊÔ½¸"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "ɽ¼¨"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "̾Á°"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "ÃÍ"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 #, fuzzy
 msgid "Add Attribute"
 msgstr "¥¢¥È¥ê¥Ó¥å¡¼¥ÈÄɲÃ/ÊÔ½¸"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "ÇË´þ"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "¥Ú¡¼¥¸¥Þ¥Í¡¼¥¸¥ã"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "¥Õ¥¡¥¤¥ë̾"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 #, fuzzy
 msgid "Changed"
 msgstr "Êѹ¹"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr ""
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "¥Ð¥Ã¥Õ¥¡"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 #, fuzzy
 msgid "Select PostScript Filename..."
 msgstr "̾Á°¤òÉÕ¤±¤ÆÊݸ..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr ""
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr ""
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "¸½ºß¤Î¥¦¥£¥ó¥É¥¦"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "¥é¥ó¥É¥¹¥±¡¼¥×"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "¥Ý¡¼¥È¥ì¥¤¥È"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr ""
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 #, fuzzy
 msgid "Output paper size:"
 msgstr "½ÐÎÏÍѻ極¥¤¥º"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 #, fuzzy
 msgid "Orientation:"
 msgstr "¥ª¥ê¥¨¥ó¥Æ¡¼¥·¥ç¥ó"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 #, fuzzy
 msgid "Destination"
 msgstr "¥É¥­¥å¥á¥ó¥Èɽ¼¨/¸¡º÷"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 #, fuzzy
 msgid "File:"
 msgstr "¥Õ¥¡¥¤¥ë"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr ""
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr ""
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "¸½ºß¤Î¥¹¥±¥Þ¥Á¥Ã¥¯¤ò°õºþ¤Ç¤­¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
 "Check the log window for more information"
 msgstr ""
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "¸½ºß¤Î¥¹¥±¥Þ¥Á¥Ã¥¯¤ò°õºþ¤·¤Þ¤·¤¿¡£[%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr ""
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "¿·µ¬¥Õ¥¡¥¤¥ë"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "³«¤¯"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Êݸ"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "¥Õ¥¡¥¤¥ë¤òÊݸ"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "¥¢¥ó¥É¥¥"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "¥ê¥É¥¥"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2408,7 +2425,7 @@ msgstr ""
 "¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢ÇÛÃÖ¤·¤Þ¤¹¡£\n"
 "±¦¥Ü¥¿¥ó¤Ç¥­¥ã¥ó¥»¥ë¤·¤Þ¤¹¡£"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2416,7 +2433,7 @@ msgstr ""
 "¥Í¥Ã¥ÈÄɲå⡼¥É\n"
 "±¦¥Ü¥¿¥ó¤Ç¥­¥ã¥ó¥»¥ë"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2424,88 +2441,88 @@ msgstr ""
 "¥Ð¥¹Äɲå⡼¥É\n"
 "±¦¥Ü¥¿¥ó¤Ç¥­¥ã¥ó¥»¥ë"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "¥Æ¥­¥¹¥ÈÄɲÃ..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "ÁªÂò"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "ÁªÂò¥â¡¼¥É"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "¥Ô¥Ã¥¯"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "·«¤êÊÖ¤·/¤Ê¤·"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "¥á¥Ë¥å¡¼/¥­¥ã¥ó¥»¥ë"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "¥Ñ¥ó/¥­¥ã¥ó¥»¥ë"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "¥¹¥±¥Þ¥Á¥Ã¥¯¤òÆɤ߹þ¤ó¤Ç¤¤¤Þ¤¹¡£[%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 #, fuzzy
 msgid "Failed to load file"
 msgstr "½é´ü²½scm¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¡£[%s]\n"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, fuzzy, c-format
 msgid "New file [%s]\n"
 msgstr "¿·µ¬¥Õ¥¡¥¤¥ë"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, fuzzy, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Êݸ¤Ç¤­¤Þ¤»¤ó¡£[%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "ÊݸÃæ¤Ë¥¨¥é¡¼È¯À¸"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, fuzzy, c-format
 msgid "Saved as [%s]\n"
 msgstr "[%s]¤È¤·¤ÆÊݸ¤·¤Þ¤·¤¿¡£\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Êݸ¤·¤Þ¤·¤¿¡£[%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Êݸ¤·¤Þ¤·¤¿¡£"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "¥Ú¡¼¥¸¤òÇË´þ¤·¤Æ¤¤¤Þ¤¹¡£[%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "ÊĤ¸¤Æ¤¤¤Þ¤¹¡£[%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 #, fuzzy
 msgid "gEDA Schematic Editor"
 msgstr "¥¹¥±¥Þ¥Á¥Ã¥¯¤Ø"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 
diff --git a/gschem/po/nl.po b/gschem/po/nl.po
index 6c0ecf7..cf6ecfd 100644
--- a/gschem/po/nl.po
+++ b/gschem/po/nl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: geda-gschem\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2009-01-02 07:40+0100\n"
 "Last-Translator: Bert Timmerman <bert.timmerman@xxxxxxxxx>\n"
 "Language-Team: geda-dev@xxxxxxxxxxxxxx\n"
@@ -14,608 +14,615 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Bestand"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nieuw venster"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nieuwe pagina"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Open pagina..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Sluit pagina"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Terughalen pagina"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Opslaan pagina"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Opslaan Pagina Als..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Alles Opslaan"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Afdrukken..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 msgid "Write image..."
 msgstr "Schrijf Afbeelding..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 msgid "Recent files"
 msgstr "Recente bestanden"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Script Uitvoeren..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Sluit venster"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Afsluiten"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Bewerk"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Ongedaan maken"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Herstel"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Selectie Mode"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Knip 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Kopieer"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Plak 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Bewerk..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Bewerk Tekst..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Kopieer Mode"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Meervoudige Kopieer Mode"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Verplaats Mode"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Verwijder"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Rotatie 90 Mode"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Spiegel Mode"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "Slot..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Kleur..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Vergrendel"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Ontgrendel"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Lijn Dikte & Type..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Arcering Type..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Verplaats Symbool..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Component/Afbeelding Insluiten"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Component/Afbeelding Uitsluiten"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Hernieuw Component"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Zichtbaar/Verborgen Onzichtbare Tekst"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Maak Onzichtbare Tekst Zichtbaar"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Buffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Kopieer naar 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Kopieer naar 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Kopieer naar 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Kopieer naar 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Kopieer naar 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Knip naar 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Knip naar 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Knip naar 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Knip naar 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Knip naar 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Plak vanuit 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Plak vanuit 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Plak vanuit 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Plak vanuit 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Plak vanuit 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Toon"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Hertekenen"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Schuif"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Vergroot Venster"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Toon Alles"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Vergroot"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Verklein"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Toon Maximaal"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Pagina"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Manager..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Volgende"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Vorige"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Nieuw"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Terughalen"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Sluit"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Wegdoen"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Toevoegen"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Component..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Draad"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Bus"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Attribuut..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Tekst..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Lijn"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Rechthoek"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Cirkel"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Boog"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pen"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Afbeelding..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hierarchie"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Naar Schema"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Naar Symbool"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Omhoog"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentatie"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Attributen"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Vastmaken"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Losmaken"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Toon Waarde"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Toon Naam"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Toon Beide"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Schakel Zichtbaarheid"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Vind Specifieke Tekst..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Verberg Specifike Tekst..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Toon Specifieke Tekst..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Automatisch Tekst Nummeren..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Opties"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Tekst Hoogte..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Schakel Snap Aan/Uit"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Snap Grid Afstand..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 msgid "Scale up Grid Spacing"
 msgstr "Omhoog schalen Grid Afstand"
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 msgid "Scale down Grid Spacing"
 msgstr "Omlaag schalen Snap Grid Afstand"
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Schakel Contour/Rechthoek"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Schakel Draad Elastiekband"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Toon Logboek venster..."
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Toon Coordinaten venster..."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Help"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 msgid "Manual"
 msgstr "Handleiding"
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 msgid "gEDA Documentation"
 msgstr "gEDA Documentatie"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr "gschem FAQ"
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 msgid "Component Documentation"
 msgstr "Component Documentatie"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr "Over gschem"
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 msgid "Hotkeys"
 msgstr "Sneltoets"
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Vergroting te klein! Kan niet verder vergroten.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Kan niet afsplitsen\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Kan %s niet aanroepen\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Documentatie opdrachten niet ondersteund bij MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Ongeldige vergrotingsfactor [%d] overgedragen aan %s\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Ongeldige waarde [%d] overgedragen aan text-size\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Ongeldige waarde [%f] overgedragen aan postscript-font-scale\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Ongeldige waarde [%d] overgedragen aan snap-size\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Ongeldige num niveaus [%d] overgedragen naar undo-levels\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Ongeldige afmeting [%d] overgedragen aan bus-ripper-size\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Ongeldige beeldpunt afmeting [%d] overgedragen aan grid-dot-size\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr ""
 "Ongeldige beeldpunt ruimte [%d] overgedragen aan grid-fixed-threshold\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr ""
 "Ongeldige beeldpunt ruimte [%d] overgedragen aan grid-fixed-threshold\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Ongeldige offset waarde [%d] overgedragen aan add-attribute-offset\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "Ongeldig aantal seconden [%d] overgedragen naar auto-save-interval\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Ongeldige versterking [%d] overgedragen aan mousepan-gain\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Ongeldige versterking [%d] overgedragen aan keyboardpan-gain\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr ""
 "Ongeldig aantal beeldpunten [%d] overgedragen aan select-slack-pixels\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Ongeldige versterking [%d] overgedragen aan zoom-gain\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "Ongeldig aantal stappen [%d] scrollpan-steps\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem versie %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -623,16 +630,14 @@ msgstr ""
 "gEDA/gschem komt ABSOLUUT ZONDER GARANTIE; zie het COPYING bestand voor meer "
 "informatie.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "Dit is vrije software, en je wordt aangemoedigt dit te herdistribueren onder "
 "bepaalde\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -640,17 +645,17 @@ msgstr ""
 "condities; zie het COPYING bestand voor meer informatie.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "Dit is de MINGW32 versie.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Huidige locale instellingen: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -658,244 +663,248 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Kan init scm bestand [%s]niet vinden\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Lees init scm bestand [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Fout bij het lezen van het init scm bestand [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Scheme bestandenmap is NIET ingesteld!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Bezig met uitvoeren van guile script [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 msgid "Accelerator String"
 msgstr ""
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Onbekend einde voor lijn (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Onbekend type voor lijn (%d)!\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Component Mode"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Tekst Mode"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Rotatie Mode"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Schuif Mode"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Plak %d Mode"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 msgid "Magnetic Net Mode"
 msgstr "Magnetische Net Mode"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Net Mode"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Bus Mode"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Lijn Mode"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Rechthoek Mode"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Afbeelding Mode"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Cirkel Mode"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Boog Mode"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Pen Mode"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Verplaats"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Meervoudig Kopieren"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Zichtbaar Verborgen"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Snap Aan"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Aktie"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Slag"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "geen"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Herhaal/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr "UIT"
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr "Raster(%s, %s)"
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentatie voor [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Nieuwe pagina gemaakt [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, c-format
 msgid "New Window created [%s]\n"
 msgstr "Nieuw venster gemaakt [%s]\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Fout tijdens Alles Opslaan"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Alles Opgeslagen"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Sluit Venster\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Selecteer voorwerpen eerst"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Bewerk Lijn Type"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Bewerk Tekst"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Kleur"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Roteer"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Spiegel"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Verplaats"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "WAARSCHUWING: Niet verplaatsen met snap uit!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "WAARSCHUWING: Zet snap aan en vervolg de verplaatsing.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "WAARSCHUWING: Snap grid waarde is niet gelijk aan 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -903,144 +912,146 @@ msgstr ""
 "WAARSCHUWING: Als je een symbool naar de oorsprong verschuift, dan moet de "
 "snap grip waarde op 100 gezet worden\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Insluiten"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Uitsluiten"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Vernieuw"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "ZichtbaarVerborgen"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "MaakZichtbaar"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Vernieuw aanwijzing"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Echt Terughalen pagina?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Plak vanuit 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Maak buffer leeg"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Kopieer 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Kopieer 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Kopieer 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Kopieer 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Kopieer 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Knip 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Knip 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Knip 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Knip 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Knip 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Plak 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Plak 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Plak 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Plak 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Plak 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Component"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Attribuut"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Zoek naar bron [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Kan bron [%s] niet vinden\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Zoek naar symbool [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr "Kan geen schema's vinden boven het huidige schema!\n"
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
@@ -1048,244 +1059,245 @@ msgstr ""
 "Dit commando haalt de component documentatie van het web, maar er is geen "
 "component geselecteerd"
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "ToonN"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "ToonW"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "ToonB"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "SchakelZichtbaarheid"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Sorry, maar dit is een niet werkende menu optie\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Aktie terugkoppel mode is ingesteld op OUTLINE\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Aktie terugkoppel mode is ingesteld op BOUNDINGBOX.\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Grid UIT\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Snap UIT (PAS OP!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Snap AAN\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Snap UIT (PAS OP!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Elastiek band UIT\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Elastiek band AAN\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr "magnetische net mode: AAN\n"
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr "magnetische net mode: UIT\n"
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Onbekend type voor rechthoek (arcering)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Ontving een ongeldig buffernummer [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Ontving ereen die ongeldig is in [o_bus_draw_xor_single]\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Onbekend type voor cirkel (arcering)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Vertaal schema [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Ontving een onverwachte NULL in o_edit\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 msgid "Object already locked\n"
 msgstr "Object reeds vergrendeld\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 msgid "Object already unlocked\n"
 msgstr "Object reeds ontgrendeld\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Verborgen tekst is nu zichtbaar\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Verborgen tekst is nu onzichtbaar\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr "Kan symbool [%s] niet in bibliotheek vinden. Vernieuwen faalde.\n"
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr "o_autosave_backups: Kan de echte bestandsnaam van %s niet krijgen."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "Voorgaande reserve bestand [%s] kan NIET op lezen-schrijven ingesteld "
 "worden\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Reserve bestand [%s] kan NIET op alleen-lezen ingesteld worden\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Reserve bestand [%s] kan NIET opgeslagen worden\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "FOUT: NULL object in o_move_end!\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr "OH! probeerde er een te vinden, maar heb 'em niet gevonden!\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Ontving een niet lijn object in o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr "Ontving er een die ongeldig is in o_net_draw_xor_single\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr "Waarschuwing: begin van net niet op raster coordinaat\n"
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr "Waarschuwing: einde van net niet op raster coordinaat\n"
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 "Probeerde meer dan twee busrippers toe te voegen. Interne gschem fout.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr ""
 "Bus ripper symbool [%s] niet gevonden in een van de component bibliotheken\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Onbekend type voor rechthoek (arcering)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Fout bij het lezen van afbeelding: %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Afbeelding"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "FOUT: NULL object!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Slot attribuut misvormd\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "numslots attribuut ontbreekt\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Slots niet toegestaan voor deze component\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Nieuw slotnummer overschrijdt de limiet\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Hmmm, je probeerde een slot te bewerken op iets dat niet bestaat!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Ongedaan/Opnieuw doen uitgeschakeld in rc bestand\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1309,68 +1321,69 @@ msgstr ""
 "  -h            Help; deze mededeling\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr "Kreeg ongeldige toon optie; standaardwaarde is toon beide\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Enkelvoudige Attribuut Bewerking"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 msgid "<b>Edit Attribute</b>"
 msgstr "<b>Bewerk Attribuut</b>"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 msgid "<b>Add Attribute</b>"
 msgstr "<b>Plaats Attribuut</b>"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Naam:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Waarde:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Zichtbaar"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Toon Alleen Waarde"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Toon Alleen Naam"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Toon Naam & Waarde"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 msgid "<b>Attach Options</b>"
 msgstr "<b>Opties Vastmaken</b>"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Alle"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Componenten"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Draden"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr "Vervang bestaande attributen"
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
@@ -1378,179 +1391,180 @@ msgstr ""
 "geslotte objecten zonder slot attribuut kunnen een probleem geven bij het "
 "automatisch nummeren van slots\n"
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 "een dubbel slot kan een probleem geven: [symbolname=%s, number=%d, slot=%d]\n"
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr "Geen zoektekst gegeven in autonumber text.\n"
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr "Geen '*' of '?' gegeven aan het einden van de autonummer tekst.\n"
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 msgid "Diagonal"
 msgstr "Diagonaal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr "Van boven naar beneden"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr "Van beneden naar boven"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Left to right"
 msgstr "Van links naar rechts"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr "Van rechts naar links"
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 msgid "File order"
 msgstr "Bestand volgorde"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Automatisch tekst nummeren"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr "<b>Omvang</b>"
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 msgid "Search for:"
 msgstr "Zoek naar:"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 msgid "Autonumber text in:"
 msgstr "Automatisch tekst nummeren in:"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr "Sla nummers over gevonden in:"
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 msgid "Selected objects"
 msgstr "Geselecteerde objecten"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 msgid "Current page"
 msgstr "Huidig blad"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 msgid "Whole hierarchy"
 msgstr "Hele hierarchie"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr "Overschrijven van bestaande nummers"
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 msgid "<b>Options</b>"
 msgstr "<b>Opties</b>"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 msgid "Starting number:"
 msgstr "Start nummer:"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 msgid "Sort order:"
 msgstr "Sorteer volgorde:"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr "Verwijder nummers"
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr "Automatisch slotten"
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Kan de kleur %s niet toewijzen!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "zwart"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "wit"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Kan de kleur %s niet toewijzen!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Kan de kleur %s niet toewijzen!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Probeerde een ongeldige kleur te verkrijgen: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Probeerde een ongeldige kleur te verkrijgen: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 msgid "Filter:"
 msgstr "Filter:"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Naam"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Waarde"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Normaal gedrag - referentie component"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Component insluiten in schema"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Invoegen component als individuele objecten"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Selecteer Component..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr "In gebruik"
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Bibliotheken"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Vooraf zien"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Tekst Ingeven..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1560,176 +1574,179 @@ msgstr ""
 "verplaats cursor in het venster, klik om tekst te plaatsen.\n"
 "Middelste muisknop gebruiken om te plaatsen"
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Onder Links"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Midden Links"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Boven Links"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Onder Midden"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Midden Midden"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Boven Midden"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Onder Rechts"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Midden Rechts"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Boven Rechts"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 msgid "Edit Text Properties"
 msgstr "Bewerk Tekst Eigenschappen"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 msgid "<b>Text Content</b>"
 msgstr "<b>Tekst Inhoud</b>"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 msgid "<b>Text Properties</b>"
 msgstr "<b>Tekst Eigenschappen</b>"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 msgid "Color:"
 msgstr "Kleur:"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr "Grootte:"
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 msgid "Alignment:"
 msgstr "Uitlijning:"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Getrokken lijn"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Gestippeld"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Gestreept"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Hart"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Begrenzing"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*onveranderd*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Bewerk Lijn Dikte & Type"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 msgid "Type:"
 msgstr "Type:"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 msgid "Width:"
 msgstr "Breedte:"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 msgid "Dash Length:"
 msgstr "Lijn Streeplengte:"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 msgid "Dash Space:"
 msgstr "Lijn Tussenruimte:"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Hol"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Gevuld"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Maas"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Arcering"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Bewerk Arcering Type"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 msgid "Fill Type:"
 msgstr "Arcering Type:"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 msgid "Line Width:"
 msgstr "Lijn Dikte:"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 msgid "Angle 1:"
 msgstr "Hoek 1:"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 msgid "Pitch 1:"
 msgstr "Steek 1:"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 msgid "Angle 2:"
 msgstr "Hoek 2:"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 msgid "Pitch 2:"
 msgstr "Steek 2:"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Boog parameters"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 msgid "Start Angle:"
 msgstr "Start Hoek:"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 msgid "Degrees of Sweep:"
 msgstr "Doorlopen Hoek:"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1737,44 +1754,44 @@ msgstr ""
 "Offset van de verplaatsing?\n"
 "(0 voor oorsprong)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Tekst Hoogte"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 msgid "Enter new text size:"
 msgstr "Voer nieuwe tekstgrootte in:"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 msgid "Snap Size"
 msgstr "Snap Grootte"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 msgid "Enter new snap grid spacing:"
 msgstr "Voer nieuwe snap grid waarde in:"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Bewerk slot nummer"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 msgid "Edit slot number:"
 msgstr "Bewerk slot nummer:"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Omtrent..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "<b>gEDA: GPL Elektronische Ontwerp Automatisering</b>"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "<b>gschem versie %s%s.%s</b>"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 msgid ""
 "Written by:\n"
 "Ales Hvezda\n"
@@ -1786,156 +1803,156 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "En vele anderen (zie het AUTHORS bestand)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coord."
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Scherm"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Wereld"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Plaats Attribuut"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Tekst"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "Selecteer"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Vergroot Venster"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Funktie"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "FOUT: NULL object in color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Kleur Bewerken"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr "Object kleur:"
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 msgid "Function"
 msgstr "Funktie"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 msgid "Keystroke(s)"
 msgstr "Toetsaanslag(en)"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 msgid "Find Text"
 msgstr "Vind tekst"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Te vinden tekst:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "afdalen in hierarchie"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 msgid "Hide Text"
 msgstr "Verberg tekst"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Verberg tekst beginnend met:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 msgid "Show Text"
 msgstr "Toon tekst"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Toon tekst beginnend met:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr "S_electeer de schema's die je op wil slaan:"
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr "Wijzigingen in schema \"%s\" opslaan voor het afsluiten?"
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 "Er zijn %d schema's met wijzigingen. Wijzigingen opslaan voor het afsluiten?"
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr "Als je niet opslaat, verlies je alle wijzigingen definitief."
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr "Afsluiten zonder opslaan"
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1953,49 +1970,49 @@ msgstr ""
 "De naam mag niet eindigen met een spatie.\n"
 "De waarde mag niet met een spatie beginnen."
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 msgid "Invalid Attribute"
 msgstr "Ongeldig Attribuut"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Pen Mode"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Funktie"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Schema's"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Symbolen"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Schema's en symbolen"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Alle bestanden"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Open..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 msgid "Save as..."
 msgstr "Opslaan Als..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2006,29 +2023,29 @@ msgstr ""
 "\n"
 "Wil je het overschrijven ?"
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 msgid "Overwrite file?"
 msgstr "Overschrijf bestand ?"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr "Opslaan afgebroken op verzoek van de gebruiker\n"
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr "Encapsulated Postscript"
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: Kan EPS bestand %s niet schrijven.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: Kan %s bestand %s niet schrijven.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2042,263 +2059,263 @@ msgstr ""
 "\n"
 "%s.\n"
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Schreef kleuren afbeelding naar [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Schreef zwart/wit afbeelding naar [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr "x_image_lowlevel: Kan geen pixbuf krijgen van gschem's venster.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 msgid "Width x Height"
 msgstr "Breedte x Hoogte"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr "Afbeelding type"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr "** Ongeldige UTF-8 in logboek bericht. Zie stderr of gschem.log.\n"
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Status"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Plaats Draad"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Plaats Attribuut..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Plaats Component..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Plaats Bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Plaats Tekst"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Vergroot"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Verklein"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Vergroot Venster"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Toon Alles"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Selecteer"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Bewerk..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Bewerk Lijn Type"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Kopieer"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Verplaats"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Verwijder"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Naar Schema"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Naar Symbool"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Omhoog"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr ""
 "Probeerde de gevoeligheid in te stellen op een niet bestaand menu_item '%s'\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "Popup_menu_item_factory bestaat niet!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Probeerde de gevoeligheid in te stellen op een niet bestaand popup "
 "menu_item\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Kan bestand %s niet openen\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 msgid "Clear"
 msgstr "Wis"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Attributen met een lege naam zijn niet toegestaan. Geef een naam."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Toon alleen Waarde"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Toon alleen Naam"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Dupliceer"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Bewerk Attribuut"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Zichtbaar?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
 # GtkTreeViewColumn
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "W"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Plaats Attribuut"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Plaats Attribuut"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Pagina Wegdoen"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Pagina Manager"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Bestandsnaam"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Veranderd"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Klik met rechts op de bestandnaam voor meer opties..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Plak Buffer"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 msgid "Select PostScript Filename..."
 msgstr "Selecteer Postscript bestandsnaam..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Alles met kantlijnen"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Alles zonder kantlijnen"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Huidige Venster"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Liggend"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Staand"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "Instellingen"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 msgid "Output paper size:"
 msgstr "Uitvoer papier afmeting:"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 msgid "Orientation:"
 msgstr "Orientatie:"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Bestemming"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 msgid "File:"
 msgstr "Bestand:"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr "Commando:"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Geen afdruk bestemming opgegeven\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Kan huidige schema niet afdrukken op [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
@@ -2307,45 +2324,45 @@ msgstr ""
 "Fout bij afdrukken naar bestand '%s'\n"
 "Controleer het log venster voor meer informatie"
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Huidig schema afgedrukt op [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Kan gc niet toewijzen\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Nieuw bestand"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Open"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Open bestand..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Opslaan"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Opslaan bestand"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Maak laatste bewerking ongedaan"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Herstel de laatste ongedaanmaking"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2357,7 +2374,7 @@ msgstr ""
 "muisindicator in het hoofdvensterklik om component te plaatsen\n"
 "Rechter muisknop om af te breken"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2365,7 +2382,7 @@ msgstr ""
 "Plaats draden modus\n"
 "Rechter muisknop om af te breken"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2373,86 +2390,86 @@ msgstr ""
 "Plaats bussen modus\n"
 "Rechter muisknop om af te breken"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Plaats een tekst..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Selecteer"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Selectie mode"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Pak"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Herhaal/geen"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Afbreken"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Schuif/Afbreken"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Bezig met laden van schema [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 msgid "Failed to load file"
 msgstr "Fout bij het lezen van bestand"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, c-format
 msgid "New file [%s]\n"
 msgstr "Nieuw bestand [%s]\n"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Pagina [%s] kan NIET opgeslagen worden\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Fout tijdens het opslaan"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, c-format
 msgid "Saved as [%s]\n"
 msgstr "Opgeslagen Als [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Opgeslagen [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Opgeslagen"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Pagina [%s] wegdoen\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Sluiten [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 msgid "gEDA Schematic Editor"
 msgstr "gEDA schema bewerking"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr "Creer en bewerk elektrische schema's en symbolen met gschem"
 
diff --git a/gschem/po/pt_BR.po b/gschem/po/pt_BR.po
index 65075d6..11a3170 100644
--- a/gschem/po/pt_BR.po
+++ b/gschem/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pt_BR\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2008-12-20 14:24+0000\n"
 "Last-Translator: \n"
 "Language-Team:  <pt@xxxxxx>\n"
@@ -16,617 +16,624 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.10.2\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Arquivo"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Nova Janela"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Nova Página"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Abrir Página..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Fechar Página"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Reverter Página"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "Salvar"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "Salvar Como..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "Salvar Tudo"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Imprimir..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 #, fuzzy
 msgid "Write image..."
 msgstr "Salvar Imagem..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 #, fuzzy
 msgid "Recent files"
 msgstr "Novo arquivo"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Script..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Fechando Janela"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Sair"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Editar"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Desfazer"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Refazer"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Modo de Seleção"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Cortar para 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Copiar"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Colar de 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Editar..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Editar Texto..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Modo de Cópia"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Modo de Múltipla Cópia"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Modo de Movimentação"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "Apagar"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Modo de Rotação"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Modo de espelho"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr ""
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "Cor..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Bloquear"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "Desbloquear"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Largura/Tipo de Linha..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Preenchimento..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Transladar..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Embutir Componente/Imagem"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Desembutir Componente/Imagem"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Atualizar Componente"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Exibir/Ocultar textos ocultos"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "Tornar todos textos visíveis"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Buffer"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Copiar para 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Copiar para 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Copiar para 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Copiar para 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Copiar para 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Cortar para 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Cortar para 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Cortar para 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Cortar para 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Cortar para 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Colar de 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Colar de 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Colar de 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Colar de 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Colar de 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Exibir"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Redesenhar"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "Pan"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Caixa de Zoom"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Zoom desenho"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "Zoom maior"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "Zoom menor"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Zoom total"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "Página"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Gerenciador..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "Próxima"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Anterior"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Novo"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Reverter"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Fechar"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Descartar"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Adicionar"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Componente..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Conexão"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Barramento"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Atributo..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "Texto..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Linha"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Caixa"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Círculo"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Arco"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Pino"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Imagem..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Hierarquia"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Descer ao Esquemático"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Descer ao Símbolo"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Subir"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Documentação"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Atributos"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Anexar"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Desanexar"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Mostra Valor"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Mostra Nome"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Mostrar Ambos"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Comuta Visibilidade"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Procurar texto..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "Ocultar Texto..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Exibir Texto..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Autonumerar..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Opções"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "Tamanho do Texto..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Liga/Desliga Agarre"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Grade de Agarre..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 #, fuzzy
 msgid "Scale up Grid Spacing"
 msgstr "Grade de Agarre..."
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 #, fuzzy
 msgid "Scale down Grid Spacing"
 msgstr "Grade de Agarre..."
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Silhueta/Caixa"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr "Lig/Desliga elástico"
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Exibir janela de Log"
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Exibir janela de Coord."
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Ajuda"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 #, fuzzy
 msgid "Manual"
 msgstr "Manual..."
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 #, fuzzy
 msgid "gEDA Documentation"
 msgstr "Documentação"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr ""
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 #, fuzzy
 msgid "Component Documentation"
 msgstr "Documentação"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr ""
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 #, fuzzy
 msgid "Hotkeys"
 msgstr "Atalhos..."
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Zoom muito pequeno! Não posso diminuir. \n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr ""
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Impossível invocar %s!\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr ""
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Fator de Zoom [%d] inválido passado para %s\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, fuzzy, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Tamanho [%d] inválido passado tamanho de grade\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr ""
 "Número de níveis [%d] inválido para função desfaz passado para undo-level\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, fuzzy, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Tamanho [%d] inválido passado tamanho de grade\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, fuzzy, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Tamanho [%d] inválido (text-size)\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, fuzzy, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr ""
 "Número de níveis [%d] inválido para função desfaz passado para undo-level\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Tamanho [%d] inválido passado tamanho de grade\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Tamanho [%d] inválido passado tamanho de grade\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, fuzzy, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr ""
 "Número de níveis [%d] inválido para função desfaz passado para undo-level\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Tamanho [%d] inválido passado tamanho de grade\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr ""
 "Número de níveis [%d] inválido para função desfaz passado para undo-level\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "gEDA/gschem versão %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
@@ -634,32 +641,30 @@ msgstr ""
 "gEDA/gschem vem com ABSOLUTAMENTE NENHUMA GARANTIA; leia o arquivo COPYING "
 "para maiores detalhes.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "Este programa é um software livre, e você é convidado a redistribui-lo sob "
 "certas\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
 msgstr "condições; Leia o arquivo COPYING para maiores detalhes.\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "Esta é a versão portada para MINGW32.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "Configuração para Localização: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -667,631 +672,638 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Falhou ao ler o arquivo scm [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "Lendo o arquivo scm [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Falhou ao ler o arquivo scm [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Diretório Scheme N�O ajustado!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Executando script guile [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 #, fuzzy
 msgid "Accelerator String"
 msgstr "String geral"
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Fim desconhecido para linha (%d)!\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Tipo desconhecido para linha (%d)!\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Modo de Componente"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Modo Texto"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Modo de Rotação"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Modo Pan"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Modo Colar de %d"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "Modo de Conexão (NET)"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Modo de Conexão (NET)"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Modo Barramento (BUS)"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Modo de Linha"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Modo de Caixa"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Modo Imagem"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Modo de Círculo"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Modo de Arco"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Modo de Pino"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Mover"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Multipla Cópia"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Mostrar Oculto"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Agarre desligado"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Ação"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "Stroke"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "nenhum"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Repetir/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr ""
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr ""
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Documentação para [%s,%s,%s,%s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Criada Nova Página [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, fuzzy, c-format
 msgid "New Window created [%s]\n"
 msgstr "Nova janela criada\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Falha ao salvar tudo"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Salvar Tudo"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Fechando Janela\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "Selecione objetos antes"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Editar Tipo de Linha"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Editar Texto"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "Slot"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "Cor"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Rotacionar"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Espelhar"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Transladar"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "ATEN��O: Não translade com o agarre (snap) desligado!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "ATENÃ?Ã?O: Ligando o agarre e continuando o translado.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "ATEN��O: A grade de agarre não está em 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
 msgstr ""
 "ATEN��O: Se transladar um símbolo para origem, a grade deve estar em 100\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Embutir"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Desembutir"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Atualizar"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "Mostrar Oculto"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "Deixar Visível"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Atualiza dicas"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Reverter Página?"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Colar de 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Buffer vazio"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Copiar para 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Copiar para 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Copiar para 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Copiar para 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Copiar para 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Cortar para 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Cortar para 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Cortar para 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Cortar para 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Cortar para 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Colar de 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Colar de 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Colar de 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Colar de 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Colar de 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Componente"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Atributo"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Procurando por origem [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Impossível encontrar origem [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Procurando por símbolo [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
 msgstr ""
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "Mostrar N"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "Mostrar V"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "Mostrar T"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "Comuta Visibilidade"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Desculpe, mas esta é uma opção de menu sem função\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr "Retorno de ação ajustado para silhueta\n"
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr "Retorno de ação ajustado para caixa completa\n"
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "Grade DESLIGADA\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Agarre desligado (CUIDADO!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Agarre ligado\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Agarre desligado (CUIDADO!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr "Elástico desligado\n"
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr "Elástico ligado\n"
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Tipo desconhecido para enchimento da caixa!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr ""
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr ""
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Tipo desconhecido para enchimento de arco!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Transladando diagrama [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr ""
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 #, fuzzy
 msgid "Object already locked\n"
 msgstr "Objeto já bloqueado\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 #, fuzzy
 msgid "Object already unlocked\n"
 msgstr "Objeto já desbloqueado\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "Texto oculto agora está visível\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "Texto oculto agora está invisível\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr ""
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "N�O foi possível deixar arquivo backup [%s] como leitura e gravação\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "N�O foi possível deixar arquivo backup [%s] apenas leitura!\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "N�O foi possível salvar  arquivo backup [%s] !\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr ""
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr ""
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr ""
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr ""
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr ""
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, fuzzy, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Não consigo encontrar %s em nenhuma biblioteca\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Tipo desconhecido para enchimento da caixa!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Falhou ao ler imagem: %s"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Imagem"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "ERRO: NENHUM objeto!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Atributo Slot mau feito\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "Sem atributo NUMSLOTS\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "Slots não disponível para este componente\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Número de slot fora dos limites\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Você tentou editar o slot de algo que não existe!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Desfaz e Refaz desabilitado no arquivo rc\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1316,260 +1328,262 @@ msgstr ""
 "  -h            Ajuda; esta mensagem\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr ""
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "Editor de um atributo"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 #, fuzzy
 msgid "<b>Edit Attribute</b>"
 msgstr "Editar Atributos"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 #, fuzzy
 msgid "<b>Add Attribute</b>"
 msgstr "Inserir Atributo"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Nome:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Valor:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Visível"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Mostra apenas Valor"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Mostra apenas Nome"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Mostra Nome e Valor"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 #, fuzzy
 msgid "<b>Attach Options</b>"
 msgstr "Opções"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Todos"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Componentes"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Conexões"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr ""
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 msgstr ""
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 #, fuzzy
 msgid "Diagonal"
 msgstr "diagonal"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr ""
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr ""
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 #, fuzzy
 msgid "Left to right"
 msgstr "Esq Dir"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr ""
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 #, fuzzy
 msgid "File order"
 msgstr "Ordena em arquivos"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Autonumerar texto"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr ""
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 #, fuzzy
 msgid "Search for:"
 msgstr "foco de procura"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 #, fuzzy
 msgid "Autonumber text in:"
 msgstr "Autonumerar texto"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr ""
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 #, fuzzy
 msgid "Selected objects"
 msgstr "Objetos selecionados"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 #, fuzzy
 msgid "Current page"
 msgstr "Folha corrente"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 #, fuzzy
 msgid "Whole hierarchy"
 msgstr "Hierarquia"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 #, fuzzy
 msgid "<b>Options</b>"
 msgstr "Opções"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 #, fuzzy
 msgid "Starting number:"
 msgstr "Número inicial"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 #, fuzzy
 msgid "Sort order:"
 msgstr "Ordenação"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr ""
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Impossível alocar a cor %s!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "preta"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "branca"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Impossível alocar a cor %s!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Impossível alocar a cor %s!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Tentou ter cor inválida: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Tentou ter cor inválida: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 #, fuzzy
 msgid "Filter:"
 msgstr "Filtro"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Nome"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Valor"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Uso normal - referenciar componente"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Embutir componente no diagrama"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Incluir como objetos individuais"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Selecionar Componente"
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr ""
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Bibliotecas"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Prévia"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "Entrada de texto..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1579,193 +1593,196 @@ msgstr ""
 "cursor na janela, clique para deixar o texto.\n"
 "Use botão do meio para rotacionar enquanto posiciona"
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Esq Baixo"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "Esq Centro"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Esq Alto"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Centro Baixo"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "Centro Centro"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Centro Alto"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Dir Baixo"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "Dir Centro"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Dir Alto"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 #, fuzzy
 msgid "Edit Text Properties"
 msgstr "Editar Tamanho do Texto"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 #, fuzzy
 msgid "<b>Text Content</b>"
 msgstr "Opções"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 #, fuzzy
 msgid "<b>Text Properties</b>"
 msgstr "Opções"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 #, fuzzy
 msgid "Color:"
 msgstr "Cor"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr ""
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 #, fuzzy
 msgid "Alignment:"
 msgstr "Editar Alinhamento do Texto"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "Solido"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Pontilhado"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Tracejado"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "Centro"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Fantasma"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*inalterado*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Editar Largura e Tipo de Linha"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 #, fuzzy
 msgid "Type:"
 msgstr "Origem da Imagem"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 #, fuzzy
 msgid "Width:"
 msgstr "Largura"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 #, fuzzy
 msgid "Dash Length:"
 msgstr "Comprimento dos traços"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 #, fuzzy
 msgid "Dash Space:"
 msgstr "Comprimento dos espaços"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Vazio"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Preenchida"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "Malha"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "Linhas"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Editar Preenchimento"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 #, fuzzy
 msgid "Fill Type:"
 msgstr "Tipo de Preenchimento"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 #, fuzzy
 msgid "Line Width:"
 msgstr "Largura da Linha"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 #, fuzzy
 msgid "Angle 1:"
 msgstr "Ã?ngulo1"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 #, fuzzy
 msgid "Pitch 1:"
 msgstr "Passo1"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 #, fuzzy
 msgid "Angle 2:"
 msgstr "Ã?ngulo2"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 #, fuzzy
 msgid "Pitch 2:"
 msgstr "Passo2"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Parametros do Arco"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 #, fuzzy
 msgid "Start Angle:"
 msgstr "Ã?ngulo Inicial"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 #, fuzzy
 msgid "Degrees of Sweep:"
 msgstr "Graus de comprimento"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1773,49 +1790,49 @@ msgstr ""
 "Valor a transladar?\n"
 "(0 para origem)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "Tamanho do Texto"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 #, fuzzy
 msgid "Enter new text size:"
 msgstr "Entre com novo tamanho de texto"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 #, fuzzy
 msgid "Snap Size"
 msgstr "Grade de agarre"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 #, fuzzy
 msgid "Enter new snap grid spacing:"
 msgstr "Entre com novo tamanho de grade"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Editar número de SLOT"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 #, fuzzy
 msgid "Edit slot number:"
 msgstr "Editar número de SLOT"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Sobre..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 #, fuzzy
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr "gEDA : GPL Electronic Design Automation"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "gschem versão %s%s.%s"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 #, fuzzy
 msgid ""
 "Written by:\n"
@@ -1828,160 +1845,160 @@ msgstr ""
 "ahvezda@xxxxxxxxxxxxx\n"
 "e outros autores (ver arquivo AUTHORS)"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Coordenadas"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "Janela"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Universo"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Inserir Atributo"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "Texto"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "Seleção"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Caixa de Zoom"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Ação"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr ""
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Edição de Cor"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr ""
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 #, fuzzy
 msgid "Function"
 msgstr "Ação"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 #, fuzzy
 msgid "Keystroke(s)"
 msgstr "Função : atalho(s)"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 #, fuzzy
 msgid "Find Text"
 msgstr "Localizar"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "Loc. Texto:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "Desce à hierarquia"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 #, fuzzy
 msgid "Hide Text"
 msgstr "Ocultar texto"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "Ocultar texto iniciado com:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 #, fuzzy
 msgid "Show Text"
 msgstr "Mostrar Texto"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Mostrar texto iniciado com:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr ""
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr ""
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr ""
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1992,52 +2009,52 @@ msgid ""
 "The value cannot start with a space."
 msgstr ""
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 #, fuzzy
 msgid "Invalid Attribute"
 msgstr "Inserir Atributo"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Tipo da Linha"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Ação"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "Diagramas"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "Símbolos"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "Diagramas e Símbolos"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 #, fuzzy
 msgid "All files"
 msgstr "Todos arquivos"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Abrir..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 #, fuzzy
 msgid "Save as..."
 msgstr "Salvar Como..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2045,30 +2062,30 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 #, fuzzy
 msgid "Overwrite file?"
 msgstr "Novo arquivo"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr ""
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr ""
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr ""
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2077,311 +2094,311 @@ msgid ""
 "%s.\n"
 msgstr ""
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Salva imagem colorida [%s] [%d x %d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Salva imagem em Preto e branco [%s] [%d x %d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr ""
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 #, fuzzy
 msgid "Width x Height"
 msgstr "Largura x Altura"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 msgid "Image type"
 msgstr ""
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "Status"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Inserir Net"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Inserir Atributo..."
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Inserir Componente..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Inserir Bus"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Inserir Texto"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/Zoom maior"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/Zoom menor"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Caixa de Zoom"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Zoom desenho"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Selecionar"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Editar..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Editar Tipo de Linha"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Copiar"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Mover"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/Apagar"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Descer ao Esquemático"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Descer ao Símbolo"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Subir"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr ""
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr ""
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, fuzzy, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Impossível invocar %s!\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 #, fuzzy
 msgid "Clear"
 msgstr "Fechar"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Atributos com nome vazio não permitidos. Defina um nome."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Mostra apenas Valor"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Mostra apenas Nome"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Duplicar"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "Editar Atributos"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Vis?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr "N"
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr "V"
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Inserir Atributo"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Inserir Atributo"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Descartar"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Gerenciador de Páginas"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Nome do arquivo"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Alterado"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "Clique direito no arquivo para opções..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Buffer"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 #, fuzzy
 msgid "Select PostScript Filename..."
 msgstr "Salvar Como..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "Extensão com margens"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "Extensão sem margens"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "Janela Atual"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Paisagem"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Retrato"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr ""
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 #, fuzzy
 msgid "Output paper size:"
 msgstr "Tamanho do papel"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 #, fuzzy
 msgid "Orientation:"
 msgstr "Orientação"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 #, fuzzy
 msgid "Destination"
 msgstr "Documentação"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 #, fuzzy
 msgid "File:"
 msgstr "Arquivo"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 msgid "Command:"
 msgstr ""
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr ""
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Não consigo imprimir para arquivo [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
 "Check the log window for more information"
 msgstr ""
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "Diagrama atual impresso para [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr ""
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Novo arquivo"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Abrir"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Abrir arquivo..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "Salvar"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "Salvar arquivo"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Desfazer última operação"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Refaz o último Desfaz"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2393,7 +2410,7 @@ msgstr ""
 "para colocar o componente\n"
 "Botão Direito para cancelar"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2401,7 +2418,7 @@ msgstr ""
 "Modo de conexões\n"
 "Botão Direito para cancelar"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2409,88 +2426,88 @@ msgstr ""
 "Modo de Barramentos\n"
 "Botão Direito do mouse para cancelar"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Adicionar Texto..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Selecionar"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Modo de Seleção"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr "Pegar"
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Repetir/nenhum"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Menu/Cancelar"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "Pan/Cancelar"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Carregando o diagrama [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 #, fuzzy
 msgid "Failed to load file"
 msgstr "Falhou ao ler imagem: %s"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, fuzzy, c-format
 msgid "New file [%s]\n"
 msgstr "Novo arquivo"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, fuzzy, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "N�O foi possível salvar [%s] !\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Erro tentando salvar"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, fuzzy, c-format
 msgid "Saved as [%s]\n"
 msgstr "Salvo Como [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Salvo [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "Salvo"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Descartando página [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Fechando [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 #, fuzzy
 msgid "gEDA Schematic Editor"
 msgstr "Descer ao Esquemático"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 
diff --git a/gschem/po/ru.po b/gschem/po/ru.po
index d08a7ae..798ef3e 100644
--- a/gschem/po/ru.po
+++ b/gschem/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ru\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:53+0100\n"
+"POT-Creation-Date: 2009-08-07 23:08+0100\n"
 "PO-Revision-Date: 2006-09-13 16:59+0300\n"
 "Last-Translator: Andy Shevchenko <andy@xxxxxxxxxxxx>\n"
 "Language-Team: Russian <ru@xxxxxx>\n"
@@ -18,629 +18,634 @@ msgstr ""
 "Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: src/rcstrings.c:2
+#: gschem/src/rcstrings.c:2
 msgid "File"
 msgstr "Файл"
 
-#: src/rcstrings.c:3
+#: gschem/src/rcstrings.c:3
 msgid "New Window"
 msgstr "Ð?овое окно"
 
-#: src/rcstrings.c:4 src/x_pagesel.c:252
+#: gschem/src/rcstrings.c:4 gschem/src/x_pagesel.c:252
 msgid "New Page"
 msgstr "Ð?оваÑ? Ñ?Ñ?Ñ?аниÑ?а"
 
-#: src/rcstrings.c:5 src/x_pagesel.c:253
+#: gschem/src/rcstrings.c:5 gschem/src/x_pagesel.c:253
 msgid "Open Page..."
 msgstr "Ð?Ñ?кÑ?Ñ?Ñ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ?..."
 
-#: src/rcstrings.c:6 src/x_pagesel.c:256
+#: gschem/src/rcstrings.c:6 gschem/src/x_pagesel.c:256
 msgid "Close Page"
 msgstr "Ð?акÑ?Ñ?Ñ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ?"
 
-#: src/rcstrings.c:7
+#: gschem/src/rcstrings.c:7
 msgid "Revert Page"
 msgstr "Ð?озвÑ?аÑ?иÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ?"
 
-#: src/rcstrings.c:8 src/x_pagesel.c:255
+#: gschem/src/rcstrings.c:8 gschem/src/x_pagesel.c:255
 msgid "Save Page"
 msgstr "СоÑ?Ñ?аниÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ?"
 
-#: src/rcstrings.c:9
+#: gschem/src/rcstrings.c:9
 msgid "Save Page As..."
 msgstr "СоÑ?Ñ?аниÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ? как..."
 
-#: src/rcstrings.c:10
+#: gschem/src/rcstrings.c:10
 msgid "Save All"
 msgstr "СоÑ?Ñ?аниÑ?Ñ? вÑ?е"
 
-#: src/rcstrings.c:11 src/x_print.c:276
+#: gschem/src/rcstrings.c:11 gschem/src/x_print.c:276
 msgid "Print..."
 msgstr "Ð?еÑ?аÑ?Ñ?..."
 
-#: src/rcstrings.c:12 src/x_image.c:495
+#: gschem/src/rcstrings.c:12 gschem/src/x_image.c:495
 #, fuzzy
 msgid "Write image..."
 msgstr "Ð?апиÑ?аÑ?Ñ? изобÑ?ажение..."
 
-#: src/rcstrings.c:13
+#: gschem/src/rcstrings.c:13
 #, fuzzy
 msgid "Recent files"
 msgstr "Ð?овÑ?й Ñ?айл"
 
-#: src/rcstrings.c:14 src/x_script.c:47
+#: gschem/src/rcstrings.c:14 gschem/src/x_script.c:47
 msgid "Execute Script..."
 msgstr "Ð?Ñ?полниÑ?Ñ? Ñ?кÑ?ипÑ?..."
 
-#: src/rcstrings.c:15
+#: gschem/src/rcstrings.c:15
 msgid "Close Window"
 msgstr "Ð?акÑ?Ñ?Ñ?Ñ? окно"
 
-#: src/rcstrings.c:16
+#: gschem/src/rcstrings.c:16
 msgid "Quit"
 msgstr "Ð?Ñ?йÑ?и"
 
-#: src/rcstrings.c:18 src/i_callbacks.c:695
+#: gschem/src/rcstrings.c:18 gschem/src/i_callbacks.c:695
 msgid "Edit"
 msgstr "Ð?Ñ?авка"
 
-#: src/rcstrings.c:19 src/x_window.c:338
+#: gschem/src/rcstrings.c:19 gschem/src/x_window.c:338
 msgid "Undo"
 msgstr "Ð?Ñ?мениÑ?Ñ? дейÑ?Ñ?вие"
 
-#: src/rcstrings.c:20 src/x_window.c:345
+#: gschem/src/rcstrings.c:20 gschem/src/x_window.c:345
 msgid "Redo"
 msgstr "Ð?овÑ?оÑ?иÑ?Ñ? дейÑ?Ñ?вие"
 
-#: src/rcstrings.c:21 src/i_basic.c:77 src/x_window.c:521
+#: gschem/src/rcstrings.c:21 gschem/src/i_basic.c:77 gschem/src/x_window.c:521
 msgid "Select Mode"
 msgstr "Режим вÑ?боÑ?ки"
 
-#: src/rcstrings.c:22
+#: gschem/src/rcstrings.c:22
 #, fuzzy
 msgid "Cut"
 msgstr "Ð?Ñ?Ñ?езка 1"
 
-#: src/rcstrings.c:23 src/i_basic.c:135 src/i_callbacks.c:536
-#: src/i_callbacks.c:560
+#: gschem/src/rcstrings.c:23 gschem/src/i_basic.c:135
+#: gschem/src/i_callbacks.c:536 gschem/src/i_callbacks.c:560
 msgid "Copy"
 msgstr "Ð?опиÑ?оваÑ?Ñ?"
 
-#: src/rcstrings.c:24
+#: gschem/src/rcstrings.c:24
 #, fuzzy
 msgid "Paste"
 msgstr "Ð?Ñ?Ñ?авка 1"
 
-#: src/rcstrings.c:25
+#: gschem/src/rcstrings.c:25
 msgid "Edit..."
 msgstr "Ð?Ñ?авка..."
 
-#: src/rcstrings.c:26
+#: gschem/src/rcstrings.c:26
 msgid "Edit Text..."
 msgstr "Ð?Ñ?авка Ñ?екÑ?Ñ?а..."
 
-#: src/rcstrings.c:27 src/i_basic.c:84
+#: gschem/src/rcstrings.c:27 gschem/src/i_basic.c:84
 msgid "Copy Mode"
 msgstr "Режим копиÑ?ованиÑ?"
 
-#: src/rcstrings.c:28 src/i_basic.c:142
+#: gschem/src/rcstrings.c:28 gschem/src/i_basic.c:142
 msgid "Multiple Copy Mode"
 msgstr "Режим множеÑ?Ñ?венного копиÑ?ованиÑ?"
 
-#: src/rcstrings.c:29 src/i_basic.c:87
+#: gschem/src/rcstrings.c:29 gschem/src/i_basic.c:87
 msgid "Move Mode"
 msgstr "Режим пеÑ?емеÑ?ениÑ?"
 
-#: src/rcstrings.c:30 src/i_callbacks.c:670 src/x_multiattrib.c:1496
+#: gschem/src/rcstrings.c:30 gschem/src/i_callbacks.c:670
+#: gschem/src/x_multiattrib.c:1496
 msgid "Delete"
 msgstr "УдалиÑ?Ñ?"
 
-#: src/rcstrings.c:31
+#: gschem/src/rcstrings.c:31
 msgid "Rotate 90 Mode"
 msgstr "Режим вÑ?аÑ?ениÑ? на 90"
 
-#: src/rcstrings.c:32 src/i_basic.c:91
+#: gschem/src/rcstrings.c:32 gschem/src/i_basic.c:91
 msgid "Mirror Mode"
 msgstr "Режим зеÑ?калиÑ?ованиÑ?"
 
-#: src/rcstrings.c:33
+#: gschem/src/rcstrings.c:33
 msgid "Slot..."
 msgstr "СлоÑ?..."
 
-#: src/rcstrings.c:34
+#: gschem/src/rcstrings.c:34
 msgid "Color..."
 msgstr "ЦвеÑ?..."
 
-#: src/rcstrings.c:35 src/i_callbacks.c:920 src/x_dialog.c:2411
+#: gschem/src/rcstrings.c:35 gschem/src/i_callbacks.c:920
+#: gschem/src/x_dialog.c:2412
 msgid "Lock"
 msgstr "Ð?локиÑ?оваÑ?Ñ?"
 
-#: src/rcstrings.c:36 src/i_callbacks.c:938
+#: gschem/src/rcstrings.c:36 gschem/src/i_callbacks.c:938
 msgid "Unlock"
 msgstr "РазблокиÑ?оваÑ?Ñ?"
 
-#: src/rcstrings.c:37
+#: gschem/src/rcstrings.c:37
 msgid "Line Width & Type..."
 msgstr "Тип и Ñ?иÑ?ина линии..."
 
-#: src/rcstrings.c:38
+#: gschem/src/rcstrings.c:38
 msgid "Fill Type..."
 msgstr "Тип заливки..."
 
-#: src/rcstrings.c:39
+#: gschem/src/rcstrings.c:39
 msgid "Symbol Translate..."
 msgstr "Ð?еÑ?евод Ñ?имвола..."
 
-#: src/rcstrings.c:40
+#: gschem/src/rcstrings.c:40
 msgid "Embed Component/Picture"
 msgstr "Ð?недÑ?иÑ?Ñ? компоненÑ?/изобÑ?ажение"
 
-#: src/rcstrings.c:41
+#: gschem/src/rcstrings.c:41
 msgid "Unembed Component/Picture"
 msgstr "Ð?Ñ?клÑ?Ñ?иÑ?Ñ? компоненÑ?/изобÑ?ажение"
 
-#: src/rcstrings.c:42
+#: gschem/src/rcstrings.c:42
 msgid "Update Component"
 msgstr "Ð?бновиÑ?Ñ? компоненÑ?"
 
-#: src/rcstrings.c:43
+#: gschem/src/rcstrings.c:43
 msgid "Show/Hide Inv Text"
 msgstr "Ð?оказаÑ?Ñ?/СкÑ?Ñ?Ñ?Ñ? невидимÑ?й Ñ?екÑ?Ñ?"
 
-#: src/rcstrings.c:44
+#: gschem/src/rcstrings.c:44
 msgid "Make Inv Text Vis"
 msgstr "СделаÑ?Ñ? невидимÑ?й Ñ?екÑ?Ñ? видимÑ?м"
 
-#: src/rcstrings.c:46
+#: gschem/src/rcstrings.c:46
 msgid "Buffer"
 msgstr "Ð?Ñ?Ñ?еÑ?"
 
-#: src/rcstrings.c:47
+#: gschem/src/rcstrings.c:47
 msgid "Copy into 1"
 msgstr "Ð?опиÑ?оваÑ?Ñ? в 1"
 
-#: src/rcstrings.c:48
+#: gschem/src/rcstrings.c:48
 msgid "Copy into 2"
 msgstr "Ð?опиÑ?оваÑ?Ñ? в 2"
 
-#: src/rcstrings.c:49
+#: gschem/src/rcstrings.c:49
 msgid "Copy into 3"
 msgstr "Ð?опиÑ?оваÑ?Ñ? в 3"
 
-#: src/rcstrings.c:50
+#: gschem/src/rcstrings.c:50
 msgid "Copy into 4"
 msgstr "Ð?опиÑ?оваÑ?Ñ? в 4"
 
-#: src/rcstrings.c:51
+#: gschem/src/rcstrings.c:51
 msgid "Copy into 5"
 msgstr "Ð?опиÑ?оваÑ?Ñ? в 5"
 
-#: src/rcstrings.c:52
+#: gschem/src/rcstrings.c:52
 msgid "Cut into 1"
 msgstr "Ð?Ñ?Ñ?езаÑ?Ñ? в 1"
 
-#: src/rcstrings.c:53
+#: gschem/src/rcstrings.c:53
 msgid "Cut into 2"
 msgstr "Ð?Ñ?Ñ?езаÑ?Ñ? в 2"
 
-#: src/rcstrings.c:54
+#: gschem/src/rcstrings.c:54
 msgid "Cut into 3"
 msgstr "Ð?Ñ?Ñ?езаÑ?Ñ? в 3"
 
-#: src/rcstrings.c:55
+#: gschem/src/rcstrings.c:55
 msgid "Cut into 4"
 msgstr "Ð?Ñ?Ñ?езаÑ?Ñ? в 4"
 
-#: src/rcstrings.c:56
+#: gschem/src/rcstrings.c:56
 msgid "Cut into 5"
 msgstr "Ð?Ñ?Ñ?езаÑ?Ñ? в 5"
 
-#: src/rcstrings.c:57
+#: gschem/src/rcstrings.c:57
 msgid "Paste from 1"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 1"
 
-#: src/rcstrings.c:58
+#: gschem/src/rcstrings.c:58
 msgid "Paste from 2"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 2"
 
-#: src/rcstrings.c:59
+#: gschem/src/rcstrings.c:59
 msgid "Paste from 3"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 3"
 
-#: src/rcstrings.c:60
+#: gschem/src/rcstrings.c:60
 msgid "Paste from 4"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 4"
 
-#: src/rcstrings.c:61
+#: gschem/src/rcstrings.c:61
 msgid "Paste from 5"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 5"
 
-#: src/rcstrings.c:63
+#: gschem/src/rcstrings.c:63
 msgid "View"
 msgstr "Ð?ид"
 
-#: src/rcstrings.c:64
+#: gschem/src/rcstrings.c:64
 msgid "Redraw"
 msgstr "Ð?еÑ?еÑ?иÑ?оваÑ?Ñ?"
 
-#: src/rcstrings.c:65 src/i_callbacks.c:1474 src/i_callbacks.c:1546
+#: gschem/src/rcstrings.c:65 gschem/src/i_callbacks.c:1474
+#: gschem/src/i_callbacks.c:1546
 msgid "Pan"
 msgstr "ЦенÑ?Ñ?иÑ?оваÑ?Ñ?"
 
-#: src/rcstrings.c:66 src/i_basic.c:95
+#: gschem/src/rcstrings.c:66 gschem/src/i_basic.c:95
 msgid "Zoom Box"
 msgstr "Ð?блаÑ?Ñ?Ñ? длÑ? маÑ?Ñ?Ñ?абиÑ?ованиÑ?"
 
-#: src/rcstrings.c:67
+#: gschem/src/rcstrings.c:67
 msgid "Zoom Extents"
 msgstr "Ð?аÑ?Ñ?Ñ?аб на Ñ?кÑ?ан"
 
-#: src/rcstrings.c:68
+#: gschem/src/rcstrings.c:68
 msgid "Zoom In"
 msgstr "УвелиÑ?иÑ?Ñ?"
 
-#: src/rcstrings.c:69
+#: gschem/src/rcstrings.c:69
 msgid "Zoom Out"
 msgstr "УменÑ?Ñ?иÑ?Ñ?"
 
-#: src/rcstrings.c:70
+#: gschem/src/rcstrings.c:70
 msgid "Zoom Full"
 msgstr "Ð? наÑ?Ñ?Ñ?алÑ?нÑ?Ñ? велиÑ?инÑ?"
 
-#: src/rcstrings.c:71
+#: gschem/src/rcstrings.c:71
 msgid "Dark color scheme"
 msgstr ""
 
-#: src/rcstrings.c:72
+#: gschem/src/rcstrings.c:72
 msgid "Light color scheme"
 msgstr ""
 
-#: src/rcstrings.c:74
+#: gschem/src/rcstrings.c:74
 msgid "Page"
 msgstr "СÑ?Ñ?аниÑ?а"
 
-#: src/rcstrings.c:75
+#: gschem/src/rcstrings.c:75
 msgid "Manager..."
 msgstr "Ð?енеджеÑ?..."
 
-#: src/rcstrings.c:76
+#: gschem/src/rcstrings.c:76
 msgid "Next"
 msgstr "СледÑ?Ñ?Ñ?аÑ?"
 
-#: src/rcstrings.c:77
+#: gschem/src/rcstrings.c:77
 msgid "Previous"
 msgstr "Ð?Ñ?едÑ?дÑ?Ñ?аÑ?"
 
-#: src/rcstrings.c:78 src/x_window.c:316
+#: gschem/src/rcstrings.c:78 gschem/src/x_window.c:316
 msgid "New"
 msgstr "Ð?оваÑ?"
 
-#: src/rcstrings.c:79
+#: gschem/src/rcstrings.c:79
 msgid "Revert"
 msgstr "Ð?озвÑ?аÑ?иÑ?Ñ?"
 
-#: src/rcstrings.c:80
+#: gschem/src/rcstrings.c:80
 msgid "Close"
 msgstr "Ð?акÑ?Ñ?Ñ?Ñ?"
 
-#: src/rcstrings.c:81
+#: gschem/src/rcstrings.c:81
 msgid "Discard"
 msgstr "Ð?Ñ?веÑ?гнÑ?Ñ?Ñ?"
 
-#: src/rcstrings.c:83
+#: gschem/src/rcstrings.c:83
 msgid "Add"
 msgstr "Ð?обавиÑ?Ñ?"
 
-#: src/rcstrings.c:84
+#: gschem/src/rcstrings.c:84
 msgid "Component..."
 msgstr "Ð?омпоненÑ?..."
 
-#: src/rcstrings.c:85 src/i_callbacks.c:2401 src/i_callbacks.c:2428
-#: src/x_dialog.c:2378
+#: gschem/src/rcstrings.c:85 gschem/src/i_callbacks.c:2401
+#: gschem/src/i_callbacks.c:2428 gschem/src/x_dialog.c:2379
 msgid "Net"
 msgstr "Ð?Ñ?оводник"
 
-#: src/rcstrings.c:86 src/i_callbacks.c:2472 src/i_callbacks.c:2499
-#: src/x_dialog.c:2396 src/x_window.c:374
+#: gschem/src/rcstrings.c:86 gschem/src/i_callbacks.c:2472
+#: gschem/src/i_callbacks.c:2499 gschem/src/x_dialog.c:2397
+#: gschem/src/x_window.c:374
 msgid "Bus"
 msgstr "Шина"
 
-#: src/rcstrings.c:87
+#: gschem/src/rcstrings.c:87
 msgid "Attribute..."
 msgstr "Ð?Ñ?Ñ?ибÑ?Ñ?..."
 
-#: src/rcstrings.c:88
+#: gschem/src/rcstrings.c:88
 msgid "Text..."
 msgstr "ТекÑ?Ñ?..."
 
-#: src/rcstrings.c:89 src/i_callbacks.c:2580 src/i_callbacks.c:2603
+#: gschem/src/rcstrings.c:89 gschem/src/i_callbacks.c:2580
+#: gschem/src/i_callbacks.c:2603
 msgid "Line"
 msgstr "Ð?иниÑ?"
 
-#: src/rcstrings.c:90 src/i_callbacks.c:2625 src/i_callbacks.c:2648
+#: gschem/src/rcstrings.c:90 gschem/src/i_callbacks.c:2625
+#: gschem/src/i_callbacks.c:2648
 msgid "Box"
 msgstr "Ð?Ñ?Ñ?моÑ?голÑ?ник"
 
-#: src/rcstrings.c:91 src/i_callbacks.c:2704 src/i_callbacks.c:2728
+#: gschem/src/rcstrings.c:91 gschem/src/i_callbacks.c:2704
+#: gschem/src/i_callbacks.c:2728
 msgid "Circle"
 msgstr "Ð?кÑ?Ñ?жноÑ?Ñ?Ñ?"
 
-#: src/rcstrings.c:92 src/i_callbacks.c:2750 src/i_callbacks.c:2773
+#: gschem/src/rcstrings.c:92 gschem/src/i_callbacks.c:2750
+#: gschem/src/i_callbacks.c:2773
 msgid "Arc"
 msgstr "Ð?Ñ?га"
 
-#: src/rcstrings.c:93 src/i_callbacks.c:2795 src/i_callbacks.c:2818
-#: src/x_dialog.c:2369
+#: gschem/src/rcstrings.c:93 gschem/src/i_callbacks.c:2795
+#: gschem/src/i_callbacks.c:2818 gschem/src/x_dialog.c:2370
 msgid "Pin"
 msgstr "Ð?онÑ?акÑ?"
 
-#: src/rcstrings.c:94
+#: gschem/src/rcstrings.c:94
 msgid "Picture..."
 msgstr "Ð?зобÑ?ажение..."
 
-#: src/rcstrings.c:96
+#: gschem/src/rcstrings.c:96
 msgid "Hierarchy"
 msgstr "Ð?еÑ?аÑ?Ñ?иÑ?"
 
-#: src/rcstrings.c:97
+#: gschem/src/rcstrings.c:97
 msgid "Down Schematic"
 msgstr "Ð?глÑ?бÑ? Ñ?Ñ?емÑ?"
 
-#: src/rcstrings.c:98
+#: gschem/src/rcstrings.c:98
 msgid "Down Symbol"
 msgstr "Ð?глÑ?бÑ? Ñ?имвола"
 
-#: src/rcstrings.c:99
+#: gschem/src/rcstrings.c:99
 msgid "Up"
 msgstr "Ð?авеÑ?Ñ?"
 
-#: src/rcstrings.c:100
+#: gschem/src/rcstrings.c:100
 msgid "Documentation"
 msgstr "Ð?окÑ?менÑ?аÑ?иÑ?"
 
-#: src/rcstrings.c:102 src/x_compselect.c:1417
+#: gschem/src/rcstrings.c:102 gschem/src/x_compselect.c:1417
 msgid "Attributes"
 msgstr "Ð?Ñ?Ñ?ибÑ?Ñ?Ñ?"
 
-#: src/rcstrings.c:103 src/i_callbacks.c:3089
+#: gschem/src/rcstrings.c:103 gschem/src/i_callbacks.c:3089
 msgid "Attach"
 msgstr "Ð?Ñ?иÑ?епиÑ?Ñ?"
 
-#: src/rcstrings.c:104 src/i_callbacks.c:3136
+#: gschem/src/rcstrings.c:104 gschem/src/i_callbacks.c:3136
 msgid "Detach"
 msgstr "Ð?Ñ?Ñ?епиÑ?Ñ?"
 
-#: src/rcstrings.c:105
+#: gschem/src/rcstrings.c:105
 msgid "Show Value"
 msgstr "Ð?оказаÑ?Ñ? знаÑ?ение"
 
-#: src/rcstrings.c:106
+#: gschem/src/rcstrings.c:106
 msgid "Show Name"
 msgstr "Ð?оказаÑ?Ñ? имÑ?"
 
-#: src/rcstrings.c:107
+#: gschem/src/rcstrings.c:107
 msgid "Show Both"
 msgstr "Ð?оказаÑ?Ñ? оба паÑ?амеÑ?Ñ?а"
 
-#: src/rcstrings.c:108
+#: gschem/src/rcstrings.c:108
 msgid "Toggle Visibility"
 msgstr "Ð?еÑ?еклÑ?Ñ?ение видимоÑ?Ñ?и"
 
-#: src/rcstrings.c:109
+#: gschem/src/rcstrings.c:109
 msgid "Find Specific Text..."
 msgstr "Ð?айÑ?и опÑ?еделеннÑ?й Ñ?екÑ?Ñ?..."
 
-#: src/rcstrings.c:110
+#: gschem/src/rcstrings.c:110
 msgid "Hide Specific Text..."
 msgstr "СкÑ?Ñ?Ñ?Ñ? опÑ?еделеннÑ?й Ñ?екÑ?Ñ?..."
 
-#: src/rcstrings.c:111
+#: gschem/src/rcstrings.c:111
 msgid "Show Specific Text..."
 msgstr "Ð?оказаÑ?Ñ? опÑ?еделеннÑ?й Ñ?екÑ?Ñ?..."
 
-#: src/rcstrings.c:112
+#: gschem/src/rcstrings.c:112
 msgid "Autonumber Text..."
 msgstr "Ð?вÑ?онÑ?меÑ?оваÑ?Ñ? Ñ?екÑ?Ñ?..."
 
-#: src/rcstrings.c:114
+#: gschem/src/rcstrings.c:114
 msgid "Options"
 msgstr "Ð?аÑ?Ñ?Ñ?ойки"
 
-#: src/rcstrings.c:115
+#: gschem/src/rcstrings.c:115
 msgid "Text Size..."
 msgstr "РазмеÑ? Ñ?екÑ?Ñ?а..."
 
-#: src/rcstrings.c:116
+#: gschem/src/rcstrings.c:116
 msgid "Cycle grid styles"
 msgstr ""
 
-#: src/rcstrings.c:117
+#: gschem/src/rcstrings.c:117
 msgid "Toggle Snap On/Off"
 msgstr "Ð?еÑ?еклÑ?Ñ?ение пÑ?ивÑ?зки"
 
-#: src/rcstrings.c:118
+#: gschem/src/rcstrings.c:118
 msgid "Snap Grid Spacing..."
 msgstr "Шаг Ñ?еÑ?ки пÑ?ивÑ?зки..."
 
-#: src/rcstrings.c:119
+#: gschem/src/rcstrings.c:119
 #, fuzzy
 msgid "Scale up Grid Spacing"
 msgstr "Шаг Ñ?еÑ?ки пÑ?ивÑ?зки..."
 
-#: src/rcstrings.c:120
+#: gschem/src/rcstrings.c:120
 #, fuzzy
 msgid "Scale down Grid Spacing"
 msgstr "Шаг Ñ?еÑ?ки пÑ?ивÑ?зки..."
 
-#: src/rcstrings.c:121
+#: gschem/src/rcstrings.c:121
 msgid "Toggle Outline/Box"
 msgstr "Ð?еÑ?еклÑ?Ñ?иÑ?Ñ? внеÑ?ний конÑ?Ñ?Ñ?/бокÑ?"
 
-#: src/rcstrings.c:122
+#: gschem/src/rcstrings.c:122
 msgid "Toggle Net Rubberband"
 msgstr ""
 
-#: src/rcstrings.c:123
+#: gschem/src/rcstrings.c:123
 msgid "Show Log Window..."
 msgstr "Ð?оказаÑ?Ñ? окно пÑ?оÑ?окола"
 
-#: src/rcstrings.c:124
+#: gschem/src/rcstrings.c:124
 msgid "Show Coord Window..."
 msgstr "Ð?оказаÑ?Ñ? окно кооÑ?динаÑ?"
 
-#: src/rcstrings.c:126
+#: gschem/src/rcstrings.c:126
 msgid "Help"
 msgstr "Ð?омоÑ?Ñ?"
 
-#: src/rcstrings.c:127
+#: gschem/src/rcstrings.c:127
 #, fuzzy
 msgid "Manual"
 msgstr "РÑ?ководÑ?Ñ?во..."
 
-#: src/rcstrings.c:128
+#: gschem/src/rcstrings.c:128
 #, fuzzy
 msgid "gEDA Documentation"
 msgstr "Ð?окÑ?менÑ?аÑ?иÑ?"
 
-#: src/rcstrings.c:129
+#: gschem/src/rcstrings.c:129
 msgid "gschem FAQ"
 msgstr ""
 
-#: src/rcstrings.c:130
+#: gschem/src/rcstrings.c:130
 #, fuzzy
 msgid "Component Documentation"
 msgstr "Ð?окÑ?менÑ?аÑ?иÑ?"
 
-#: src/rcstrings.c:131
+#: gschem/src/rcstrings.c:131
 msgid "About gschem"
 msgstr ""
 
-#: src/rcstrings.c:132 src/x_dialog.c:2724
+#: gschem/src/rcstrings.c:132 gschem/src/x_dialog.c:2706
 #, fuzzy
 msgid "Hotkeys"
 msgstr "Ð?оÑ?Ñ?Ñ?ие клавиÑ?и..."
 
-#: src/a_zoom.c:212
+#: gschem/src/a_zoom.c:212
 msgid "Zoom too small!  Cannot zoom further.\n"
 msgstr "Ð?аÑ?Ñ?Ñ?аб оÑ?енÑ? мал! Ð?евозможно далÑ?нейÑ?ее изменение.\n"
 
-#: src/g_funcs.c:339 src/i_callbacks.c:68
+#: gschem/src/g_funcs.c:339 gschem/src/i_callbacks.c:68
 #, c-format
 msgid "Could not fork\n"
 msgstr "Ð?евозможно Ñ?азвеÑ?влиÑ?Ñ?Ñ?Ñ?\n"
 
-#: src/g_funcs.c:355 src/i_callbacks.c:78
+#: gschem/src/g_funcs.c:355 gschem/src/i_callbacks.c:78
 #, c-format
 msgid "Could not invoke %s\n"
 msgstr "Ð?евозможно вÑ?зваÑ?Ñ? %s\n"
 
-#: src/g_funcs.c:361 src/i_callbacks.c:82
+#: gschem/src/g_funcs.c:361 gschem/src/i_callbacks.c:82
 msgid "Documentation commands not supported under MinGW.\n"
 msgstr "Ð?омандÑ? докÑ?менÑ?аÑ?ии не поддеÑ?живаÑ?Ñ?Ñ?Ñ? в MinGW.\n"
 
-#: src/g_rc.c:292
+#: gschem/src/g_rc.c:294
 #, c-format
 msgid "Invalid zoomfactor [%d] passed to %s\n"
 msgstr "Ð?евеÑ?нÑ?й маÑ?Ñ?Ñ?аб [%d] пÑ?и обÑ?абоÑ?ке %s\n"
 
-#: src/g_rc.c:418
+#: gschem/src/g_rc.c:420
 #, c-format
 msgid "Invalid size [%d] passed to text-size\n"
 msgstr "Ð?евеÑ?нÑ?й Ñ?азмеÑ? [%d] пÑ?и обÑ?абоÑ?ке text-size\n"
 
-#: src/g_rc.c:445
+#: gschem/src/g_rc.c:447
 #, fuzzy, c-format
 msgid "Invalid size [%f] passed to postscript-font-scale\n"
 msgstr "Ð?евеÑ?нÑ?й Ñ?азмеÑ? [%d] пÑ?и обÑ?абоÑ?ке text-size\n"
 
-#: src/g_rc.c:488
+#: gschem/src/g_rc.c:490
 #, c-format
 msgid "Invalid size [%d] passed to snap-size\n"
 msgstr "Ð?евеÑ?нÑ?й Ñ?азмеÑ? [%d] пÑ?и обÑ?абоÑ?ке snap-size\n"
 
-#: src/g_rc.c:960
+#: gschem/src/g_rc.c:962
 #, c-format
 msgid "Invalid num levels [%d] passed to undo-levels\n"
 msgstr "Ð?евеÑ?ное колиÑ?еÑ?Ñ?во Ñ?Ñ?овней [%d] пÑ?и обÑ?абоÑ?ке undo-levels\n"
 
-#: src/g_rc.c:1218
+#: gschem/src/g_rc.c:1220
 #, c-format
 msgid "Invalid size [%d] passed to bus-ripper-size\n"
 msgstr "Ð?евеÑ?нÑ?й Ñ?азмеÑ? [%d] пÑ?и обÑ?абоÑ?ке bus-ripper-size\n"
 
-#: src/g_rc.c:1293
+#: gschem/src/g_rc.c:1295
 #, fuzzy, c-format
 msgid "Invalid dot size [%d] passed to dots-grid-dot-size\n"
 msgstr "Ð?евеÑ?нÑ?й Ñ?азмеÑ? Ñ?оÑ?ки [%d] пÑ?и обÑ?абоÑ?ке grid-dot-size\n"
 
-#: src/g_rc.c:1334
+#: gschem/src/g_rc.c:1336
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to dots-grid-fixed-threshold\n"
 msgstr "Ð?евеÑ?нÑ?е оÑ?Ñ?Ñ?Ñ?пÑ? [%d] пÑ?и обÑ?абоÑ?ке grid-fixed-threshold\n"
 
-#: src/g_rc.c:1360
+#: gschem/src/g_rc.c:1362
 #, fuzzy, c-format
 msgid "Invalid pixel spacing [%d] passed to mesh-grid-display-threshold\n"
 msgstr "Ð?евеÑ?нÑ?е оÑ?Ñ?Ñ?Ñ?пÑ? [%d] пÑ?и обÑ?абоÑ?ке grid-fixed-threshold\n"
 
-#: src/g_rc.c:1404
+#: gschem/src/g_rc.c:1406
 #, c-format
 msgid "Invalid offset [%d] passed to add-attribute-offset\n"
 msgstr "Ð?евеÑ?ное Ñ?меÑ?ение [%d] пÑ?и обÑ?абоÑ?ке add-attribute-offset\n"
 
-#: src/g_rc.c:1428
+#: gschem/src/g_rc.c:1430
 #, c-format
 msgid "Invalid number of seconds [%d] passed to auto-save-interval\n"
 msgstr "Ð?евеÑ?ное Ñ?иÑ?ло Ñ?екÑ?нд [%d] пÑ?и обÑ?абоÑ?ке auto-save-interval\n"
 
-#: src/g_rc.c:1469
+#: gschem/src/g_rc.c:1471
 #, c-format
 msgid "Invalid gain [%d] passed to mousepan-gain\n"
 msgstr "Ð?евеÑ?ное Ñ?Ñ?коÑ?ение [%d] пÑ?и обÑ?абоÑ?ке mousepan-gain\n"
 
-#: src/g_rc.c:1492
+#: gschem/src/g_rc.c:1494
 #, c-format
 msgid "Invalid gain [%d] passed to keyboardpan-gain\n"
 msgstr "Ð?евеÑ?ное Ñ?Ñ?коÑ?ение [%d] пÑ?и обÑ?абоÑ?ке keyboardpan-gain\n"
 
-#: src/g_rc.c:1538
+#: gschem/src/g_rc.c:1540
 #, fuzzy, c-format
 msgid "Invalid number of pixels [%d] passed to select-slack-pixels\n"
 msgstr "Ð?евеÑ?ное Ñ?иÑ?ло Ñ?екÑ?нд [%d] пÑ?и обÑ?абоÑ?ке auto-save-interval\n"
 
-#: src/g_rc.c:1564
+#: gschem/src/g_rc.c:1566
 #, fuzzy, c-format
 msgid "Invalid gain [%d] passed to zoom-gain\n"
 msgstr "Ð?евеÑ?ное Ñ?Ñ?коÑ?ение [%d] пÑ?и обÑ?абоÑ?ке mousepan-gain\n"
 
-#: src/g_rc.c:1589
+#: gschem/src/g_rc.c:1591
 #, fuzzy, c-format
 msgid "Invalid number of steps [%d] scrollpan-steps\n"
 msgstr "Ð?евеÑ?ное Ñ?иÑ?ло Ñ?екÑ?нд [%d] пÑ?и обÑ?абоÑ?ке auto-save-interval\n"
 
-#: src/gschem.c:183 src/gschem.c:194
+#: gschem/src/gschem.c:184
 #, c-format
 msgid "gEDA/gschem version %s%s.%s\n"
 msgstr "Ð?еÑ?Ñ?иÑ? gEDA/gschem %s%s.%s\n"
 
-#: src/gschem.c:186 src/gschem.c:197
-#, c-format
+#: gschem/src/gschem.c:187
 msgid ""
 "gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more "
 "details.\n"
 msgstr ""
 "gEDA/gschem поÑ?Ñ?авлÑ?еÑ?Ñ?Ñ? Ð?Ð?Ð? Ð?Ð?РÐ?Ð?ТÐ?Ð?; Ñ?моÑ?Ñ?иÑ?е COPYING длÑ? подÑ?обноÑ?Ñ?ей.\n"
 
-#: src/gschem.c:188 src/gschem.c:199
-#, c-format
+#: gschem/src/gschem.c:189
 msgid ""
 "This is free software, and you are welcome to redistribute it under certain\n"
 msgstr ""
 "ЭÑ?о Ñ?вободное пÑ?огÑ?аммное обеÑ?пеÑ?ение, и его можно Ñ?аÑ?пÑ?оÑ?Ñ?Ñ?анÑ?Ñ?Ñ? пÑ?и "
 "извеÑ?Ñ?нÑ?Ñ?\n"
 
-#: src/gschem.c:190 src/gschem.c:201
-#, c-format
+#: gschem/src/gschem.c:191
 msgid ""
 "conditions; please see the COPYING file for more details.\n"
 "\n"
@@ -648,17 +653,17 @@ msgstr ""
 "Ñ?Ñ?ловиÑ?Ñ?; пожалÑ?йÑ?Ñ?а, Ñ?моÑ?Ñ?иÑ?е Ñ?айл COPYING длÑ? полÑ?Ñ?ениÑ? подÑ?обноÑ?Ñ?ей.\n"
 "\n"
 
-#: src/gschem.c:205
+#: gschem/src/gschem.c:194
 #, c-format
 msgid "This is the MINGW32 port.\n"
 msgstr "ЭÑ?о MINGW32 веÑ?Ñ?иÑ?.\n"
 
-#: src/gschem.c:209
+#: gschem/src/gschem.c:198
 #, c-format
 msgid "Current locale settings: %s\n"
 msgstr "ТекÑ?Ñ?ие Ñ?Ñ?Ñ?ановки локализаÑ?ии: %s\n"
 
-#: src/gschem.c:224
+#: gschem/src/gschem.c:213
 msgid ""
 "You must set the GEDADATA environment variable!\n"
 "\n"
@@ -666,246 +671,250 @@ msgid ""
 "environment variable to point to the correct location.\n"
 msgstr ""
 
-#: src/gschem.c:251
+#: gschem/src/gschem.c:240
 #, fuzzy, c-format
 msgid "Couldn't find init scm file [%s]\n"
 msgstr "Ð?евозможно пÑ?оÑ?иÑ?аÑ?Ñ? наÑ?алÑ?нÑ?й scm-Ñ?айл [%s]\n"
 
-#: src/gschem.c:255
+#: gschem/src/gschem.c:244
 #, c-format
 msgid "Read init scm file [%s]\n"
 msgstr "ЧÑ?ение наÑ?алÑ?ного scm-Ñ?айла [%s]\n"
 
-#: src/gschem.c:259
+#: gschem/src/gschem.c:248
 #, c-format
 msgid "Failed to read init scm file [%s]\n"
 msgstr "Ð?евозможно пÑ?оÑ?иÑ?аÑ?Ñ? наÑ?алÑ?нÑ?й scm-Ñ?айл [%s]\n"
 
-#: src/gschem.c:320
+#: gschem/src/gschem.c:309
 #, c-format
 msgid "Scheme directory NOT set!\n"
 msgstr "Ð?аÑ?алог Ñ?Ñ?ем Ð?Ð? Ñ?Ñ?Ñ?ановлен!\n"
 
-#: src/gschem.c:327 src/x_script.c:66
+#: gschem/src/gschem.c:316 gschem/src/x_script.c:66
 #, c-format
 msgid "Executing guile script [%s]\n"
 msgstr "Ð?апÑ?Ñ?каеÑ?Ñ?Ñ? guile-Ñ?кÑ?ипÑ? [%s]\n"
 
-#: src/gschem_accel_label.c:319
+#: gschem/src/gschem_accel_label.c:319
 msgid "Accelerator Closure"
 msgstr ""
 
-#: src/gschem_accel_label.c:320
+#: gschem/src/gschem_accel_label.c:320
 msgid "The closure to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:326
+#: gschem/src/gschem_accel_label.c:326
 msgid "Accelerator Widget"
 msgstr ""
 
-#: src/gschem_accel_label.c:327
+#: gschem/src/gschem_accel_label.c:327
 msgid "The widget to be monitored for accelerator changes"
 msgstr ""
 
-#: src/gschem_accel_label.c:333
+#: gschem/src/gschem_accel_label.c:333
 #, fuzzy
 msgid "Accelerator String"
 msgstr "Ð?бÑ?аÑ? Ñ?Ñ?Ñ?ока"
 
-#: src/gschem_accel_label.c:334
+#: gschem/src/gschem_accel_label.c:334
 msgid "The accelerator string to be displayed"
 msgstr ""
 
-#: src/gschem_cairo.c:310
+#: gschem/src/gschem_cairo.c:310
 #, c-format
 msgid "Unknown end for line (%d)\n"
 msgstr "Ð?еизвеÑ?Ñ?нÑ?й конеÑ? длÑ? линии (%d)\n"
 
-#: src/gschem_cairo.c:318
+#: gschem/src/gschem_cairo.c:318
 #, fuzzy, c-format
 msgid "Unknown type for stroke (%d) !\n"
 msgstr "Ð?еизвеÑ?Ñ?нÑ?й Ñ?ип длÑ? линии (%d) !\n"
 
-#: src/i_basic.c:79
+#: gschem/src/i_basic.c:79
 msgid "Component Mode"
 msgstr "Режим компоненÑ?ов"
 
-#: src/i_basic.c:81
+#: gschem/src/i_basic.c:81
 msgid "Text Mode"
 msgstr "Режим Ñ?екÑ?Ñ?а"
 
-#: src/i_basic.c:89
+#: gschem/src/i_basic.c:89
 msgid "Rotate Mode"
 msgstr "Режим вÑ?аÑ?ениÑ?"
 
-#: src/i_basic.c:99
+#: gschem/src/i_basic.c:99
 msgid "Pan Mode"
 msgstr "Режим Ñ?енÑ?Ñ?иÑ?ованиÑ?"
 
-#: src/i_basic.c:103
+#: gschem/src/i_basic.c:103
 #, c-format
 msgid "Paste %d Mode"
 msgstr "Режим вÑ?Ñ?авки %d"
 
-#: src/i_basic.c:109
+#: gschem/src/i_basic.c:109
 #, fuzzy
 msgid "Magnetic Net Mode"
 msgstr "Режим пÑ?оводника"
 
-#: src/i_basic.c:111
+#: gschem/src/i_basic.c:111
 msgid "Net Mode"
 msgstr "Режим пÑ?оводника"
 
-#: src/i_basic.c:115
+#: gschem/src/i_basic.c:115
 msgid "Bus Mode"
 msgstr "Режим Ñ?инÑ?"
 
-#: src/i_basic.c:118
+#: gschem/src/i_basic.c:118
 msgid "Line Mode"
 msgstr "Режим линии"
 
-#: src/i_basic.c:121
+#: gschem/src/i_basic.c:121
 msgid "Box Mode"
 msgstr "Режим пÑ?Ñ?моÑ?голÑ?ника"
 
-#: src/i_basic.c:124
+#: gschem/src/i_basic.c:124
 msgid "Picture Mode"
 msgstr "Режим изобÑ?ажениÑ?"
 
-#: src/i_basic.c:127
+#: gschem/src/i_basic.c:127
 msgid "Circle Mode"
 msgstr "Режим окÑ?Ñ?жноÑ?Ñ?и"
 
-#: src/i_basic.c:130
+#: gschem/src/i_basic.c:130
 msgid "Arc Mode"
 msgstr "Режим дÑ?ги"
 
-#: src/i_basic.c:133
+#: gschem/src/i_basic.c:133
 msgid "Pin Mode"
 msgstr "Режим конÑ?акÑ?ов"
 
-#: src/i_basic.c:137 src/i_callbacks.c:626 src/i_callbacks.c:650
+#: gschem/src/i_basic.c:137 gschem/src/i_callbacks.c:626
+#: gschem/src/i_callbacks.c:650
 msgid "Move"
 msgstr "Ð?еÑ?емеÑ?Ñ?иÑ?Ñ?"
 
-#: src/i_basic.c:139 src/i_callbacks.c:581 src/i_callbacks.c:605
+#: gschem/src/i_basic.c:139 gschem/src/i_callbacks.c:581
+#: gschem/src/i_callbacks.c:605
 msgid "Multiple Copy"
 msgstr "Ð?ножеÑ?Ñ?венное копиÑ?ование"
 
-#: src/i_basic.c:168
+#: gschem/src/i_basic.c:168
 msgid "Show Hidden"
 msgstr "Ð?оказаÑ?Ñ? Ñ?кÑ?Ñ?Ñ?Ñ?е"
 
-#: src/i_basic.c:171
+#: gschem/src/i_basic.c:171
 msgid "Snap Off"
 msgstr "Ð?Ñ?ивÑ?зка вÑ?клÑ?Ñ?ена"
 
-#: src/i_basic.c:173
+#: gschem/src/i_basic.c:173
 msgid "Resnap Active"
 msgstr ""
 
-#: src/i_basic.c:254 src/x_window.c:495
+#: gschem/src/i_basic.c:254 gschem/src/x_window.c:495
 msgid "Action"
 msgstr "Ð?ейÑ?Ñ?вие"
 
-#: src/i_basic.c:260 src/x_dialog.c:2408 src/x_window.c:490
+#: gschem/src/i_basic.c:260 gschem/src/x_dialog.c:2409
+#: gschem/src/x_window.c:490
 msgid "Stroke"
 msgstr "ШÑ?Ñ?иÑ?"
 
-#: src/i_basic.c:266 src/x_window.c:492
+#: gschem/src/i_basic.c:266 gschem/src/x_window.c:492
 msgid "none"
 msgstr "пÑ?Ñ?Ñ?о"
 
-#: src/i_basic.c:271
+#: gschem/src/i_basic.c:271
 msgid "Repeat/"
 msgstr "Ð?овÑ?оÑ?иÑ?Ñ?/"
 
-#: src/i_basic.c:549 src/i_basic.c:563
+#: gschem/src/i_basic.c:549 gschem/src/i_basic.c:563
 msgid "OFF"
 msgstr ""
 
-#: src/i_basic.c:567
+#: gschem/src/i_basic.c:567
 msgid "NONE"
 msgstr ""
 
-#: src/i_basic.c:572
+#: gschem/src/i_basic.c:572
 #, c-format
 msgid "Grid(%s, %s)"
 msgstr ""
 
-#: src/i_callbacks.c:63
+#: gschem/src/i_callbacks.c:63
 #, c-format
 msgid "Documentation for [%s,%s,%s,%s]\n"
 msgstr "Ð?окÑ?менÑ?аÑ?иÑ? длÑ? [%s, %s, %s, %s]\n"
 
-#: src/i_callbacks.c:123 src/i_callbacks.c:1705
+#: gschem/src/i_callbacks.c:123 gschem/src/i_callbacks.c:1705
 #, c-format
 msgid "New page created [%s]\n"
 msgstr "Создана новаÑ? Ñ?Ñ?Ñ?аниÑ?а [%s]\n"
 
-#: src/i_callbacks.c:163
+#: gschem/src/i_callbacks.c:163
 #, fuzzy, c-format
 msgid "New Window created [%s]\n"
 msgstr "Создано новое окно\n"
 
-#: src/i_callbacks.c:281
+#: gschem/src/i_callbacks.c:281
 msgid "Failed to Save All"
 msgstr "Ð?Ñ?ибка пÑ?и Ñ?оÑ?Ñ?анении вÑ?его"
 
-#: src/i_callbacks.c:283
+#: gschem/src/i_callbacks.c:283
 msgid "Saved All"
 msgstr "Ð?Ñ?е Ñ?оÑ?Ñ?анено"
 
-#: src/i_callbacks.c:373
+#: gschem/src/i_callbacks.c:373
 msgid "Closing Window\n"
 msgstr "Ð?акÑ?Ñ?Ñ?ие окна\n"
 
-#: src/i_callbacks.c:541 src/i_callbacks.c:586 src/i_callbacks.c:631
+#: gschem/src/i_callbacks.c:541 gschem/src/i_callbacks.c:586
+#: gschem/src/i_callbacks.c:631
 msgid "Select objs first"
 msgstr "ТÑ?ебÑ?еÑ?Ñ?Ñ? вÑ?боÑ? обÑ?екÑ?ов"
 
-#: src/i_callbacks.c:710
+#: gschem/src/i_callbacks.c:710
 #, fuzzy
 msgid "Edit pin type"
 msgstr "Ð?Ñ?авка Ñ?ипа линии"
 
-#: src/i_callbacks.c:729
+#: gschem/src/i_callbacks.c:729
 msgid "Edit Text"
 msgstr "Ð?Ñ?авка Ñ?екÑ?Ñ?а"
 
-#: src/i_callbacks.c:752
+#: gschem/src/i_callbacks.c:752
 msgid "Slot"
 msgstr "СлоÑ?"
 
-#: src/i_callbacks.c:769
+#: gschem/src/i_callbacks.c:769
 msgid "Color"
 msgstr "ЦвеÑ?"
 
-#: src/i_callbacks.c:806 src/i_callbacks.c:851
+#: gschem/src/i_callbacks.c:806 gschem/src/i_callbacks.c:851
 msgid "Rotate"
 msgstr "Ð?Ñ?аÑ?аÑ?Ñ?"
 
-#: src/i_callbacks.c:874 src/i_callbacks.c:899
+#: gschem/src/i_callbacks.c:874 gschem/src/i_callbacks.c:899
 msgid "Mirror"
 msgstr "Ð?еÑ?калиÑ?ование"
 
-#: src/i_callbacks.c:956 src/x_dialog.c:1800
+#: gschem/src/i_callbacks.c:956 gschem/src/x_dialog.c:1801
 msgid "Translate"
 msgstr "Ð?еÑ?евод"
 
-#: src/i_callbacks.c:959
+#: gschem/src/i_callbacks.c:959
 msgid "WARNING: Do not translate with snap off!\n"
 msgstr "Ð?Ñ?едÑ?пÑ?еждение: не пеÑ?еводиÑ?е c вÑ?клÑ?Ñ?енной пÑ?ивÑ?зкой!\n"
 
-#: src/i_callbacks.c:960
+#: gschem/src/i_callbacks.c:960
 msgid "WARNING: Turning snap on and continuing with translate.\n"
 msgstr "Ð?Ñ?едÑ?пÑ?еждение: Ð?клÑ?Ñ?иÑ?е пÑ?ивÑ?зкÑ? пÑ?одолжиÑ?е Ñ?Ñ?анÑ?лÑ?Ñ?иÑ?.\n"
 
-#: src/i_callbacks.c:967
+#: gschem/src/i_callbacks.c:967
 msgid "WARNING: Snap grid size is not equal to 100!\n"
 msgstr "Ð?Ñ?едÑ?пÑ?еждение: Ñ?азмеÑ? Ñ?еÑ?ки пÑ?ивÑ?зки не Ñ?авен 100!\n"
 
-#: src/i_callbacks.c:969
+#: gschem/src/i_callbacks.c:969
 msgid ""
 "WARNING: If you are translating a symbol to the origin, the snap grid size "
 "should be set to 100\n"
@@ -913,387 +922,390 @@ msgstr ""
 "Ð?Ñ?едÑ?пÑ?еждение: Ð?Ñ?ли оÑ?Ñ?Ñ?еÑ?Ñ?влÑ?еÑ?Ñ?Ñ? пеÑ?евод Ñ?имвола к наÑ?алÑ? оÑ?Ñ?Ñ?еÑ?а, Ñ?азмеÑ? "
 "Ñ?еÑ?ки пÑ?ивÑ?зки должен бÑ?Ñ?Ñ? Ñ?Ñ?Ñ?ановлен в 100\n"
 
-#: src/i_callbacks.c:1000
+#: gschem/src/i_callbacks.c:1000
 msgid "Embed"
 msgstr "Ð?недÑ?иÑ?Ñ?"
 
-#: src/i_callbacks.c:1041
+#: gschem/src/i_callbacks.c:1041
 msgid "Unembed"
 msgstr "Ð?Ñ?клÑ?Ñ?иÑ?Ñ?"
 
-#: src/i_callbacks.c:1085
+#: gschem/src/i_callbacks.c:1085
 msgid "Update"
 msgstr "Ð?бновиÑ?Ñ?"
 
-#: src/i_callbacks.c:1144
+#: gschem/src/i_callbacks.c:1144
 msgid "ShowHidden"
 msgstr "Ð?оказаÑ?Ñ? Ñ?кÑ?Ñ?Ñ?Ñ?е"
 
-#: src/i_callbacks.c:1168
+#: gschem/src/i_callbacks.c:1168
 msgid "MakeVisible"
 msgstr "СделаÑ?Ñ? видимÑ?м"
 
-#: src/i_callbacks.c:1565
+#: gschem/src/i_callbacks.c:1565
 msgid "Update Cues"
 msgstr "Ð?бновиÑ?Ñ? Ñ?игналÑ?"
 
-#: src/i_callbacks.c:1749
+#: gschem/src/i_callbacks.c:1749
 msgid "Really revert page?"
 msgstr "Ð?ейÑ?Ñ?виÑ?елÑ?но возвÑ?аÑ?иÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ??"
 
-#: src/i_callbacks.c:1819
+#: gschem/src/i_callbacks.c:1819
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1837
+#: gschem/src/i_callbacks.c:1837
 msgid "Cut to clipboard"
 msgstr ""
 
-#: src/i_callbacks.c:1855
+#: gschem/src/i_callbacks.c:1855
 #, fuzzy
 msgid "Paste from clipboard"
 msgstr "Ð?Ñ?Ñ?авиÑ?Ñ? из 1"
 
-#: src/i_callbacks.c:1867 src/i_callbacks.c:2106 src/i_callbacks.c:2128
-#: src/i_callbacks.c:2150 src/i_callbacks.c:2172 src/i_callbacks.c:2194
+#: gschem/src/i_callbacks.c:1867 gschem/src/i_callbacks.c:2106
+#: gschem/src/i_callbacks.c:2128 gschem/src/i_callbacks.c:2150
+#: gschem/src/i_callbacks.c:2172 gschem/src/i_callbacks.c:2194
 msgid "Empty buffer"
 msgstr "Ð?Ñ?Ñ?Ñ?ой бÑ?Ñ?еÑ?"
 
-#: src/i_callbacks.c:1912
+#: gschem/src/i_callbacks.c:1912
 msgid "Copy 1"
 msgstr "Ð?опиÑ?ование 1"
 
-#: src/i_callbacks.c:1931
+#: gschem/src/i_callbacks.c:1931
 msgid "Copy 2"
 msgstr "Ð?опиÑ?ование 2"
 
-#: src/i_callbacks.c:1950
+#: gschem/src/i_callbacks.c:1950
 msgid "Copy 3"
 msgstr "Ð?опиÑ?ование 3"
 
-#: src/i_callbacks.c:1969
+#: gschem/src/i_callbacks.c:1969
 msgid "Copy 4"
 msgstr "Ð?опиÑ?ование 4"
 
-#: src/i_callbacks.c:1988
+#: gschem/src/i_callbacks.c:1988
 msgid "Copy 5"
 msgstr "Ð?опиÑ?ование 5"
 
-#: src/i_callbacks.c:2007
+#: gschem/src/i_callbacks.c:2007
 msgid "Cut 1"
 msgstr "Ð?Ñ?Ñ?езка 1"
 
-#: src/i_callbacks.c:2026
+#: gschem/src/i_callbacks.c:2026
 msgid "Cut 2"
 msgstr "Ð?Ñ?Ñ?езка 2"
 
-#: src/i_callbacks.c:2045
+#: gschem/src/i_callbacks.c:2045
 msgid "Cut 3"
 msgstr "Ð?Ñ?Ñ?езка 3"
 
-#: src/i_callbacks.c:2064
+#: gschem/src/i_callbacks.c:2064
 msgid "Cut 4"
 msgstr "Ð?Ñ?Ñ?езка 4"
 
-#: src/i_callbacks.c:2083
+#: gschem/src/i_callbacks.c:2083
 msgid "Cut 5"
 msgstr "Ð?Ñ?Ñ?езка 5"
 
-#: src/i_callbacks.c:2099
+#: gschem/src/i_callbacks.c:2099
 msgid "Paste 1"
 msgstr "Ð?Ñ?Ñ?авка 1"
 
-#: src/i_callbacks.c:2121
+#: gschem/src/i_callbacks.c:2121
 msgid "Paste 2"
 msgstr "Ð?Ñ?Ñ?авка 2"
 
-#: src/i_callbacks.c:2143
+#: gschem/src/i_callbacks.c:2143
 msgid "Paste 3"
 msgstr "Ð?Ñ?Ñ?авка 3"
 
-#: src/i_callbacks.c:2165
+#: gschem/src/i_callbacks.c:2165
 msgid "Paste 4"
 msgstr "Ð?Ñ?Ñ?авка 4"
 
-#: src/i_callbacks.c:2187
+#: gschem/src/i_callbacks.c:2187
 msgid "Paste 5"
 msgstr "Ð?Ñ?Ñ?авка 5"
 
-#: src/i_callbacks.c:2324 src/x_window.c:354
+#: gschem/src/i_callbacks.c:2324 gschem/src/x_window.c:354
 msgid "Component"
 msgstr "Ð?омпоненÑ?"
 
-#: src/i_callbacks.c:2360 src/i_callbacks.c:2379 src/x_dialog.c:2381
+#: gschem/src/i_callbacks.c:2360 gschem/src/i_callbacks.c:2379
+#: gschem/src/x_dialog.c:2382
 msgid "Attribute"
 msgstr "Ð?Ñ?Ñ?ибÑ?Ñ?Ñ?"
 
-#: src/i_callbacks.c:2877
+#: gschem/src/i_callbacks.c:2877
 #, c-format
 msgid "Searching for source [%s]\n"
 msgstr "Ð?оиÑ?к иÑ?Ñ?оÑ?ника [%s]\n"
 
-#: src/i_callbacks.c:2901
+#: gschem/src/i_callbacks.c:2901
 #, c-format
 msgid "Cannot find source [%s]\n"
 msgstr "Ð?евозможно найÑ?и иÑ?Ñ?оÑ?ник [%s]\n"
 
-#: src/i_callbacks.c:2970
+#: gschem/src/i_callbacks.c:2970
 #, c-format
 msgid "Searching for symbol [%s]\n"
 msgstr "Ð?оиÑ?к Ñ?имвола [%s]\n"
 
-#: src/i_callbacks.c:2976
+#: gschem/src/i_callbacks.c:2976
 msgid "Symbol is not a real file. Symbol cannot be loaded.\n"
 msgstr ""
 
-#: src/i_callbacks.c:3007
+#: gschem/src/i_callbacks.c:3007
 msgid "Cannot find any schematics above the current one!\n"
 msgstr ""
 
-#: src/i_callbacks.c:3061
+#: gschem/src/i_callbacks.c:3061
 msgid ""
 "This command retrieves the component documentation from the web, but there "
 "is no component selected"
 msgstr ""
 
-#: src/i_callbacks.c:3171
+#: gschem/src/i_callbacks.c:3171
 msgid "ShowN"
 msgstr "Ð?оказаÑ?Ñ? N"
 
-#: src/i_callbacks.c:3207
+#: gschem/src/i_callbacks.c:3207
 msgid "ShowV"
 msgstr "Ð?оказаÑ?Ñ? V"
 
-#: src/i_callbacks.c:3243
+#: gschem/src/i_callbacks.c:3243
 msgid "ShowB"
 msgstr "Ð?оказаÑ?Ñ? B"
 
-#: src/i_callbacks.c:3280
+#: gschem/src/i_callbacks.c:3280
 msgid "VisToggle"
 msgstr "Ð?еÑ?екл. видимоÑ?Ñ?и"
 
-#: src/i_callbacks.c:3310
+#: gschem/src/i_callbacks.c:3310
 #, c-format
 msgid "Sorry but this is a non-functioning menu option\n"
 msgstr "Ð?звиниÑ?е6 но Ñ?Ñ?о опÑ?иÑ? не Ñ?Ñ?нкÑ?ионалÑ?ного менÑ?\n"
 
-#: src/i_callbacks.c:3400
+#: gschem/src/i_callbacks.c:3400
 msgid "Action feedback mode set to OUTLINE\n"
 msgstr ""
 
-#: src/i_callbacks.c:3403
+#: gschem/src/i_callbacks.c:3403
 msgid "Action feedback mode set to BOUNDINGBOX\n"
 msgstr ""
 
-#: src/i_callbacks.c:3428
+#: gschem/src/i_callbacks.c:3428
 msgid "Grid OFF\n"
 msgstr "СеÑ?ка вÑ?кл.\n"
 
-#: src/i_callbacks.c:3429
+#: gschem/src/i_callbacks.c:3429
 msgid "Dot grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3430
+#: gschem/src/i_callbacks.c:3430
 msgid "Mesh grid selected\n"
 msgstr ""
 
-#: src/i_callbacks.c:3451
+#: gschem/src/i_callbacks.c:3451
 msgid "Snap OFF (CAUTION!)\n"
 msgstr "Ð?Ñ?ивÑ?зка Ð?ЫÐ?Ð?ЮЧÐ?Ð?Ð? (Ð?нимание!)\n"
 
-#: src/i_callbacks.c:3454
+#: gschem/src/i_callbacks.c:3454
 msgid "Snap ON\n"
 msgstr "Ð?Ñ?ивÑ?зка Ð?Ð?Ð?ЮЧÐ?Ð?Ð?\n"
 
-#: src/i_callbacks.c:3457
+#: gschem/src/i_callbacks.c:3457
 #, fuzzy
 msgid "Snap back to the grid (CAUTION!)\n"
 msgstr "Ð?Ñ?ивÑ?зка Ð?ЫÐ?Ð?ЮЧÐ?Ð?Ð? (Ð?нимание!)\n"
 
-#: src/i_callbacks.c:3483
+#: gschem/src/i_callbacks.c:3483
 msgid "Rubber band OFF \n"
 msgstr ""
 
-#: src/i_callbacks.c:3486
+#: gschem/src/i_callbacks.c:3486
 msgid "Rubber band ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3501
+#: gschem/src/i_callbacks.c:3501
 msgid "magnetic net mode: ON\n"
 msgstr ""
 
-#: src/i_callbacks.c:3504
+#: gschem/src/i_callbacks.c:3504
 msgid "magnetic net mode: OFF\n"
 msgstr ""
 
-#: src/o_box.c:160
+#: gschem/src/o_box.c:153
 #, c-format
 msgid "Unknown type for box (fill)!\n"
 msgstr "Ð?еизвеÑ?Ñ?нÑ?й Ñ?ип длÑ? пÑ?Ñ?моÑ?голÑ?ника (Ñ? заливкой)!\n"
 
-#: src/o_buffer.c:57
+#: gschem/src/o_buffer.c:57
 #, c-format
 msgid "o_buffer_copy: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:72
+#: gschem/src/o_buffer.c:72
 #, c-format
 msgid "o_buffer_cut: Invalid buffer %i\n"
 msgstr ""
 
-#: src/o_buffer.c:93
+#: gschem/src/o_buffer.c:93
 #, c-format
 msgid "Got an invalid buffer_number [o_buffer_paste_start]\n"
 msgstr "Ð?олÑ?Ñ?ен невеÑ?нÑ?й buffer_number [o_buffer_paste_start]\n"
 
-#: src/o_bus.c:135
+#: gschem/src/o_bus.c:118
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_bus_draw_stretch\n"
 msgstr "Ð?олÑ?Ñ?ен невеÑ?нÑ?й паÑ?амеÑ?Ñ? в o_bus_draw_xor_single\n"
 
-#: src/o_circle.c:141
+#: gschem/src/o_circle.c:134
 #, c-format
 msgid "Unknown type for circle (fill)!\n"
 msgstr "Ð?еизвеÑ?Ñ?нÑ?й Ñ?ип длÑ? окÑ?Ñ?жноÑ?Ñ?и (Ñ? заливкой)!\n"
 
-#: src/o_complex.c:250 src/o_complex.c:254
+#: gschem/src/o_complex.c:250 gschem/src/o_complex.c:254
 #, c-format
 msgid "Translating schematic [%d %d]\n"
 msgstr "Ð?еÑ?евод Ñ?Ñ?емÑ? [%d %d]\n"
 
-#: src/o_misc.c:61
+#: gschem/src/o_misc.c:61
 #, c-format
 msgid "Got an unexpected NULL in o_edit\n"
 msgstr "Ð?еожиданнÑ?й NULL в o_edit\n"
 
-#: src/o_misc.c:125
+#: gschem/src/o_misc.c:125
 #, fuzzy
 msgid "Object already locked\n"
 msgstr "Ð?бÑ?екÑ? Ñ?же заблокиÑ?ован\n"
 
-#: src/o_misc.c:163
+#: gschem/src/o_misc.c:163
 #, fuzzy
 msgid "Object already unlocked\n"
 msgstr "Ð?бÑ?екÑ? Ñ?же Ñ?азблокиÑ?ован\n"
 
-#: src/o_misc.c:445
+#: gschem/src/o_misc.c:445
 msgid "Hidden text is now visible\n"
 msgstr "СкÑ?Ñ?Ñ?Ñ?й Ñ?екÑ?Ñ? Ñ?ейÑ?аÑ? видим\n"
 
-#: src/o_misc.c:447
+#: gschem/src/o_misc.c:447
 msgid "Hidden text is now invisible\n"
 msgstr "СкÑ?Ñ?Ñ?Ñ?й Ñ?еÑ?кÑ? Ñ?ейÑ?аÑ? невидим\n"
 
-#: src/o_misc.c:700
+#: gschem/src/o_misc.c:700
 #, c-format
 msgid "Could not find symbol [%s] in library. Update failed.\n"
 msgstr ""
 
-#: src/o_misc.c:847
+#: gschem/src/o_misc.c:847
 #, c-format
 msgid "o_autosave_backups: Can't get the real filename of %s."
 msgstr "o_autosave_backups: невозможно полÑ?Ñ?иÑ?Ñ? Ñ?еалÑ?но имÑ? Ñ?айла длÑ? %s."
 
-#: src/o_misc.c:891
+#: gschem/src/o_misc.c:891
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "Ð?евозможно Ñ?Ñ?Ñ?ановиÑ?Ñ? Ñ?ежим Ñ?Ñ?ениÑ?-запиÑ?и длÑ? пÑ?едÑ?дÑ?Ñ?ей Ñ?езеÑ?вной копии "
 "Ñ?айла [%s]\n"
 
-#: src/o_misc.c:909
+#: gschem/src/o_misc.c:909
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Ð?евозможно Ñ?Ñ?Ñ?ановиÑ?Ñ? Ñ?ежим Ñ?олÑ?ко Ñ?Ñ?ениÑ? длÑ? Ñ?езеÑ?вного Ñ?айла [%s]\n"
 
-#: src/o_misc.c:914
+#: gschem/src/o_misc.c:914
 #, c-format
 msgid "Could NOT save backup file [%s]\n"
 msgstr "Ð?евозможно Ñ?оÑ?Ñ?аниÑ?Ñ? Ñ?езеÑ?внÑ?й Ñ?айл [%s]\n"
 
-#: src/o_move.c:188
+#: gschem/src/o_move.c:188
 #, c-format
 msgid "ERROR: NULL object in o_move_end!\n"
 msgstr "Ð?Ñ?ибка: обÑ?екÑ? NULL в o_move_end!\n"
 
-#: src/o_move.c:461
+#: gschem/src/o_move.c:461
 #, c-format
 msgid "DOH! tried to find the whichone, but didn't find it!\n"
 msgstr "Ð?Ñ?! Ð?опÑ?Ñ?ка найÑ?и Ñ?Ñ?о-либо, но ниÑ?его не полÑ?Ñ?аеÑ?Ñ?Ñ?!\n"
 
-#: src/o_move.c:482
+#: gschem/src/o_move.c:482
 #, c-format
 msgid "Got a non line object in o_move_check_endpoint\n"
 msgstr "Ð?олÑ?Ñ?ен обÑ?екÑ? не линиÑ? в o_move_check_endpoint\n"
 
-#: src/o_net.c:176
+#: gschem/src/o_net.c:159
 #, fuzzy, c-format
 msgid "Got an invalid which one in o_net_draw_stretch\n"
 msgstr "Ð?олÑ?Ñ?ен невеÑ?нÑ?й паÑ?амеÑ?Ñ? в o_net_draw_xor_single\n"
 
-#: src/o_net.c:552
+#: gschem/src/o_net.c:536
 msgid "Warning: Starting net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:614
+#: gschem/src/o_net.c:598
 msgid "Warning: Ending net at off grid coordinate\n"
 msgstr ""
 
-#: src/o_net.c:982 src/o_net.c:1019 src/o_net.c:1090 src/o_net.c:1126
+#: gschem/src/o_net.c:966 gschem/src/o_net.c:1003 gschem/src/o_net.c:1074
+#: gschem/src/o_net.c:1110
 #, c-format
 msgid "Tried to add more than two bus rippers. Internal gschem error.\n"
 msgstr "Ð?опÑ?Ñ?ка добавиÑ?Ñ? более двÑ?Ñ? Ñ?азÑ?Ñ?вов Ñ?инÑ?. Ð?нÑ?Ñ?Ñ?еннÑ?Ñ? оÑ?ибка gschem.\n"
 
-#: src/o_net.c:1196
+#: gschem/src/o_net.c:1180
 #, fuzzy, c-format
 msgid "Bus ripper symbol [%s] was not found in any component library\n"
 msgstr "Ð?евозможно найÑ?и %s ни в одной из библиоÑ?ек компоненÑ?ов\n"
 
-#: src/o_path.c:356
+#: gschem/src/o_path.c:348
 #, fuzzy, c-format
 msgid "Unknown type for path (fill)!\n"
 msgstr "Ð?еизвеÑ?Ñ?нÑ?й Ñ?ип длÑ? пÑ?Ñ?моÑ?голÑ?ника (Ñ? заливкой)!\n"
 
-#: src/o_picture.c:166 src/o_picture.c:557
+#: gschem/src/o_picture.c:166 gschem/src/o_picture.c:550
 #, c-format
 msgid "Failed to load picture: %s"
 msgstr "Ð?евозможно загÑ?зиÑ?аÑ?Ñ? изобÑ?ажение: [%s]"
 
-#: src/o_picture.c:180
+#: gschem/src/o_picture.c:180
 msgid "Picture"
 msgstr "Ð?зобÑ?ажение"
 
-#: src/o_picture.c:465 src/x_attribedit.c:141
+#: gschem/src/o_picture.c:458 gschem/src/x_attribedit.c:141
 #, c-format
 msgid "ERROR: NULL object!\n"
 msgstr "Ð?Ñ?ибка: обÑ?екÑ? NULL!\n"
 
-#: src/o_slot.c:81
+#: gschem/src/o_slot.c:81
 msgid "Slot attribute malformed\n"
 msgstr "Ð?Ñ?Ñ?ибÑ?Ñ? Ñ?лоÑ?а иÑ?поÑ?Ñ?ен\n"
 
-#: src/o_slot.c:99
+#: gschem/src/o_slot.c:99
 msgid "numslots attribute missing\n"
 msgstr "оÑ?Ñ?Ñ?Ñ?Ñ?Ñ?вÑ?еÑ? аÑ?Ñ?ибÑ?Ñ? numslots\n"
 
-#: src/o_slot.c:100
+#: gschem/src/o_slot.c:100
 msgid "Slotting not allowed for this component\n"
 msgstr "СлоÑ?иÑ?ование не допÑ?Ñ?Ñ?имо длÑ? Ñ?Ñ?ого компоненÑ?а\n"
 
-#: src/o_slot.c:115
+#: gschem/src/o_slot.c:115
 msgid "New slot number out of range\n"
 msgstr "Ð?омеÑ? нового Ñ?лоÑ?а вÑ?Ñ?одиÑ? за пÑ?еделÑ?\n"
 
-#: src/o_slot.c:170
+#: gschem/src/o_slot.c:170
 #, c-format
 msgid "uggg! you tried to slot edit something that doesn't exist!\n"
 msgstr "Ð?Ñ? пÑ?Ñ?аеÑ?еÑ?Ñ? пÑ?авиÑ?Ñ? Ñ?лоÑ? Ñ?его-Ñ?о неÑ?Ñ?Ñ?еÑ?Ñ?вÑ?Ñ?Ñ?его!\n"
 
-#: src/o_undo.c:300
+#: gschem/src/o_undo.c:300
 msgid "Undo/Redo disabled in rc file\n"
 msgstr "Ð?Ñ?мена/Ð?овÑ?оÑ?  вÑ?клÑ?Ñ?енÑ? в rc-Ñ?айле\n"
 
-#: src/parsecmd.c:47
+#: gschem/src/parsecmd.c:47
 #, c-format
 msgid ""
 "Usage: %s [OPTIONS] schematic_filename1 ... schematic_filenameN\n"
@@ -1318,260 +1330,262 @@ msgstr ""
 "  -h            Ð?омоÑ?Ñ?; Ñ?Ñ?о Ñ?ообÑ?ение\n"
 "\n"
 
-#: src/x_attribedit.c:127
+#: gschem/src/x_attribedit.c:127
 #, c-format
 msgid "Got invalid show option; defaulting to show both\n"
 msgstr "Ð?олÑ?Ñ?ена невеÑ?наÑ? опÑ?иÑ? пÑ?оÑ?моÑ?Ñ?а, Ñ?Ñ?Ñ?анавливаеÑ?Ñ?Ñ? пÑ?оÑ?моÑ?Ñ? обоиÑ?\n"
 
-#: src/x_attribedit.c:330
+#: gschem/src/x_attribedit.c:330
 msgid "Single Attribute Editor"
 msgstr "РедакÑ?оÑ? одного аÑ?Ñ?ибÑ?Ñ?а"
 
-#: src/x_attribedit.c:359
+#: gschem/src/x_attribedit.c:359
 #, fuzzy
 msgid "<b>Edit Attribute</b>"
 msgstr "РедакÑ?иÑ?оваÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?Ñ?"
 
-#: src/x_attribedit.c:361
+#: gschem/src/x_attribedit.c:361
 #, fuzzy
 msgid "<b>Add Attribute</b>"
 msgstr "Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_attribedit.c:377 src/x_multiattrib.c:1921
+#: gschem/src/x_attribedit.c:377 gschem/src/x_multiattrib.c:1921
 msgid "Name:"
 msgstr "Ð?мÑ?:"
 
-#: src/x_attribedit.c:393 src/x_multiattrib.c:1940
+#: gschem/src/x_attribedit.c:394 gschem/src/x_multiattrib.c:1940
 msgid "Value:"
 msgstr "Ð?наÑ?ение:"
 
-#: src/x_attribedit.c:409 src/x_multiattrib.c:1983
+#: gschem/src/x_attribedit.c:410 gschem/src/x_multiattrib.c:1983
 msgid "Visible"
 msgstr "Ð?идимÑ?й"
 
-#: src/x_attribedit.c:429
+#: gschem/src/x_attribedit.c:430
 msgid "Show Value Only"
 msgstr "Ð?оказаÑ?Ñ? Ñ?олÑ?ко знаÑ?ение"
 
-#: src/x_attribedit.c:431
+#: gschem/src/x_attribedit.c:432
 msgid "Show Name Only"
 msgstr "Ð?оказаÑ?Ñ? Ñ?олÑ?ко имÑ?"
 
-#: src/x_attribedit.c:433 src/x_multiattrib.c:1459
+#: gschem/src/x_attribedit.c:434 gschem/src/x_multiattrib.c:1459
 msgid "Show Name & Value"
 msgstr "Ð?оказаÑ?Ñ? имÑ? и знаÑ?ение"
 
-#: src/x_attribedit.c:440
+#: gschem/src/x_attribedit.c:441
 #, fuzzy
 msgid "<b>Attach Options</b>"
 msgstr "Ð?аÑ?Ñ?Ñ?ойки"
 
-#: src/x_attribedit.c:455
+#: gschem/src/x_attribedit.c:456
 msgid "All"
 msgstr "Ð?Ñ?е"
 
-#: src/x_attribedit.c:463 src/x_compselect.c:895 src/x_compselect.c:1009
+#: gschem/src/x_attribedit.c:464 gschem/src/x_compselect.c:895
+#: gschem/src/x_compselect.c:1009
 msgid "Components"
 msgstr "Ð?омпоненÑ?Ñ?"
 
-#: src/x_attribedit.c:471 src/x_window.c:364
+#: gschem/src/x_attribedit.c:472 gschem/src/x_window.c:364
 msgid "Nets"
 msgstr "Ð?Ñ?оводники"
 
-#: src/x_attribedit.c:479
+#: gschem/src/x_attribedit.c:480
 msgid "Replace existing attributes"
 msgstr ""
 
-#: src/x_autonumber.c:415
+#: gschem/src/x_autonumber.c:415
 msgid ""
 "slotted object without slot attribute may cause problems when autonumbering "
 "slots\n"
 msgstr ""
 
-#: src/x_autonumber.c:430
+#: gschem/src/x_autonumber.c:430
 #, c-format
 msgid ""
 "duplicate slot may cause problems: [symbolname=%s, number=%d, slot=%d]\n"
 msgstr ""
 
-#: src/x_autonumber.c:702
+#: gschem/src/x_autonumber.c:702
 msgid "No searchstring given in autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:754
+#: gschem/src/x_autonumber.c:754
 msgid "No '*' or '?' given at the end of the autonumber text.\n"
 msgstr ""
 
-#: src/x_autonumber.c:889
+#: gschem/src/x_autonumber.c:889
 #, fuzzy
 msgid "Diagonal"
 msgstr "диагоналÑ?нÑ?й"
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Top to bottom"
 msgstr ""
 
-#: src/x_autonumber.c:890
+#: gschem/src/x_autonumber.c:890
 msgid "Bottom to top"
 msgstr ""
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 #, fuzzy
 msgid "Left to right"
 msgstr "левÑ?й пÑ?авÑ?й"
 
-#: src/x_autonumber.c:891
+#: gschem/src/x_autonumber.c:891
 msgid "Right to left"
 msgstr ""
 
-#: src/x_autonumber.c:892
+#: gschem/src/x_autonumber.c:892
 #, fuzzy
 msgid "File order"
 msgstr "поÑ?Ñ?док Ñ?айлов"
 
-#: src/x_autonumber.c:1228
+#: gschem/src/x_autonumber.c:1228
 msgid "Autonumber text"
 msgstr "Ð?вÑ?онÑ?меÑ?оваÑ?Ñ? Ñ?екÑ?Ñ?"
 
-#: src/x_autonumber.c:1252
+#: gschem/src/x_autonumber.c:1252
 msgid "<b>Scope</b>"
 msgstr ""
 
-#: src/x_autonumber.c:1274
+#: gschem/src/x_autonumber.c:1274
 #, fuzzy
 msgid "Search for:"
 msgstr "поиÑ?к Ñ?окÑ?Ñ?а"
 
-#: src/x_autonumber.c:1288
+#: gschem/src/x_autonumber.c:1288
 #, fuzzy
 msgid "Autonumber text in:"
 msgstr "Ð?вÑ?онÑ?меÑ?оваÑ?Ñ? Ñ?екÑ?Ñ?"
 
-#: src/x_autonumber.c:1295
+#: gschem/src/x_autonumber.c:1295
 msgid "Skip numbers found in:"
 msgstr ""
 
-#: src/x_autonumber.c:1307 src/x_autonumber.c:1316
+#: gschem/src/x_autonumber.c:1307 gschem/src/x_autonumber.c:1316
 #, fuzzy
 msgid "Selected objects"
 msgstr "вÑ?бÑ?анÑ? обÑ?екÑ?Ñ?"
 
-#: src/x_autonumber.c:1308 src/x_autonumber.c:1317
+#: gschem/src/x_autonumber.c:1308 gschem/src/x_autonumber.c:1317
 #, fuzzy
 msgid "Current page"
 msgstr "Ñ?екÑ?Ñ?ий лиÑ?Ñ?"
 
-#: src/x_autonumber.c:1309 src/x_autonumber.c:1318
+#: gschem/src/x_autonumber.c:1309 gschem/src/x_autonumber.c:1318
 #, fuzzy
 msgid "Whole hierarchy"
 msgstr "Ð?еÑ?аÑ?Ñ?иÑ?"
 
-#: src/x_autonumber.c:1320
+#: gschem/src/x_autonumber.c:1320
 msgid "Overwrite existing numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1325
+#: gschem/src/x_autonumber.c:1325
 #, fuzzy
 msgid "<b>Options</b>"
 msgstr "Ð?аÑ?Ñ?Ñ?ойки"
 
-#: src/x_autonumber.c:1347
+#: gschem/src/x_autonumber.c:1347
 #, fuzzy
 msgid "Starting number:"
 msgstr "Ñ?Ñ?аÑ?Ñ?овÑ?й номеÑ?"
 
-#: src/x_autonumber.c:1354
+#: gschem/src/x_autonumber.c:1354
 #, fuzzy
 msgid "Sort order:"
 msgstr "поÑ?Ñ?док Ñ?оÑ?Ñ?иÑ?овки"
 
-#: src/x_autonumber.c:1375
+#: gschem/src/x_autonumber.c:1375
 msgid "Remove numbers"
 msgstr ""
 
-#: src/x_autonumber.c:1379
+#: gschem/src/x_autonumber.c:1379
 msgid "Automatic slotting"
 msgstr ""
 
-#: src/x_color.c:94 src/x_color.c:103
+#: gschem/src/x_color.c:94 gschem/src/x_color.c:103
 #, c-format
 msgid "Could not allocate the color %s!\n"
 msgstr "Ð?евозможно назнаÑ?иÑ?Ñ? Ñ?веÑ? %s!\n"
 
-#: src/x_color.c:94
+#: gschem/src/x_color.c:94
 msgid "black"
 msgstr "Ñ?еÑ?нÑ?й"
 
-#: src/x_color.c:103
+#: gschem/src/x_color.c:103
 msgid "white"
 msgstr "белÑ?й"
 
-#: src/x_color.c:125
+#: gschem/src/x_color.c:125
 #, fuzzy, c-format
 msgid "Could not allocate display color %i!\n"
 msgstr "Ð?евозможно назнаÑ?иÑ?Ñ? Ñ?веÑ? %s!\n"
 
-#: src/x_color.c:147
+#: gschem/src/x_color.c:147
 #, fuzzy, c-format
 msgid "Could not allocate outline color %i!\n"
 msgstr "Ð?евозможно назнаÑ?иÑ?Ñ? Ñ?веÑ? %s!\n"
 
-#: src/x_color.c:164 src/x_color.c:181 src/x_color.c:197
+#: gschem/src/x_color.c:164 gschem/src/x_color.c:181 gschem/src/x_color.c:197
 #, c-format
 msgid "Tried to get an invalid color: %d\n"
 msgstr "Ð?опÑ?Ñ?ка полÑ?Ñ?ениÑ? невеÑ?ного Ñ?веÑ?а: %d\n"
 
-#: src/x_color.c:214
+#: gschem/src/x_color.c:214
 #, fuzzy, c-format
 msgid "Tried to get an invalid outline color: %d\n"
 msgstr "Ð?опÑ?Ñ?ка полÑ?Ñ?ениÑ? невеÑ?ного Ñ?веÑ?а: %d\n"
 
-#: src/x_compselect.c:1039
+#: gschem/src/x_compselect.c:1039
 #, fuzzy
 msgid "Filter:"
 msgstr "ФилÑ?Ñ?Ñ?"
 
-#: src/x_compselect.c:1142 src/x_dialog.c:3776 src/x_multiattrib.c:1787
+#: gschem/src/x_compselect.c:1142 gschem/src/x_dialog.c:3758
+#: gschem/src/x_multiattrib.c:1787
 msgid "Name"
 msgstr "Ð?мÑ?"
 
-#: src/x_compselect.c:1151 src/x_multiattrib.c:1811
+#: gschem/src/x_compselect.c:1151 gschem/src/x_multiattrib.c:1811
 msgid "Value"
 msgstr "Ð?наÑ?ение"
 
-#: src/x_compselect.c:1190
+#: gschem/src/x_compselect.c:1190
 msgid "Default behavior - reference component"
 msgstr "Ð?оÑ?малÑ?ное поведение - Ñ?Ñ?Ñ?лка на компоненÑ?"
 
-#: src/x_compselect.c:1193
+#: gschem/src/x_compselect.c:1193
 msgid "Embed component in schematic"
 msgstr "Ð?недÑ?иÑ?Ñ? компоненÑ? в Ñ?Ñ?емÑ?"
 
-#: src/x_compselect.c:1196
+#: gschem/src/x_compselect.c:1196
 msgid "Include component as individual objects"
 msgstr "Ð?клÑ?Ñ?иÑ?Ñ? компоненÑ? как индивидÑ?алÑ?нÑ?й обÑ?екÑ?"
 
-#: src/x_compselect.c:1353
+#: gschem/src/x_compselect.c:1353
 msgid "Select Component..."
 msgstr "Ð?Ñ?бÑ?аÑ?Ñ? компоненÑ?..."
 
-#: src/x_compselect.c:1376
+#: gschem/src/x_compselect.c:1376
 msgid "In Use"
 msgstr ""
 
-#: src/x_compselect.c:1380
+#: gschem/src/x_compselect.c:1380
 msgid "Libraries"
 msgstr "Ð?иблиоÑ?еки"
 
-#: src/x_compselect.c:1389 src/x_fileselect.c:122
+#: gschem/src/x_compselect.c:1389 gschem/src/x_fileselect.c:122
 msgid "Preview"
 msgstr "Ð?Ñ?едваÑ?иÑ?елÑ?нÑ?й пÑ?оÑ?моÑ?Ñ?"
 
-#: src/x_dialog.c:174
+#: gschem/src/x_dialog.c:175
 msgid "Text Entry..."
 msgstr "ТекÑ?Ñ?овое вÑ?ождение..."
 
-#: src/x_dialog.c:205
+#: gschem/src/x_dialog.c:206
 msgid ""
 "Enter text, click apply,\n"
 "move cursor into window, click to place text.\n"
@@ -1581,193 +1595,196 @@ msgstr ""
 "пеÑ?емеÑ?Ñ?иÑ?е кÑ?Ñ?Ñ?оÑ? в окно, Ñ?елкниÑ?е длÑ? Ñ?Ñ?Ñ?ановки Ñ?екÑ?Ñ?а.\n"
 "СÑ?еднÑ?Ñ? кнопка пÑ?едназнаÑ?ена длÑ? вÑ?аÑ?ениÑ? во вÑ?емÑ? Ñ?Ñ?Ñ?ановки."
 
-#: src/x_dialog.c:294
+#: gschem/src/x_dialog.c:295
 msgid "Lower Left"
 msgstr "Ð?ижний левÑ?й"
 
-#: src/x_dialog.c:305
+#: gschem/src/x_dialog.c:306
 msgid "Middle Left"
 msgstr "СÑ?едний левÑ?й"
 
-#: src/x_dialog.c:316
+#: gschem/src/x_dialog.c:317
 msgid "Upper Left"
 msgstr "Ð?еÑ?Ñ?ний левÑ?й"
 
-#: src/x_dialog.c:327
+#: gschem/src/x_dialog.c:328
 msgid "Lower Middle"
 msgstr "Ð?ижний Ñ?Ñ?едний"
 
-#: src/x_dialog.c:338
+#: gschem/src/x_dialog.c:339
 msgid "Middle Middle"
 msgstr "СÑ?едний Ñ?Ñ?едний"
 
-#: src/x_dialog.c:349
+#: gschem/src/x_dialog.c:350
 msgid "Upper Middle"
 msgstr "Ð?еÑ?Ñ?ний Ñ?Ñ?едний"
 
-#: src/x_dialog.c:360
+#: gschem/src/x_dialog.c:361
 msgid "Lower Right"
 msgstr "Ð?ижний пÑ?авÑ?й"
 
-#: src/x_dialog.c:371
+#: gschem/src/x_dialog.c:372
 msgid "Middle Right"
 msgstr "СÑ?едний пÑ?авÑ?й"
 
-#: src/x_dialog.c:382
+#: gschem/src/x_dialog.c:383
 msgid "Upper Right"
 msgstr "Ð?еÑ?Ñ?ний пÑ?авÑ?й"
 
-#: src/x_dialog.c:496
+#: gschem/src/x_dialog.c:497
 #, fuzzy
 msgid "Edit Text Properties"
 msgstr "Ð?Ñ?авка Ñ?азмеÑ?а Ñ?екÑ?Ñ?а"
 
-#: src/x_dialog.c:530
+#: gschem/src/x_dialog.c:531
 #, fuzzy
 msgid "<b>Text Content</b>"
 msgstr "Ð?аÑ?Ñ?Ñ?ойки"
 
-#: src/x_dialog.c:562
+#: gschem/src/x_dialog.c:563
 #, fuzzy
 msgid "<b>Text Properties</b>"
 msgstr "Ð?аÑ?Ñ?Ñ?ойки"
 
-#: src/x_dialog.c:577
+#: gschem/src/x_dialog.c:578
 #, fuzzy
 msgid "Color:"
 msgstr "ЦвеÑ?"
 
-#: src/x_dialog.c:584
+#: gschem/src/x_dialog.c:585
 msgid "Size:"
 msgstr ""
 
-#: src/x_dialog.c:593
+#: gschem/src/x_dialog.c:594
 #, fuzzy
 msgid "Alignment:"
 msgstr "Ð?Ñ?авка вÑ?Ñ?авниваниÑ? Ñ?екÑ?Ñ?а"
 
-#: src/x_dialog.c:647
+#: gschem/src/x_dialog.c:648
 msgid "Solid"
 msgstr "СплоÑ?ной"
 
-#: src/x_dialog.c:648
+#: gschem/src/x_dialog.c:649
 msgid "Dotted"
 msgstr "Ð?Ñ?нкÑ?иÑ? Ñ? Ñ?оÑ?кой"
 
-#: src/x_dialog.c:649
+#: gschem/src/x_dialog.c:650
 msgid "Dashed"
 msgstr "Ð?Ñ?нкÑ?иÑ? Ñ? деÑ?иÑ?ом"
 
-#: src/x_dialog.c:650
+#: gschem/src/x_dialog.c:651
 msgid "Center"
 msgstr "ЦенÑ?Ñ?иÑ?ованнÑ?й"
 
-#: src/x_dialog.c:651
+#: gschem/src/x_dialog.c:652
 msgid "Phantom"
 msgstr "Ð?Ñ?кÑ?Ñ?Ñ?Ñ?веннÑ?й"
 
-#: src/x_dialog.c:652 src/x_dialog.c:749 src/x_dialog.c:758 src/x_dialog.c:767
-#: src/x_dialog.c:868 src/x_dialog.c:870 src/x_dialog.c:872
-#: src/x_dialog.c:1100 src/x_dialog.c:1203 src/x_dialog.c:1212
-#: src/x_dialog.c:1221 src/x_dialog.c:1230 src/x_dialog.c:1239
-#: src/x_dialog.c:1352 src/x_dialog.c:1354 src/x_dialog.c:1356
-#: src/x_dialog.c:1358 src/x_dialog.c:1360
+#: gschem/src/x_dialog.c:653 gschem/src/x_dialog.c:750
+#: gschem/src/x_dialog.c:759 gschem/src/x_dialog.c:768
+#: gschem/src/x_dialog.c:869 gschem/src/x_dialog.c:871
+#: gschem/src/x_dialog.c:873 gschem/src/x_dialog.c:1101
+#: gschem/src/x_dialog.c:1204 gschem/src/x_dialog.c:1213
+#: gschem/src/x_dialog.c:1222 gschem/src/x_dialog.c:1231
+#: gschem/src/x_dialog.c:1240 gschem/src/x_dialog.c:1353
+#: gschem/src/x_dialog.c:1355 gschem/src/x_dialog.c:1357
+#: gschem/src/x_dialog.c:1359 gschem/src/x_dialog.c:1361
 msgid "*unchanged*"
 msgstr "*неизменено*"
 
-#: src/x_dialog.c:978
+#: gschem/src/x_dialog.c:979
 msgid "Edit Line Width & Type"
 msgstr "Ð?Ñ?авка Ñ?иÑ?инÑ? и Ñ?ипа линии"
 
-#: src/x_dialog.c:1017 src/x_print.c:307
+#: gschem/src/x_dialog.c:1018 gschem/src/x_print.c:307
 #, fuzzy
 msgid "Type:"
 msgstr "Тип"
 
-#: src/x_dialog.c:1021
+#: gschem/src/x_dialog.c:1022
 #, fuzzy
 msgid "Width:"
 msgstr "ШиÑ?ина"
 
-#: src/x_dialog.c:1025
+#: gschem/src/x_dialog.c:1026
 #, fuzzy
 msgid "Dash Length:"
 msgstr "Ð?лина деÑ?иÑ?а линии"
 
-#: src/x_dialog.c:1029
+#: gschem/src/x_dialog.c:1030
 #, fuzzy
 msgid "Dash Space:"
 msgstr "Ð?еÑ?иÑ?нÑ?й пÑ?обел линии"
 
-#: src/x_dialog.c:1096
+#: gschem/src/x_dialog.c:1097
 msgid "Hollow"
 msgstr "Ð?огнÑ?Ñ?Ñ?"
 
-#: src/x_dialog.c:1097
+#: gschem/src/x_dialog.c:1098
 msgid "Filled"
 msgstr "Ð?аполнено"
 
-#: src/x_dialog.c:1098
+#: gschem/src/x_dialog.c:1099
 msgid "Mesh"
 msgstr "ЯÑ?ейка"
 
-#: src/x_dialog.c:1099
+#: gschem/src/x_dialog.c:1100
 msgid "Hatch"
 msgstr "ШÑ?Ñ?иÑ?"
 
-#: src/x_dialog.c:1470
+#: gschem/src/x_dialog.c:1471
 msgid "Edit Fill Type"
 msgstr "Ð?Ñ?авка Ñ?ипа заливки"
 
-#: src/x_dialog.c:1508
+#: gschem/src/x_dialog.c:1509
 #, fuzzy
 msgid "Fill Type:"
 msgstr "Тип заливки"
 
-#: src/x_dialog.c:1512
+#: gschem/src/x_dialog.c:1513
 #, fuzzy
 msgid "Line Width:"
 msgstr "ШиÑ?ина линии"
 
-#: src/x_dialog.c:1516
+#: gschem/src/x_dialog.c:1517
 #, fuzzy
 msgid "Angle 1:"
 msgstr "Угол1"
 
-#: src/x_dialog.c:1520
+#: gschem/src/x_dialog.c:1521
 #, fuzzy
 msgid "Pitch 1:"
 msgstr "Ð?аклон1"
 
-#: src/x_dialog.c:1524
+#: gschem/src/x_dialog.c:1525
 #, fuzzy
 msgid "Angle 2:"
 msgstr "Угол2"
 
-#: src/x_dialog.c:1528
+#: gschem/src/x_dialog.c:1529
 #, fuzzy
 msgid "Pitch 2:"
 msgstr "Ð?аклон2"
 
-#: src/x_dialog.c:1657
+#: gschem/src/x_dialog.c:1658
 msgid "Arc Params"
 msgstr "Ð?аÑ?амеÑ?Ñ?Ñ? дÑ?ги"
 
-#: src/x_dialog.c:1697
+#: gschem/src/x_dialog.c:1698
 msgid "Arc Radius:"
 msgstr ""
 
-#: src/x_dialog.c:1705
+#: gschem/src/x_dialog.c:1706
 #, fuzzy
 msgid "Start Angle:"
 msgstr "Ð?аÑ?ало Ñ?гла"
 
-#: src/x_dialog.c:1713
+#: gschem/src/x_dialog.c:1714
 #, fuzzy
 msgid "Degrees of Sweep:"
 msgstr "Угол Ñ?азвеÑ?Ñ?ки в гÑ?адÑ?Ñ?аÑ?"
 
-#: src/x_dialog.c:1830
+#: gschem/src/x_dialog.c:1831
 msgid ""
 "Offset to translate?\n"
 "(0 for origin)"
@@ -1775,50 +1792,50 @@ msgstr ""
 "СмеÑ?ение длÑ? пеÑ?евода?\n"
 "(о длÑ? наÑ?ала оÑ?Ñ?Ñ?еÑ?а)"
 
-#: src/x_dialog.c:1898
+#: gschem/src/x_dialog.c:1899
 msgid "Text Size"
 msgstr "РазмеÑ? Ñ?екÑ?Ñ?а"
 
-#: src/x_dialog.c:1928
+#: gschem/src/x_dialog.c:1929
 #, fuzzy
 msgid "Enter new text size:"
 msgstr "Ð?ведиÑ?е новÑ?й Ñ?азмеÑ? Ñ?екÑ?Ñ?а"
 
-#: src/x_dialog.c:2004
+#: gschem/src/x_dialog.c:2005
 #, fuzzy
 msgid "Snap Size"
 msgstr "СеÑ?ка пÑ?ивÑ?зки"
 
-#: src/x_dialog.c:2034
+#: gschem/src/x_dialog.c:2035
 #, fuzzy
 msgid "Enter new snap grid spacing:"
 msgstr "Ð?ведиÑ?е новÑ?й Ñ?аг Ñ?еÑ?ки пÑ?ивÑ?зки"
 
-#: src/x_dialog.c:2110
+#: gschem/src/x_dialog.c:2111
 msgid "Edit slot number"
 msgstr "Ð?Ñ?авка номеÑ?а Ñ?лоÑ?а"
 
-#: src/x_dialog.c:2141
+#: gschem/src/x_dialog.c:2142
 #, fuzzy
 msgid "Edit slot number:"
 msgstr "Ð?Ñ?авка номеÑ?а Ñ?лоÑ?а"
 
-#: src/x_dialog.c:2202
+#: gschem/src/x_dialog.c:2203
 msgid "About..."
 msgstr "Ð?..."
 
-#: src/x_dialog.c:2222
+#: gschem/src/x_dialog.c:2223
 #, fuzzy
 msgid "<b>gEDA: GPL Electronic Design Automation</b>"
 msgstr ""
 "gEDA: СиÑ?Ñ?ема Ð?вÑ?омаÑ?изиÑ?ованного Ð?РоекÑ?иÑ?ованиÑ? Ñ?лекÑ?Ñ?оннÑ?Ñ? Ñ?Ñ?ем (GPL)"
 
-#: src/x_dialog.c:2226
+#: gschem/src/x_dialog.c:2227
 #, fuzzy, c-format
 msgid "<b>gschem version %s%s.%s</b>"
 msgstr "веÑ?Ñ?иÑ? gschem %s%s.%s"
 
-#: src/x_dialog.c:2234
+#: gschem/src/x_dialog.c:2235
 #, fuzzy
 msgid ""
 "Written by:\n"
@@ -1832,160 +1849,160 @@ msgstr ""
 "Ð? многими дÑ?Ñ?гими (Ñ?моÑ?Ñ?иÑ?е Ñ?айл AUTHORS) \n"
 "Ð?еÑ?евод: Andy Shevchenko <andy@xxxxxxxxxxxx>"
 
-#: src/x_dialog.c:2297
+#: gschem/src/x_dialog.c:2298
 msgid "Coords"
 msgstr "Ð?ооÑ?динаÑ?Ñ?"
 
-#: src/x_dialog.c:2318
+#: gschem/src/x_dialog.c:2319
 msgid "Screen"
 msgstr "ЭкÑ?ан"
 
-#: src/x_dialog.c:2327
+#: gschem/src/x_dialog.c:2328
 msgid "World"
 msgstr "Ð?иÑ?"
 
-#: src/x_dialog.c:2366
+#: gschem/src/x_dialog.c:2367
 msgid "Background"
 msgstr ""
 
-#: src/x_dialog.c:2372
+#: gschem/src/x_dialog.c:2373
 msgid "Net endpoint"
 msgstr ""
 
-#: src/x_dialog.c:2375
+#: gschem/src/x_dialog.c:2376
 msgid "Graphic"
 msgstr ""
 
-#: src/x_dialog.c:2384
+#: gschem/src/x_dialog.c:2385
 msgid "Logic bubble"
 msgstr ""
 
-#: src/x_dialog.c:2387
+#: gschem/src/x_dialog.c:2388
 msgid "Grid point"
 msgstr ""
 
-#: src/x_dialog.c:2390
+#: gschem/src/x_dialog.c:2391
 #, fuzzy
 msgid "Detached attribute"
 msgstr "Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_dialog.c:2393 src/x_window.c:382
+#: gschem/src/x_dialog.c:2394 gschem/src/x_window.c:382
 msgid "Text"
 msgstr "ТекÑ?Ñ?"
 
-#: src/x_dialog.c:2399
+#: gschem/src/x_dialog.c:2400
 #, fuzzy
 msgid "Selection"
 msgstr "вÑ?боÑ?"
 
-#: src/x_dialog.c:2402
+#: gschem/src/x_dialog.c:2403
 msgid "Bounding box"
 msgstr ""
 
-#: src/x_dialog.c:2405
+#: gschem/src/x_dialog.c:2406
 #, fuzzy
 msgid "Zoom box"
 msgstr "Ð?блаÑ?Ñ?Ñ? длÑ? маÑ?Ñ?Ñ?абиÑ?ованиÑ?"
 
-#: src/x_dialog.c:2414
+#: gschem/src/x_dialog.c:2415
 msgid "Output background"
 msgstr ""
 
-#: src/x_dialog.c:2417
+#: gschem/src/x_dialog.c:2418
 #, fuzzy
 msgid "Net junction"
 msgstr "Ð?ейÑ?Ñ?вие"
 
-#: src/x_dialog.c:2420
+#: gschem/src/x_dialog.c:2421
 msgid "Mesh grid major"
 msgstr ""
 
-#: src/x_dialog.c:2423
+#: gschem/src/x_dialog.c:2424
 msgid "Mesh grid minor"
 msgstr ""
 
-#: src/x_dialog.c:2426
+#: gschem/src/x_dialog.c:2427
 msgid "Unknown"
 msgstr ""
 
-#: src/x_dialog.c:2572
+#: gschem/src/x_dialog.c:2573
 #, c-format
 msgid "ERROR: NULL object in color_edit_dialog_apply!\n"
 msgstr "Ð?Ñ?ибка: обÑ?екÑ? NULL в color_edit_dialog_apply!\n"
 
-#: src/x_dialog.c:2635
+#: gschem/src/x_dialog.c:2617
 msgid "Color Edit"
 msgstr "Ð?Ñ?авка Ñ?веÑ?а"
 
-#: src/x_dialog.c:2666
+#: gschem/src/x_dialog.c:2648
 msgid "Object color:"
 msgstr ""
 
-#: src/x_dialog.c:2788
+#: gschem/src/x_dialog.c:2770
 #, fuzzy
 msgid "Function"
 msgstr "Ð?ейÑ?Ñ?вие"
 
-#: src/x_dialog.c:2795
+#: gschem/src/x_dialog.c:2777
 #, fuzzy
 msgid "Keystroke(s)"
 msgstr "ФÑ?нкÑ?иÑ? : комбинаÑ?иÑ? клавиÑ?"
 
-#: src/x_dialog.c:3104
+#: gschem/src/x_dialog.c:3086
 #, fuzzy
 msgid "Find Text"
 msgstr "Ð?айÑ?и Ñ?екÑ?Ñ?"
 
-#: src/x_dialog.c:3135
+#: gschem/src/x_dialog.c:3117
 msgid "Text to find:"
 msgstr "ТекÑ?Ñ? длÑ? поиÑ?ка:"
 
-#: src/x_dialog.c:3145
+#: gschem/src/x_dialog.c:3127
 msgid "descend into hierarchy"
 msgstr "СпÑ?Ñ?к по иеÑ?аÑ?Ñ?ии"
 
-#: src/x_dialog.c:3210
+#: gschem/src/x_dialog.c:3192
 #, fuzzy
 msgid "Hide Text"
 msgstr "СкÑ?Ñ?Ñ?Ñ? Ñ?екÑ?Ñ?"
 
-#: src/x_dialog.c:3241
+#: gschem/src/x_dialog.c:3223
 msgid "Hide text starting with:"
 msgstr "СкÑ?Ñ?Ñ?Ñ? Ñ?екÑ?Ñ?, наÑ?инаÑ?Ñ?ийÑ?Ñ? Ñ?:"
 
-#: src/x_dialog.c:3310
+#: gschem/src/x_dialog.c:3292
 #, fuzzy
 msgid "Show Text"
 msgstr "Ð?оказаÑ?Ñ? Ñ?екÑ?Ñ?"
 
-#: src/x_dialog.c:3341
+#: gschem/src/x_dialog.c:3323
 msgid "Show text starting with:"
 msgstr "Ð?оказаÑ?Ñ? Ñ?екÑ?Ñ?, наÑ?инаÑ?Ñ?ийÑ?Ñ? Ñ?:"
 
-#: src/x_dialog.c:3798
+#: gschem/src/x_dialog.c:3780
 msgid "S_elect the schematics you want to save:"
 msgstr ""
 
-#: src/x_dialog.c:3892
+#: gschem/src/x_dialog.c:3874
 #, c-format
 msgid "Save the changes to schematic \"%s\" before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3898
+#: gschem/src/x_dialog.c:3880
 #, c-format
 msgid ""
 "There are %d schematics with unsaved changes. Save changes before closing?"
 msgstr ""
 
-#: src/x_dialog.c:3927
+#: gschem/src/x_dialog.c:3909
 msgid "If you don't save, all your changes will be permanently lost."
 msgstr ""
 
-#: src/x_dialog.c:3947
+#: gschem/src/x_dialog.c:3929
 msgid "_Close without saving"
 msgstr ""
 
-#: src/x_dialog.c:4283
+#: gschem/src/x_dialog.c:4265
 #, c-format
 msgid ""
 "<span weight=\"bold\" size=\"larger\">The input attribute \"%s\" is invalid\n"
@@ -1996,51 +2013,51 @@ msgid ""
 "The value cannot start with a space."
 msgstr ""
 
-#: src/x_dialog.c:4285
+#: gschem/src/x_dialog.c:4267
 #, fuzzy
 msgid "Invalid Attribute"
 msgstr "Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_dialog.c:4321
+#: gschem/src/x_dialog.c:4303
 #, fuzzy
 msgid "Pin type"
 msgstr "Тип линии"
 
-#: src/x_dialog.c:4345
+#: gschem/src/x_dialog.c:4327
 #, fuzzy
 msgid "Net pin"
 msgstr "Ð?ейÑ?Ñ?вие"
 
-#: src/x_dialog.c:4347
+#: gschem/src/x_dialog.c:4329
 msgid "Bus pin (graphical)"
 msgstr ""
 
-#: src/x_fileselect.c:42
+#: gschem/src/x_fileselect.c:42
 msgid "Schematics"
 msgstr "СÑ?емÑ?"
 
-#: src/x_fileselect.c:47
+#: gschem/src/x_fileselect.c:47
 msgid "Symbols"
 msgstr "СимволÑ?"
 
-#: src/x_fileselect.c:52
+#: gschem/src/x_fileselect.c:52
 msgid "Schematics and symbols"
 msgstr "СÑ?емÑ? и Ñ?имволÑ?"
 
-#: src/x_fileselect.c:58
+#: gschem/src/x_fileselect.c:58
 msgid "All files"
 msgstr "Ð?Ñ?е Ñ?айлÑ?"
 
-#: src/x_fileselect.c:171
+#: gschem/src/x_fileselect.c:171
 msgid "Open..."
 msgstr "Ð?Ñ?кÑ?Ñ?Ñ?Ñ?..."
 
-#: src/x_fileselect.c:231
+#: gschem/src/x_fileselect.c:231
 #, fuzzy
 msgid "Save as..."
 msgstr "СоÑ?Ñ?аниÑ?Ñ? как..."
 
-#: src/x_fileselect.c:284
+#: gschem/src/x_fileselect.c:284
 #, c-format
 msgid ""
 "The selected file `%s' already exists.\n"
@@ -2048,30 +2065,30 @@ msgid ""
 "Would you like to overwrite it?"
 msgstr ""
 
-#: src/x_fileselect.c:287
+#: gschem/src/x_fileselect.c:287
 #, fuzzy
 msgid "Overwrite file?"
 msgstr "Ð?овÑ?й Ñ?айл"
 
-#: src/x_fileselect.c:289
+#: gschem/src/x_fileselect.c:289
 msgid "Save cancelled on user request\n"
 msgstr ""
 
-#: src/x_image.c:176
+#: gschem/src/x_image.c:176
 msgid "Encapsulated Postscript"
 msgstr ""
 
-#: src/x_image.c:296
+#: gschem/src/x_image.c:296
 #, fuzzy, c-format
 msgid "x_image_lowlevel: Unable to write eps file %s.\n"
 msgstr "x_image_lowlevel: невозможно запиÑ?аÑ?Ñ? PNG-Ñ?айл.\n"
 
-#: src/x_image.c:374
+#: gschem/src/x_image.c:374
 #, fuzzy, c-format
 msgid "x_image_lowlevel: Unable to write %s file %s.\n"
 msgstr "x_image_lowlevel: невозможно запиÑ?аÑ?Ñ? PNG-Ñ?айл.\n"
 
-#: src/x_image.c:384
+#: gschem/src/x_image.c:384
 #, c-format
 msgid ""
 "There was the following error when saving image with type %s to filename:\n"
@@ -2080,315 +2097,315 @@ msgid ""
 "%s.\n"
 msgstr ""
 
-#: src/x_image.c:403
+#: gschem/src/x_image.c:403
 #, c-format
 msgid "Wrote color image to [%s] [%d x %d]\n"
 msgstr "Ð?апиÑ?ано Ñ?веÑ?ное изобÑ?ажение в [%s] [%d-x%d]\n"
 
-#: src/x_image.c:405
+#: gschem/src/x_image.c:405
 #, c-format
 msgid "Wrote black and white image to [%s] [%d x %d]\n"
 msgstr "Ð?апиÑ?ано Ñ?еÑ?но-белое изобÑ?ажение в [%s] [%d-x-%d]\n"
 
-#: src/x_image.c:413
+#: gschem/src/x_image.c:413
 msgid "x_image_lowlevel: Unable to get pixbuf from gschem's window.\n"
 msgstr ""
 "x_image_lowlevel: невозможно полÑ?Ñ?иÑ?Ñ? бÑ?Ñ?еÑ? изобÑ?ажениÑ? из окна gschem.\n"
 
-#: src/x_image.c:458
+#: gschem/src/x_image.c:458
 #, fuzzy
 msgid "Width x Height"
 msgstr "ШиÑ?ина-x-Ð?Ñ?Ñ?оÑ?а"
 
-#: src/x_image.c:474
+#: gschem/src/x_image.c:474
 #, fuzzy
 msgid "Image type"
 msgstr "Ð?зобÑ?ажение"
 
-#: src/x_log.c:188
+#: gschem/src/x_log.c:188
 msgid "** Invalid UTF-8 in log message. See stderr or gschem.log.\n"
 msgstr ""
 
-#: src/x_log.c:256
+#: gschem/src/x_log.c:256
 msgid "Status"
 msgstr "СÑ?аÑ?Ñ?Ñ?"
 
-#: src/x_menus.c:36
+#: gschem/src/x_menus.c:36
 msgid "/Add Net"
 msgstr "/Ð?обавиÑ?Ñ? Ñ?оединение"
 
-#: src/x_menus.c:37
+#: gschem/src/x_menus.c:37
 msgid "/Add Attribute..."
 msgstr "/Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_menus.c:38
+#: gschem/src/x_menus.c:38
 msgid "/Add Component..."
 msgstr "/Ð?обавиÑ?Ñ? компоненÑ?..."
 
-#: src/x_menus.c:39
+#: gschem/src/x_menus.c:39
 msgid "/Add Bus"
 msgstr "/Ð?обавиÑ?Ñ? Ñ?инÑ?"
 
-#: src/x_menus.c:40
+#: gschem/src/x_menus.c:40
 msgid "/Add Text"
 msgstr "/Ð?обавиÑ?Ñ? Ñ?екÑ?Ñ?"
 
-#: src/x_menus.c:42
+#: gschem/src/x_menus.c:42
 msgid "/Zoom In"
 msgstr "/УвелиÑ?иÑ?Ñ?"
 
-#: src/x_menus.c:43
+#: gschem/src/x_menus.c:43
 msgid "/Zoom Out"
 msgstr "/УменÑ?Ñ?иÑ?Ñ?"
 
-#: src/x_menus.c:44
+#: gschem/src/x_menus.c:44
 msgid "/Zoom Box"
 msgstr "/Ð?блаÑ?Ñ?Ñ? длÑ? маÑ?Ñ?Ñ?абиÑ?ованиÑ?"
 
-#: src/x_menus.c:45
+#: gschem/src/x_menus.c:45
 msgid "/Zoom Extents"
 msgstr "/Ð?аÑ?Ñ?Ñ?аб на Ñ?кÑ?ан"
 
-#: src/x_menus.c:47
+#: gschem/src/x_menus.c:47
 msgid "/Select"
 msgstr "/Ð?Ñ?бÑ?аÑ?Ñ?"
 
-#: src/x_menus.c:48
+#: gschem/src/x_menus.c:48
 msgid "/Edit..."
 msgstr "/Ð?Ñ?авка..."
 
-#: src/x_menus.c:49
+#: gschem/src/x_menus.c:49
 #, fuzzy
 msgid "/Edit pin type..."
 msgstr "Ð?Ñ?авка Ñ?ипа линии"
 
-#: src/x_menus.c:50
+#: gschem/src/x_menus.c:50
 msgid "/Copy"
 msgstr "/Ð?опиÑ?оваÑ?Ñ?"
 
-#: src/x_menus.c:51
+#: gschem/src/x_menus.c:51
 msgid "/Move"
 msgstr "/Ð?еÑ?емеÑ?Ñ?иÑ?Ñ?"
 
-#: src/x_menus.c:52
+#: gschem/src/x_menus.c:52
 msgid "/Delete"
 msgstr "/УдалиÑ?Ñ?"
 
-#: src/x_menus.c:55
+#: gschem/src/x_menus.c:55
 msgid "/Down Schematic"
 msgstr "/Ð?глÑ?бÑ? Ñ?Ñ?емÑ?"
 
-#: src/x_menus.c:56
+#: gschem/src/x_menus.c:56
 msgid "/Down Symbol"
 msgstr "/Ð?глÑ?бÑ? Ñ?имвола"
 
-#: src/x_menus.c:57
+#: gschem/src/x_menus.c:57
 msgid "/Up"
 msgstr "/Ð?авеÑ?Ñ?"
 
-#: src/x_menus.c:319
+#: gschem/src/x_menus.c:319
 #, fuzzy, c-format
 msgid "Tried to set the sensitivity on non-existent menu item '%s'\n"
 msgstr "Ð?опÑ?Ñ?ка Ñ?Ñ?Ñ?ановки Ñ?Ñ?вÑ?Ñ?виÑ?елÑ?ноÑ?Ñ?и длÑ? неÑ?Ñ?Ñ?еÑ?Ñ?вÑ?Ñ?Ñ?его пÑ?нкÑ?а менÑ?\n"
 
-#: src/x_menus.c:343
+#: gschem/src/x_menus.c:343
 msgid "Popup_menu_item_factory doesn't exist!\n"
 msgstr "Popup_menu_item_factory не Ñ?Ñ?Ñ?еÑ?Ñ?вÑ?еÑ?!\n"
 
-#: src/x_menus.c:356
+#: gschem/src/x_menus.c:356
 msgid "Tried to set the sensitivity on a non-existent popup menu_item\n"
 msgstr ""
 "Ð?опÑ?Ñ?ка Ñ?Ñ?Ñ?ановки Ñ?Ñ?вÑ?Ñ?виÑ?елÑ?ноÑ?Ñ?и длÑ? неÑ?Ñ?Ñ?еÑ?Ñ?вÑ?Ñ?Ñ?его вÑ?Ñ?какиваÑ?Ñ?его "
 "menu_item\n"
 
-#: src/x_menus.c:436
+#: gschem/src/x_menus.c:436
 #, fuzzy, c-format
 msgid "Couldn't open file %s\n"
 msgstr "Ð?евозможно вÑ?зваÑ?Ñ? %s\n"
 
-#: src/x_menus.c:493
+#: gschem/src/x_menus.c:493
 #, fuzzy
 msgid "Clear"
 msgstr "Ð?акÑ?Ñ?Ñ?Ñ?"
 
-#: src/x_multiattrib.c:913
+#: gschem/src/x_multiattrib.c:913
 msgid "Attributes with empty name are not allowed. Please set a name."
 msgstr "Ð?Ñ?Ñ?ибÑ?Ñ?Ñ? Ñ? пÑ?Ñ?Ñ?Ñ?м именем недопÑ?Ñ?Ñ?имÑ?. Ð?ожалÑ?йÑ?Ñ?а, Ñ?Ñ?Ñ?ановиÑ?е имÑ?."
 
-#: src/x_multiattrib.c:1461
+#: gschem/src/x_multiattrib.c:1461
 msgid "Show Value only"
 msgstr "Ð?оказаÑ?Ñ? Ñ?олÑ?ко знаÑ?ение"
 
-#: src/x_multiattrib.c:1463
+#: gschem/src/x_multiattrib.c:1463
 msgid "Show Name only"
 msgstr "Ð?оказаÑ?Ñ? Ñ?олÑ?ко имÑ?"
 
-#: src/x_multiattrib.c:1491
+#: gschem/src/x_multiattrib.c:1491
 msgid "Promote"
 msgstr ""
 
-#: src/x_multiattrib.c:1495
+#: gschem/src/x_multiattrib.c:1495
 msgid "Duplicate"
 msgstr "Ð?Ñ?блиÑ?оваÑ?Ñ?"
 
-#: src/x_multiattrib.c:1713
+#: gschem/src/x_multiattrib.c:1713
 msgid "Edit Attributes"
 msgstr "РедакÑ?иÑ?оваÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?Ñ?"
 
-#: src/x_multiattrib.c:1831
+#: gschem/src/x_multiattrib.c:1831
 msgid "Vis?"
 msgstr "Ð?идим?"
 
-#: src/x_multiattrib.c:1849
+#: gschem/src/x_multiattrib.c:1849
 msgid "N"
 msgstr ""
 
-#: src/x_multiattrib.c:1867
+#: gschem/src/x_multiattrib.c:1867
 msgid "V"
 msgstr ""
 
-#: src/x_multiattrib.c:1889
+#: gschem/src/x_multiattrib.c:1889
 #, fuzzy
 msgid "Show inherited attributes"
 msgstr "Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_multiattrib.c:1905
+#: gschem/src/x_multiattrib.c:1905
 msgid "Add Attribute"
 msgstr "Ð?обавиÑ?Ñ? аÑ?Ñ?ибÑ?Ñ?"
 
-#: src/x_pagesel.c:257
+#: gschem/src/x_pagesel.c:257
 msgid "Discard Page"
 msgstr "Ð?Ñ?веÑ?гнÑ?Ñ?Ñ? Ñ?Ñ?Ñ?аниÑ?Ñ?"
 
-#: src/x_pagesel.c:376
+#: gschem/src/x_pagesel.c:376
 msgid "Page Manager"
 msgstr "Ð?енеджеÑ? Ñ?Ñ?Ñ?аниÑ?"
 
-#: src/x_pagesel.c:432
+#: gschem/src/x_pagesel.c:432
 msgid "Filename"
 msgstr "Ð?мÑ? Ñ?айла"
 
-#: src/x_pagesel.c:448
+#: gschem/src/x_pagesel.c:448
 msgid "Changed"
 msgstr "Ð?зменено"
 
-#: src/x_pagesel.c:468
+#: gschem/src/x_pagesel.c:468
 msgid "Right click on the filename for more options..."
 msgstr "ЩелкниÑ?е пÑ?авой кнопкой на имени Ñ?айла длÑ? дополниÑ?елÑ?нÑ?Ñ? опÑ?ий..."
 
-#: src/x_preview.c:223
+#: gschem/src/x_preview.c:223
 #, fuzzy
 msgid "Preview Buffer"
 msgstr "Ð?Ñ?Ñ?еÑ?"
 
-#: src/x_print.c:84
+#: gschem/src/x_print.c:84
 #, fuzzy
 msgid "Select PostScript Filename..."
 msgstr "СоÑ?Ñ?аниÑ?Ñ? PostScript как..."
 
-#: src/x_print.c:164
+#: gschem/src/x_print.c:164
 msgid "Extents with margins"
 msgstr "РаÑ?Ñ?иÑ?иÑ?Ñ? Ñ? полÑ?ми"
 
-#: src/x_print.c:170
+#: gschem/src/x_print.c:170
 msgid "Extents no margins"
 msgstr "РаÑ?Ñ?иÑ?иÑ?Ñ? без полей"
 
-#: src/x_print.c:176
+#: gschem/src/x_print.c:176
 msgid "Current Window"
 msgstr "ТекÑ?Ñ?ее окно"
 
-#: src/x_print.c:210
+#: gschem/src/x_print.c:210
 msgid "Landscape"
 msgstr "Ð?лÑ?бом"
 
-#: src/x_print.c:216
+#: gschem/src/x_print.c:216
 msgid "Portrait"
 msgstr "Ð?оÑ?Ñ?Ñ?еÑ?"
 
-#: src/x_print.c:284
+#: gschem/src/x_print.c:284
 msgid "Settings"
 msgstr "УÑ?Ñ?ановки"
 
-#: src/x_print.c:296
+#: gschem/src/x_print.c:296
 #, fuzzy
 msgid "Output paper size:"
 msgstr "РазмеÑ? бÑ?маги длÑ? пеÑ?аÑ?и"
 
-#: src/x_print.c:318
+#: gschem/src/x_print.c:318
 #, fuzzy
 msgid "Orientation:"
 msgstr "Ð?Ñ?иенÑ?аÑ?иÑ?"
 
-#: src/x_print.c:330
+#: gschem/src/x_print.c:330
 msgid "Destination"
 msgstr "Ð?азнаÑ?ение"
 
-#: src/x_print.c:343
+#: gschem/src/x_print.c:343
 #, fuzzy
 msgid "File:"
 msgstr "Файл"
 
-#: src/x_print.c:373
+#: gschem/src/x_print.c:373
 #, fuzzy
 msgid "Command:"
 msgstr "Ð?оманда"
 
-#: src/x_print.c:741
+#: gschem/src/x_print.c:741
 msgid "No print destination specified\n"
 msgstr "Ð?е Ñ?казано назнаÑ?ение длÑ? пеÑ?аÑ?и\n"
 
-#: src/x_print.c:748
+#: gschem/src/x_print.c:748
 #, c-format
 msgid "Cannot print current schematic to [%s]\n"
 msgstr "Ð?евозможно Ñ?аÑ?пеÑ?аÑ?аÑ?Ñ? Ñ?екÑ?Ñ?Ñ?Ñ? Ñ?Ñ?емÑ? на [%s]\n"
 
-#: src/x_print.c:757
+#: gschem/src/x_print.c:757
 #, c-format
 msgid ""
 "Error printing to file '%s'\n"
 "Check the log window for more information"
 msgstr ""
 
-#: src/x_print.c:764
+#: gschem/src/x_print.c:764
 #, c-format
 msgid "Printed current schematic to [%s]\n"
 msgstr "ТекÑ?Ñ?аÑ? Ñ?Ñ?ема Ñ?аÑ?пеÑ?аÑ?ана на [%s]\n"
 
-#: src/x_window.c:81
+#: gschem/src/x_window.c:81
 #, c-format
 msgid "Couldn't allocate gc\n"
 msgstr "Ð?евозможно назнаÑ?иÑ?Ñ? gc\n"
 
-#: src/x_window.c:317
+#: gschem/src/x_window.c:317
 msgid "New file"
 msgstr "Ð?овÑ?й Ñ?айл"
 
-#: src/x_window.c:323
+#: gschem/src/x_window.c:323
 msgid "Open"
 msgstr "Ð?Ñ?кÑ?Ñ?Ñ?Ñ?"
 
-#: src/x_window.c:324
+#: gschem/src/x_window.c:324
 msgid "Open file..."
 msgstr "Ð?Ñ?кÑ?Ñ?Ñ?Ñ? Ñ?айл..."
 
-#: src/x_window.c:330
+#: gschem/src/x_window.c:330
 msgid "Save"
 msgstr "СоÑ?Ñ?аниÑ?Ñ?"
 
-#: src/x_window.c:331
+#: gschem/src/x_window.c:331
 msgid "Save file"
 msgstr "СоÑ?Ñ?аниÑ?Ñ? Ñ?айл"
 
-#: src/x_window.c:339
+#: gschem/src/x_window.c:339
 msgid "Undo last operation"
 msgstr "Ð?Ñ?мениÑ?Ñ? поÑ?леднее дейÑ?Ñ?вие"
 
-#: src/x_window.c:346
+#: gschem/src/x_window.c:346
 msgid "Redo last undo"
 msgstr "Ð?овÑ?оÑ?иÑ?Ñ? оÑ?мененное дейÑ?Ñ?вие"
 
-#: src/x_window.c:355
+#: gschem/src/x_window.c:355
 msgid ""
 "Add component...\n"
 "Select library and component from list, move the mouse into main window, "
@@ -2400,7 +2417,7 @@ msgstr ""
 "Ñ?елкниÑ?е длÑ? Ñ?Ñ?Ñ?ановки\n"
 "Ð?Ñ?аваÑ? кнопка мÑ?Ñ?и длÑ? оÑ?менÑ?"
 
-#: src/x_window.c:365
+#: gschem/src/x_window.c:365
 msgid ""
 "Add nets mode\n"
 "Right mouse button to cancel"
@@ -2408,7 +2425,7 @@ msgstr ""
 "Ð?обавиÑ?Ñ? пÑ?оводники\n"
 "Ð?Ñ?аваÑ? кнопка мÑ?Ñ?и длÑ? оÑ?менÑ?"
 
-#: src/x_window.c:375
+#: gschem/src/x_window.c:375
 msgid ""
 "Add buses mode\n"
 "Right mouse button to cancel"
@@ -2416,88 +2433,88 @@ msgstr ""
 "Ð?обавиÑ?Ñ? Ñ?инÑ?\n"
 "Ð?Ñ?аваÑ? кнопка мÑ?Ñ?и длÑ? оÑ?менÑ?"
 
-#: src/x_window.c:383
+#: gschem/src/x_window.c:383
 msgid "Add Text..."
 msgstr "Ð?обавиÑ?Ñ? Ñ?екÑ?Ñ?..."
 
-#: src/x_window.c:393
+#: gschem/src/x_window.c:393
 msgid "Select"
 msgstr "Ð?Ñ?бÑ?аÑ?Ñ?"
 
-#: src/x_window.c:394
+#: gschem/src/x_window.c:394
 msgid "Select mode"
 msgstr "Режим вÑ?боÑ?ки"
 
-#: src/x_window.c:481
+#: gschem/src/x_window.c:481
 msgid "Pick"
 msgstr ""
 
-#: src/x_window.c:497
+#: gschem/src/x_window.c:497
 msgid "Repeat/none"
 msgstr "Ð?овÑ?оÑ?/пÑ?Ñ?Ñ?о"
 
-#: src/x_window.c:507
+#: gschem/src/x_window.c:507
 msgid "Menu/Cancel"
 msgstr "Ð?енÑ?/Ð?Ñ?мена"
 
-#: src/x_window.c:509
+#: gschem/src/x_window.c:509
 msgid "Pan/Cancel"
 msgstr "ЦенÑ?Ñ?/Ð?Ñ?мена"
 
-#: src/x_window.c:733
+#: gschem/src/x_window.c:733
 #, c-format
 msgid "Loading schematic [%s]\n"
 msgstr "Ð?агÑ?Ñ?жаеÑ?Ñ?Ñ? Ñ?Ñ?ема [%s]\n"
 
-#: src/x_window.c:745
+#: gschem/src/x_window.c:745
 #, fuzzy
 msgid "Failed to load file"
 msgstr "Ð?евозможно загÑ?зиÑ?аÑ?Ñ? изобÑ?ажение: [%s]"
 
-#: src/x_window.c:754
+#: gschem/src/x_window.c:754
 #, fuzzy, c-format
 msgid "New file [%s]\n"
 msgstr "Ð?овÑ?й Ñ?айл"
 
-#: src/x_window.c:859
+#: gschem/src/x_window.c:859
 #, fuzzy, c-format
 msgid "Could NOT save page [%s]\n"
 msgstr "Ð?евозможно Ñ?оÑ?Ñ?аниÑ?Ñ? [%s]\n"
 
-#: src/x_window.c:860
+#: gschem/src/x_window.c:860
 msgid "Error while trying to save"
 msgstr "Ð?Ñ?ибка пÑ?и попÑ?Ñ?ке Ñ?оÑ?Ñ?анениÑ?"
 
-#: src/x_window.c:869
+#: gschem/src/x_window.c:869
 #, fuzzy, c-format
 msgid "Saved as [%s]\n"
 msgstr "Ð?апиÑ?ано как [%s]\n"
 
-#: src/x_window.c:871
+#: gschem/src/x_window.c:871
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "СоÑ?Ñ?анено [%s]\n"
 
-#: src/x_window.c:873
+#: gschem/src/x_window.c:873
 msgid "Saved"
 msgstr "СоÑ?Ñ?анено"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Discarding page [%s]\n"
 msgstr "Ð?Ñ?веÑ?жение Ñ?Ñ?Ñ?аниÑ?Ñ? [%s]\n"
 
-#: src/x_window.c:947
+#: gschem/src/x_window.c:947
 #, c-format
 msgid "Closing [%s]\n"
 msgstr "Ð?акÑ?Ñ?Ñ?ие [%s]\n"
 
-#: data/geda-gschem.desktop.in.h:3
+#: gschem/data/geda-gschem.desktop.in.h:3
 #, fuzzy
 msgid "gEDA Schematic Editor"
 msgstr "Ð?глÑ?бÑ? Ñ?Ñ?емÑ?"
 
-#: data/geda-gschem.desktop.in.h:4
+#: gschem/data/geda-gschem.desktop.in.h:4
 msgid "Create and edit electrical schematics and symbols with gschem"
 msgstr ""
 
diff --git a/gschem/scheme/Makefile.am b/gschem/scheme/Makefile.am
index 6fdb524..ee4f1f2 100644
--- a/gschem/scheme/Makefile.am
+++ b/gschem/scheme/Makefile.am
@@ -1,9 +1,6 @@
 ## -*- Makefile -*-
-##
-## $Id$
-##
 
-scmdatadir = @GEDADATADIR@/scheme
+scmdatadir = $(GEDADATADIR)/scheme
 scmdata_DATA = auto-uref.scm generate_netlist.scm gschem.scm list-keys.scm \
 	       print-NB-attribs.scm auto-place-attribs.scm pcb.scm \
                default-attrib-positions.scm
@@ -12,5 +9,5 @@ EXTRA_DIST = $(scmdata_DATA)
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log *~ Makefile.in
diff --git a/gschem/scripts/Makefile.am b/gschem/scripts/Makefile.am
index 80938fd..2dd99d1 100644
--- a/gschem/scripts/Makefile.am
+++ b/gschem/scripts/Makefile.am
@@ -1,21 +1,16 @@
-## $Id$
-##
-
-scmdatadir = @GEDADATADIR@/scheme
+scmdatadir = $(GEDADATADIR)/scheme
 scmdata_DATA = image.scm print.scm
 
 bin_SCRIPTS = gschemdoc
-EXTRA_DIST = config.sh.in ChangeLog ChangeLog-1.0 makeallimages \
+EXTRA_DIST = ChangeLog ChangeLog-1.0 makeallimages \
              gschemdoc.sh makeimages print.scm image.scm
 
-BUILT_SOURCES = config.sh
-
-gschemdoc: config.sh $(srcdir)/gschemdoc.sh
-	cat config.sh $(srcdir)/gschemdoc.sh > tmp$@
-	chmod a+x tmp$@
-	mv -f tmp$@ $@
+gschemdoc: gschemdoc.sh
+	sed -e 's:[@]DOCDIR@:$(docdir):' < $(srcdir)/gschemdoc.sh > tmp_gschemdoc
+	chmod a+x tmp_gschemdoc
+	mv -f tmp_gschemdoc gschemdoc
 
 MOSTLYCLEANFILES =	*.log *~
 CLEANFILES = 		*.log *~
-DISTCLEANFILES = 	*.log core FILE *~ prototype.bak gschemdoc
-MAINTAINERCLEANFILES = 	*.log *~ Makefile.in configure gschemdoc
+DISTCLEANFILES = 	*.log core FILE *~ gschemdoc
+MAINTAINERCLEANFILES = 	*.log *~ Makefile.in gschemdoc
diff --git a/gschem/scripts/config.sh.in b/gschem/scripts/config.sh.in
deleted file mode 100644
index 6456493..0000000
--- a/gschem/scripts/config.sh.in
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-# $Id$
-#
-# Copyright (C) 2002 Egil Kvaleberg
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.     
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-GEDAVERSION="@VERSION@"
-DOCDIR="@GEDADOCDIR@"
-
diff --git a/gschem/scripts/gschemdoc.sh b/gschem/scripts/gschemdoc.sh
index 7077e82..8cbfc4b 100644
--- a/gschem/scripts/gschemdoc.sh
+++ b/gschem/scripts/gschemdoc.sh
@@ -30,6 +30,11 @@ CANDIDATE_BROWSER="xdg-open galeon mozilla phoenix netscape netscape-navigator o
 CANDIDATE_PDFREADER="xdg-open xpdf acroread ggv gv"
 CANDIDATE_LOCATE="slocate locate"
 
+#
+# Information about the gEDA installation
+#
+DOCDIR="@DOCDIR@"
+
 # For OS X, since Linux has 'open' with different semantics
 if [ "`uname -s`" = "Darwin" ]; then
 	CANDIDATE_BROWSER="open $CANDIDATE_BROWSER"
diff --git a/gschem/src/Makefile.am b/gschem/src/Makefile.am
index 1aabef4..75d2047 100644
--- a/gschem/src/Makefile.am
+++ b/gschem/src/Makefile.am
@@ -1,9 +1,3 @@
-#
-# NOTE: Don't forget that in the libtool distribution, files in this
-# directory are distributed by the demo_distfiles variable in the top
-# level Makefile.
-#
-
 bin_PROGRAMS = gschem
 
 gschem_SOURCES = \
@@ -72,42 +66,20 @@ gschem_SOURCES = \
 	x_stroke.c \
 	x_window.c
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
-INCLUDES = -I$(includedir) -I$(top_srcdir)/intl -I$(top_srcdir)/include @GSCHEM_CFLAGS@
-gschem_LDADD = -L$(libdir) @GSCHEM_LDFLAGS@ @LIBINTL@
+gschem_CPPFLAGS = -I$(top_srcdir)/libgeda/include  -I$(srcdir)/../include \
+	-I$(top_srcdir) -I$(includedir) -I$(top_srcdir)/intl
+gschem_CFLAGS = $(GCC_CFLAGS) $(MINGW_CFLAGS) $(LIBSTROKE_CFLAGS) \
+	$(GLIB_CFLAGS) $(GTK_CFLAGS) $(GTHREAD_CFLAGS) $(GUILE_CFLAGS)
+gschem_LDFLAGS = $(LIBSTROKE_LDFLAGS) $(GLIB_LIBS) $(GTK_LIBS) \
+	$(GTHREAD_LIBS) $(GUILE_LIBS)
+gschem_LDADD = $(top_builddir)/libgeda/src/libgeda.la @LIBINTL@
 
 localedir = @datadir@/locale
 DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
 
-#man_MANS = gschem.1
-EXTRA_DIST = create_proto rcstrings.c
-#gschem.1
-
-src: $(gschem_SOURCES)
-	@echo Finished building the C source
-
-CPROTO =	cproto
-CPROTOCFLAGS = 	$(INCLUDES) -I. -I.. -I../include
-ALES_HACK =	-D__GNUC__
-
-proto: prototype.h
-
-prototype.h: $(gschem_SOURCES)
-	$(CPROTO) $(ALES_HACK) $(CPROTOCFLAGS) *.c > new_proto
-	mv new_proto ../include/prototype.h
-
-potfiles:
-	rm -f po/$(PACKAGE).pot
-	@mv -f po/POTFILES.in po/POTFILES.in~ ; true
-	grep '\([^A-Za-z0-9_]_(\)\|\(^_(\)\|\(gettext[[:blank:]]*(\)' \
-	*.c | cut -d: -f1 | sort -u >po/POTFILES.in
-	$(MAKE)
+EXTRA_DIST = rcstrings.c
 
-MOSTLYCLEANFILES = *.log core FILE *~ prototype.bak
-CLEANFILES = *.log core FILE *~ prototype.bak
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ prototype.bak prototype.h \
-			Makefile.in configure 
+MOSTLYCLEANFILES = *.log core FILE *~
+CLEANFILES = *.log core FILE *~
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
diff --git a/gschem/src/create_proto b/gschem/src/create_proto
deleted file mode 100755
index 7f35331..0000000
--- a/gschem/src/create_proto
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-#CFLAGS="`guile-config compile` `gtk-config --cflags` `libgeda-config --cflags`" 
-CFLAGS="`guile-config compile` `pkg-config --cflags gtk+-2.0` `libgeda-config --cflags`" 
-
-MISC_FLAGS="-I/usr/X11R6/include -I../include -I. -I.."
-
-ALES_HACK=-D__GNUC__
-
-make src
-cproto $ALES_HACK $CFLAGS $MISC_FLAGS *.c > new_proto
-
-mv -f new_proto ../include/prototype.h
diff --git a/gschem/src/g_rc.c b/gschem/src/g_rc.c
index 88ed0c2..b9d4de9 100644
--- a/gschem/src/g_rc.c
+++ b/gschem/src/g_rc.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA
  */
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -71,10 +72,11 @@ SCM g_rc_gschem_version(SCM version)
   SCM_ASSERT (scm_is_string (version), version,
               SCM_ARG1, "gschem-version");
 
-  if (g_strcasecmp (SCM_STRING_CHARS (version), DATE_VERSION) != 0) {
+  if (g_strcasecmp (SCM_STRING_CHARS (version), PACKAGE_DATE_VERSION) != 0) {
     fprintf(stderr,
             "You are running gEDA/gaf version [%s%s.%s],\n",
-            PREPEND_VERSION_STRING, DOTTED_VERSION, DATE_VERSION);
+            PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION,
+            PACKAGE_DATE_VERSION);
     fprintf(stderr,
             "but you have a version [%s] gschemrc file:\n[%s]\n",
             SCM_STRING_CHARS (version), rc_filename);
diff --git a/gschem/src/gschem.c b/gschem/src/gschem.c
index 805ef75..718843b 100644
--- a/gschem/src/gschem.c
+++ b/gschem/src/gschem.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA
  */
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #ifdef HAVE_STRING_H
@@ -93,9 +94,9 @@ void gschem_quit(void)
   /* o_text_freeallfonts();*/
   s_attrib_free();
   s_papersizes_free();
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
   x_stroke_free ();
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
   o_undo_cleanup();
   /* s_stroke_free(); no longer needed */
 
@@ -181,7 +182,7 @@ void main_prog(void *closure, int argc, char *argv[])
 
   s_log_message(
                 _("gEDA/gschem version %s%s.%s\n"), PREPEND_VERSION_STRING,
-                DOTTED_VERSION, DATE_VERSION);
+                PACKAGE_DOTTED_VERSION, PACKAGE_DATE_VERSION);
   s_log_message(
                 _("gEDA/gschem comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.\n"));
   s_log_message(
@@ -262,9 +263,9 @@ void main_prog(void *closure, int argc, char *argv[])
   x_color_allocate();
   x_window_setup (w_current);
 
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
   x_stroke_init ();
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
 
   for (i = argv_index; i < argc; i++) {
 
diff --git a/gschem/src/i_basic.c b/gschem/src/i_basic.c
index 0a60c79..6f3a76e 100644
--- a/gschem/src/i_basic.c
+++ b/gschem/src/i_basic.c
@@ -254,7 +254,7 @@ void i_update_middle_button(GSCHEM_TOPLEVEL *w_current,
                   _("Action"));
     break;
 
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
     case(STROKE):
     gtk_label_set(GTK_LABEL(w_current->middle_label),
                   _("Stroke"));
diff --git a/gschem/src/i_vars.c b/gschem/src/i_vars.c
index 16b221a..79f40ec 100644
--- a/gschem/src/i_vars.c
+++ b/gschem/src/i_vars.c
@@ -80,7 +80,7 @@ int   default_print_output_capstyle = SQUARE_CAP;
 int   default_log_window = MAP_ON_STARTUP;
 int   default_log_window_type = DECORATED;
 int   default_third_button = POPUP_ENABLED;
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
 int   default_middle_button = STROKE;
 #else
 int   default_middle_button = REPEAT;
diff --git a/gschem/src/x_dialog.c b/gschem/src/x_dialog.c
index 0c3fb4c..54992e5 100644
--- a/gschem/src/x_dialog.c
+++ b/gschem/src/x_dialog.c
@@ -19,6 +19,7 @@
  */
 /*! \todo STILL NEED to clean up line lengths in aa and tr */
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #ifdef HAVE_STDLIB_H
@@ -2224,8 +2225,8 @@ void about_dialog (GSCHEM_TOPLEVEL *w_current)
     gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
 
     string = g_strdup_printf(_("<b>gschem version %s%s.%s</b>"),
-                             PREPEND_VERSION_STRING, DOTTED_VERSION,
-                             DATE_VERSION);
+                             PREPEND_VERSION_STRING, PACKAGE_DOTTED_VERSION,
+                             PACKAGE_DATE_VERSION);
     label = gtk_label_new (string);
     gtk_label_set_use_markup (GTK_LABEL(label), TRUE);
     g_free(string);
diff --git a/gschem/src/x_event.c b/gschem/src/x_event.c
index e2ef971..5201876 100644
--- a/gschem/src/x_event.c
+++ b/gschem/src/x_event.c
@@ -38,9 +38,9 @@ int start_pan_x, start_pan_y;
 int throttle = 0;
 
 /* used for the stroke stuff */
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
 static int DOING_STROKE = FALSE;
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
 
 /*! \todo Finish function documentation!!!
  *  \brief
@@ -405,11 +405,11 @@ gint x_event_button_pressed(GtkWidget *widget, GdkEventButton *event,
         (*w_current->last_callback)(w_current, 0, NULL);
       }
       break;
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
       case(STROKE):
       DOING_STROKE=TRUE;
       break;
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
 
       case(MID_MOUSEPAN_ENABLED):
       w_current->event_state = MOUSEPAN; /* start */
@@ -670,12 +670,12 @@ gint x_event_button_released(GtkWidget *widget, GdkEventButton *event,
       }
       break;
 
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
       case(STROKE):
       DOING_STROKE = FALSE;
       x_stroke_translate_and_execute (w_current);
       break;
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
 
       case(MID_MOUSEPAN_ENABLED):
       w_current->doing_pan=FALSE;
@@ -736,12 +736,12 @@ gint x_event_motion(GtkWidget *widget, GdkEventMotion *event,
   /*  printf("MOTION!\n");*/
 #endif
 
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
   if (DOING_STROKE == TRUE) {
     x_stroke_record (w_current, event->x, event->y);
     return(0);
   }
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
 
   /* skip the moving event if there are other moving events in the
      gdk event queue (Werner)
diff --git a/gschem/src/x_stroke.c b/gschem/src/x_stroke.c
index c3b5216..2e081a6 100644
--- a/gschem/src/x_stroke.c
+++ b/gschem/src/x_stroke.c
@@ -21,7 +21,7 @@
 
 #include "gschem.h"
 
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
 #include <stroke.h>
 
 #ifdef HAVE_LIBDMALLOC
@@ -169,4 +169,4 @@ x_stroke_translate_and_execute (GSCHEM_TOPLEVEL *w_current)
   return 0;
 }
 
-#endif /* HAS_LIBSTROKE */
+#endif /* HAVE_LIBSTROKE */
diff --git a/gschem/src/x_window.c b/gschem/src/x_window.c
index 907ab90..f65704f 100644
--- a/gschem/src/x_window.c
+++ b/gschem/src/x_window.c
@@ -486,7 +486,7 @@ void x_window_create_main(GSCHEM_TOPLEVEL *w_current)
   gtk_box_pack_start (GTK_BOX (bottom_box), label, FALSE, FALSE, 5);
 
   if (w_current->middle_button == STROKE) {
-#ifdef HAS_LIBSTROKE
+#ifdef HAVE_LIBSTROKE
     w_current->middle_label = gtk_label_new (_("Stroke"));
 #else
     w_current->middle_label = gtk_label_new (_("none"));
diff --git a/gschem/tests/Makefile.am b/gschem/tests/Makefile.am
index a85153a..f8617bf 100644
--- a/gschem/tests/Makefile.am
+++ b/gschem/tests/Makefile.am
@@ -41,5 +41,5 @@ EXTRA_DIST = \
 
 MOSTLYCLEANFILES =	*.log *~
 CLEANFILES = 		*.log *~
-DISTCLEANFILES = 	*.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = 	*.log *~ Makefile.in configure
+DISTCLEANFILES = 	*.log core FILE *~
+MAINTAINERCLEANFILES = 	*.log *~ Makefile.in

commit 03943792b7606534fba0fd4e158dc6ff8d6adb97
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Start implementing unified build system.
    
    Restructuring of build system, including new m4 macros and helper
    programs. Note: only libgeda can be built from this commit.
    
    Important differences from previous versions:
    
     - The tarball is now called gEDA-<version>.tar.gz.
    
     - Documentation is now installed to ${docdir}
    
     - A `version.h' file is generated containing the package version
       strings, including the git commit SHA-1 and the descriptive string
       from `git describe'.  `version.h' is distributed in the source
       tarball so that gEDA can be built without git.

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..40b0952
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,17 @@
+*~
+.desktop-i18n
+ABOUT-NLS
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+config.h
+config.h.in
+config.status
+configure
+intl
+libtool
+stamp-git
+stamp-h1
+version.h
+INSTALL
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..3a8a2c8
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,51 @@
+SUBDIRS = libgeda intl
+
+ACLOCAL_AMFLAGS = -I m4
+
+# We need to ensure that `make distcheck' *doesn't* find a git
+# repository!
+DISTCHECK_CONFIGURE_FLAGS = GIT="/bin/sh -c '! :'" --disable-update-xdg-database
+
+BUILT_SOURCES = version.h
+EXTRA_DIST = version.h version.h.in
+
+# Generate version.h. This works by looking at any git repository that
+# is present in the source directory (detected at configure time). If
+# there is a git repository, the HEAD commitid is checked every time
+# the package is built to see if it has changed. If so, version.h is
+# regenerated. If there isn't a git repository, version.h is just
+# assumed to be present (since the generated version.h is distributed
+# in the source tarball).
+if HAVE_GIT_REPO
+version.h: stamp-git $(top_builddir)/configure $(srcdir)/version.h.in
+	@if test ! -f version.h; then \
+	  rm -f stamp-git; \
+	  $(MAKE) $(AM_MAKEFLAGS) stamp-git; \
+	else :; fi
+
+	@date_ver=$(DATE_VERSION); dotted_ver=$(DOTTED_VERSION); \
+	git_commit=`cd $(srcdir) && $(GIT) rev-parse HEAD`; \
+	git_ver=`cd $(srcdir) && $(GIT) describe --always HEAD`; \
+	sed -e"s:^.*\(PACKAGE_DATE_VERSION\).*$$:#define \1 \"$$date_ver\":" \
+	    -e"s:^.*\(PACKAGE_DOTTED_VERSION\).*$$:#define \1 \"$$dotted_ver\":" \
+	    -e"s:^.*\(PACKAGE_GIT_VERSION\).*$$:#define \1 \"$$git_ver\":" \
+	    -e"s:^.*\(PACKAGE_GIT_COMMIT\).*$$:#define \1 \"$$git_commit\":" \
+	      < $(srcdir)/version.h.in > version.h.new; \
+	if diff version.h version.h.new > /dev/null 2>&1; then \
+	  echo "version.h is unchanged"; \
+	  rm version.h.new; \
+	else \
+	  echo "Recreating version.h"; \
+	  mv version.h.new version.h; \
+	fi
+stamp-git:
+	@last_version=`if test -f stamp-git; then cat stamp-git; else :; fi`; \
+	now_version=`cd $(srcdir) && $(GIT) rev-parse HEAD`; \
+	if test "X$$now_version" != "X$$last_version"; then \
+	  echo $$now_version > stamp-git; \
+	  echo "Now at git commit $$now_version..."; \
+	fi
+.PHONY: stamp-git
+endif HAVE_GIT_REPO
+
+DISTCLEANFILES = stamp-git
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..e9be5f0
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,210 @@
+#!/bin/sh
+#                                                   -*-Shell-script-*-
+# Developer helper script for setting up gEDA build environment
+# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+#####################################################################
+# Setup variables
+#####################################################################
+
+ac_script=configure.ac
+am_version=1.6.0
+aclocal_flags="$ACLOCAL_FLAGS -I m4"
+tooldir=build-tools
+podirs="libgeda/po" #gschem/po gattrib/po
+
+srcdir=`dirname $0`
+if test "x$srcdir" = x ; then srcdir=.; fi
+
+script_name=`echo $0 | sed -e's:.*/::'`
+
+#####################################################################
+# Define some functions
+#####################################################################
+
+# check_dist_file FILENAME
+# ------------------------
+# Check that a file that should be provided by the tarball or git
+# checkout is present.
+check_dist_file() {
+  printf "checking for $srcdir/$1 ... " >&2
+  if test -f "$srcdir/$1" ; then
+    echo yes >&2
+  else
+    echo no >&2
+    cat >&2 <<EOF
+
+$script_name: $srcdir/$1 is missing. Check that your source tarball
+or git checkout is intact.
+
+EOF
+    ! :
+  fi
+}
+
+# check_tool TOOLS PKG [URL]
+# --------------------------
+# Check that a build tool is present. TOOLS is a list of candidates to
+# search for in the path, and PKG is the package which provides the
+# tool. If URL is specified, recommend to the user that he get obtain
+# the package there. Prints the location of the tool on standard
+# output.
+check_tool() {
+  for tool in $1; do
+    printf "checking for $tool ... " >&2
+    found_tool=`which $tool 2> /dev/null` && break
+    echo no >&2
+  done
+  if test "x$found_tool" != x ; then
+    echo $found_tool >&2
+    echo $found_tool
+  else
+    echo >&2
+    echo "$script_name: You must have $2 installed." >&2
+    if test "x$3" != x ; then
+      cat >&2 <<EOF
+
+If your operating system distribution doesn't provide a package, you
+can get download it from <$3>.
+
+EOF
+    fi
+    ! : # false
+  fi
+}
+
+# run_tool TOOL [ARG]...
+# ----------------------
+# Run TOOL with the given ARGs.
+run_tool() {
+  echo "$script_name: running $1 ..."
+  if "$@"; then
+    :
+  else
+    echo "***Error*** $script_name: $1 failed with exit status $?"
+    ! : # false
+  fi
+}
+
+# autopoint_fix [PO_DIR]...
+# ------------------------
+# GNU gettext has a tool called autopoint which is used for copying
+# the gettext build infrastructure into the package. Unfortunately, it
+# only recognizes the top level po directory -- which gEDA doesn't use
+# at all. We therefore run autopoint to populate the top-level po
+# directory, and then copy the files to the po directories that we
+# actually use.
+#
+# N.b. when this function is called we've cd'd into $srcdir.
+autopoint_fix() {
+  top_po="po"
+
+  # For safety, refuse to continue if the top level po dir exists.
+  if test -d top_po; then
+    echo "***Error*** $script_name: $top_po exists. Remove it and re-run $script_name"
+    ! : #false
+  elif run_tool $AUTOPOINT --force; then
+    {
+      for d in $podirs; do
+        echo "$script_name: copying gettext files to $d ..."
+        cp -a $top_po/* $d || break
+      done
+    } && rm -rf $top_po
+  fi
+}
+
+#####################################################################
+# Do some checks for directories and tools
+#####################################################################
+
+check_dist_file $ac_script || die=1
+check_dist_file $tooldir/desktop-i18n &&
+  DESKTOP_I18N=$tooldir/desktop-i18n || die=1
+
+AUTOCONF=`check_tool autoconf "GNU autoconf" ftp://ftp.gnu.org/pub/gnu/` 2>&1 || die=1
+
+AUTOHEADER=`check_tool autoheader "GNU autoconf" ftp://ftp.gnu.org/pub/gnu/` 2>&1 || die=1
+
+AUTOMAKE=`check_tool automake "GNU automake" ftp://ftp.gnu.org/pub/gnu/` 2>&1 || die=1
+
+ACLOCAL=`check_tool aclocal "GNU automake" ftp://ftp.gnu.org/pub/gnu/` 2>&1 || die=1
+
+LIBTOOLIZE=`check_tool "libtoolize glibtoolize" "GNU libtool" "ftp://ftp.gnu.org/pub/gnu/"` 2>&1 || die=1
+
+AUTOPOINT=`check_tool autopoint "GNU gettext" "http://www.gnu.org/software/gettext"` 2>&1 || die=1
+
+#####################################################################
+# Check automake version
+#####################################################################
+
+# Exit now if we don't have automake at all
+if test "x$AUTOMAKE" = x ; then
+  echo "***Error*** $script_name: Some required tools could not be found."
+  exit $die
+fi
+
+printf "checking for automake >= $am_version ... "
+am_have_version=`$AUTOMAKE --version | sed -n -e 's:[^0-9]* \([0-9]*\.[0-9]*\.*[0-9]*\).*$:\1:p'`
+echo $am_have_version
+
+need_major=`echo $am_version | awk -F . '{print $1}'`
+need_minor=`echo $am_version | awk -F . '{print $2}'`
+need_point=`echo $am_version | awk -F . '{print $3}'`
+
+have_major=`echo $am_have_version | awk -F . '{print $1}'`
+have_minor=`echo $am_have_version | awk -F . '{print $2}'`
+have_point=`echo $am_have_version | awk -F . '{print $3}'`
+
+if test "x$have_point" = x; then have_point="0"; fi
+
+if test $need_major -gt $have_major ||
+  test $need_major -eq $have_major -a $need_minor -gt $have_minor ||
+  test $need_major -eq $have_major -a $need_minor -eq $have_minor \
+       -a $need_point -gt $have_point; then
+  cat >&2 <<EOF
+
+You have Automake $am_have_version installed, but Automake $am_version
+or later is required.
+
+If your operating system doesn't provide a package, you can download
+it from ftp://ftp.gnu.org/pub/gnu/
+
+EOF
+  die=1
+fi
+
+#####################################################################
+# Die if checks failed
+#####################################################################
+
+if test "x$die" != x ; then
+  echo "***Error*** $script_name: Some required tools could not be found."
+  exit $die
+fi
+
+#####################################################################
+# Run tools
+#####################################################################
+
+( cd $srcdir &&
+  autopoint_fix &&
+  run_tool "$DESKTOP_I18N" --setup &&
+  run_tool "$LIBTOOLIZE" --force --copy &&
+  run_tool "$ACLOCAL" $aclocal_flags &&
+  run_tool "$AUTOHEADER" &&
+  run_tool "$AUTOMAKE" --copy --add-missing --gnu &&
+  run_tool "$AUTOCONF" )
diff --git a/build-tools/.gitignore b/build-tools/.gitignore
new file mode 100644
index 0000000..8c96a04
--- /dev/null
+++ b/build-tools/.gitignore
@@ -0,0 +1,10 @@
+*~
+config.guess
+config.rpath
+config.sub
+depcomp
+install-sh
+ltmain.sh
+missing
+ylwrap
+compile
diff --git a/build-tools/desktop-i18n b/build-tools/desktop-i18n
new file mode 100755
index 0000000..e3c44d4
--- /dev/null
+++ b/build-tools/desktop-i18n
@@ -0,0 +1,545 @@
+#!/bin/sh
+#                                                   -*-Shell-script-*-
+# Helper script for translating desktop integration data
+# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# usage [EXITSTATUS]
+# ------------------
+# Print a simple help message, then exit with EXITSTATUS
+usage() {
+cat <<EOF
+Carry out translation tasks on desktop integration data.
+
+Usage:
+  desktop-i18n --extract <options> -- <xgettext_options>
+  desktop-i18n --create  <options> INFILE OUTFILE
+  desktop-i18n --setup
+
+  Operating modes:
+      --extract  Extract strings by calling xgettext
+      --create   Substitute translated strings
+      --setup    Setup a source tree to use desktop-i18n
+      --help     Print this message
+
+  Options for --extract mode:
+      --xgettext=XGETTEXT
+                 Specify xgettext executable to use
+
+  Options for --create mode:
+      --gettext=GETTEXT
+                 Specify gettext executable to use
+      --domain=TEXTDOMAIN
+                 Retrieve translated bmessages from TEXTDOMAIN
+      --localedir=TEXTDOMAINDIR
+                 Retrieve message catalog from TEXTDOMAINDIR
+      --lang=LANG  Add a language to translate messages into
+
+In order for this to work, all strings to be matched must be on a
+single line. In a .desktop file, a translatable name-value pair must
+have the desired name prefixed by an underscore. For example:
+
+   _Comment=gEDA Schematic Editor
+
+In a MIME info file, XML tag pairs where the tagname begins with an
+underscore are recognized. Both tags must be on the same line, and
+the tag must be the only XML content on the line. Whitespace at the
+start of the line before the opening tag is preserved. For example:
+
+    <_comment>gEDA circuit schematic</_comment>
+
+Do not include double-quotes (") or slashes (\) in translatable
+strings.
+EOF
+exit $1
+}
+
+# extract_desktop INFILE
+# ----------------------
+# Parse desktop file data from standard input and generate C on
+# standard output. If an error occurs, a message is printed blaming
+# INFILE.
+extract_desktop() {
+  # First argument is name of file being processed
+  echo "/* Generated from $1 by desktop-i18n */"
+  echo
+  # Loop over each line of standard input
+  n=0
+  while read REPLY; do
+    n=`expr $n + 1`
+    regexp='^_\([^=]*\)=\(.*\)$'
+    if ! (echo $REPLY | grep $regexp > /dev/null); then
+      continue
+    fi
+    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
+    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
+
+    # Test for bad characters
+    if (echo $msgid | grep '["\\]' > /dev/null); then
+      echo "$1:$n: msgid contains invalid character" >&2
+      exit 2
+    fi
+
+    # Generate output line
+    if test "x$name" != x -a "x$msgid" != x; then
+      echo "_(\"$msgid\");"
+    else
+      echo "$1:$n: name or msgid is empty" >&2
+      exit 2
+    fi
+  done
+}
+
+
+# extract_xml INFILE
+# ------------------
+# Parse XML mimeinfo data from standard input and generate C on
+# standard output. If an error occurs, a message is printed blaming
+# INFILE.
+extract_xml() {
+  echo "/* Generated from $1 by desktop-i18n */"
+  echo
+  # Loop over each line of standard input
+  n=0
+  while read REPLY; do
+    n=`expr $n + 1`
+    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
+    if ! (echo $REPLY | grep $regexp > /dev/null); then
+      continue
+    fi
+    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
+    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
+
+    # Test for bad characters
+    if (echo $msgid | grep '["\\]' > /dev/null); then
+      echo "$1:$n: msgid contains invalid character" >&2
+      exit 2
+    fi
+
+    # Generate output line
+    if test "x$name" != x -a "x$msgid" != x; then
+      echo "_(\"$msgid\");"
+    else
+      echo "$1:$n: name or msgid is empty" >&2
+      exit 2
+    fi
+  done
+}
+
+# do_extract [OPTION]... -- [XGETTEXT_OPTION]...
+# ----------------------------------------------
+# A wrapper around xgettext. It identifies the file lists and search
+# directories being used by xgettext, and from them any desktop or
+# mimeinfo files to be processed.
+#
+# It then creates a new private directory, and adds it to the xgettext
+# search path. It creates a new file list and set of preprocessed
+# files in that directory, and then calls xgettext (preserving all
+# other original arguments).
+do_extract() {
+  XGETTEXT=xgettext
+
+  # First we have to process the command-line arguments
+  for arg; do
+    # Split into name=value
+    name=`echo $arg | sed -e's:=.*::'`
+    value=`echo $arg | sed -e's:^[^=]*=*::'`
+
+    if test "X$in_xg_args" = X; then
+      # This is an argument only for this script
+      case $name in
+        --xgettext) XGETTEXT="$value";;
+        --help)     usage;;
+        --)         in_xg_args=1;;
+        *)          usage 1;;
+      esac
+
+    else
+      # This is an argument to xgettext.  Luckily the Makefile only
+      # uses full-length arguments, and we only really care about the
+      # ones from there!
+      case $name in
+        --directory)  search_dirs="$search_dirs $value";;
+        --files-from) file_lists="$file_lists $value";;
+        *)
+          # We just want to pass this arg straight to xgettext, so
+          # stick it back on the end of the positional parameters
+          set x "$@" "$arg"; shift;;
+      esac
+    fi
+
+    # Discard processed arg from positional parameters
+    shift
+  done
+
+  # If our private data directory exists, die. Otherwise, create it.
+  priv_dir=.po-input
+  if test -d $priv_dir; then
+    echo "desktop-i18n: $PWD/$priv_dir already exists"
+    exit 3
+  fi
+  mkdir $priv_dir
+
+  # Process file lists if necessary
+  if test "X$file_lists" != X; then
+    # Extract names of files we need to preprocess
+    desktop_in=`cat $file_lists | grep ".desktop.in$"`
+    xml_in=`cat $file_lists | grep ".xml.in$"`
+
+    # Create a new POTFILES file which uses the postprocessed
+    # filenames instead of the original ones.
+    cat $file_lists | \
+      sed -e "s:.desktop.in$:.desktop.in.h:" -e "s:.xml.in$:.xml.in.h:" \
+        > $priv_dir/POTFILES
+  fi
+
+  # Preprocess .desktop files
+  for f in $desktop_in; do
+    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
+    mkdir -p $priv_dir/`dirname $f`
+    extract_desktop $f < $src > $priv_dir/$f.h
+  done
+
+  # Preprocess .xml files
+  for f in $xml_in; do
+    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
+    mkdir -p $priv_dir/`dirname $f`
+    extract_xml $f < $src > $priv_dir/$f.h
+  done
+
+  # Call xgettext (recall we saved some args in $@)
+  gen_args="--files-from=$priv_dir/POTFILES --directory=$priv_dir"
+  for d in $search_dirs; do
+    gen_args="$gen_args --directory=$d"
+  done
+  $XGETTEXT $gen_args "$@"
+
+  # Clean up private directory
+  rm -rf $priv_dir
+}
+
+_search_file() {
+  f=$1
+  shift
+  for d in $@; do
+    if test -f "$d/$f"; then echo "$d/$f"; exit; fi
+  done
+  echo "desktop-i18n: Cannot find $f in xgettext search directories"
+}
+
+# create_desktop INFILE
+# ---------------------
+# Parse desktop file data from standard input and generate a
+# translated desktop file on standard output. If an error occurs, a
+# message is printed blaming INFILE.
+create_desktop() {
+  # Loop over each line of standard input
+  n=0
+  while read REPLY; do
+    n=`expr $n + 1`
+    regexp='^_\([^=]*\)=\(.*\)$'
+    if ! (echo $REPLY | grep $regexp > /dev/null); then
+      echo $REPLY
+      continue
+    fi
+    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
+    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
+
+    # Test for bad characters
+    if (echo $msgid | grep '["\\]' > /dev/null); then
+      echo "$1:$n: msgid contains invalid character" >&2
+      exit 2
+    fi
+
+    # Generate first output line
+    echo "$name=$msgid"
+
+    # Generate language-specific output lines
+    for lang in $LINGUAS; do
+      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
+      # If translated message is unmodified, don't write an output
+      # line
+      if test "x$msg" = x -o "$msg" = "$msgid"; then
+        continue;
+      fi
+
+      echo "$name[$lang]=$msg"
+    done
+  done
+}
+
+# create_xml INFILE
+# -----------------
+# Parse XML mimeinfo data from standard input and generate a
+# translated mimeinfo file on standard output. If an error occurs, a
+# message is printed blaming INFILE.
+create_xml() {
+  # Loop over each line of standard input
+  n=0
+  while : ; do
+
+    # We have to do an ugly hack to avoid stripping whitespace.
+    saveIFS="$IFS"
+    IFS=
+    read REPLY || { IFS="$saveIFS" ; break; }
+    IFS="$saveIFS"
+
+    n=`expr $n + 1`
+    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
+    if ! (echo $REPLY | grep $regexp > /dev/null); then
+      echo "$REPLY"
+      continue
+    fi
+    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
+    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
+    prefix=`echo $REPLY | sed -e "s:^\(.*\)<_$name>.*:\1:"`
+    suffix=`echo $REPLY | sed -e "s:.*</_$name>\(.*\):\1:"`
+
+    # Test for bad characters
+    if (echo $msgid | grep '["\\]' > /dev/null); then
+      echo "$1:$n: msgid contains invalid character" >&2
+      exit 2
+    fi
+
+    # Test for non-empty prefix/suffix
+    if test "x$prefix" != x -o "x$suffix" != x; then
+      echo "$1:$n: translatable tag must be alone on line" >&2
+      exit 2
+    fi
+
+    # Generate first output line
+    echo "$REPLY" | sed -e "s:<_\($name\)>\(.*\)</_\1>:<\1>\2</\1>:"
+
+    # Generate language-specific output lines
+    for lang in $LINGUAS; do
+      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
+      # If translated message is unmodified, don't write an output
+      # line
+      if test "x$msg" = x -o "$msg" = "$msgid"; then
+        continue;
+      fi
+      echo "$REPLY" | sed -e "s,<_\($name\)>\(.*\)</_\1>,<\1 xml:lang=\"$lang\">$msg</\1>,"
+    done
+  done
+}
+
+# do_create [OPTION]... INFILE OUTFILE
+# ------------------------------------
+# Substitutes translations into .desktop or mimeinfo files.
+do_create() {
+  GETTEXT=gettext
+
+  # First process command-line arguments
+  for arg; do
+    # Split into name=value
+    name=`echo $arg | sed -e's:=.*::'`
+    value=`echo $arg | sed -e's:^[^=]*=*::'`
+
+    case $name in
+      --gettext)   GETTEXT=$value;;
+      --domain)    TEXTDOMAIN=$value;;
+      --localedir) TEXTDOMAINDIR=$value;;
+      --lang)      LINGUAS="$LINGUAS $value";;
+      *)
+        # Arg might be a filename, so save it at the end of the
+        # positional parameters
+        set x "$@" "$arg"; shift
+    esac
+
+    # Discard processed arg from positional parameters
+    shift
+  done
+
+  if test $# != 2; then usage 1; fi # Should only have 2 args left
+  INFILE=$1; OUTFILE=$2
+  if ! test -r $INFILE; then
+    echo "desktop-i18n: Cannot open $INFILE for reading."
+    exit 3
+  fi
+
+  export TEXTDOMAIN
+  export GETTEXT
+  export TEXTDOMAINDIR
+  export LINGUAS
+
+  if (echo "$INFILE" | grep ".desktop.in$" > /dev/null); then
+    create_desktop $INFILE < $INFILE > $OUTFILE
+    exit 0
+  fi
+
+  if (echo "$INFILE" | grep ".xml.in$" > /dev/null); then
+    create_xml $INFILE < $INFILE > $OUTFILE
+    exit 0
+  fi
+
+  echo "desktop-i18n: $INFILE: Unrecognized extension"
+  exit 1
+}
+
+# do_setup [DIR]
+# --------------
+# Try to set up a source tree to use desktop-i18n.
+#
+# This is a nasty bit of hackery. We need to insert some rules into
+# the Makefile.in.in installed by gettextize/autopoint so that make
+# knows how to generate input for xgettext.
+#
+# Unfortunately, there's no nice way to do this, so we do it by
+# appending some rules onto each Makefile.in.in, using the following
+# procedure:
+#
+# 1. Look for configure.ac in DIR, or in cwd if DIR wasn't
+#    specified. If we can't find it, whinge.
+# 2. If configure.ac doesn't have AX_DESKTOP_I18N, quit successfully.
+# 3. Find anywhere where AC_CONFIG_FILES is called. For each
+#    Makefile.in found in the list of files to create:
+#    (a) Check for Makefile.in.in. If it doesn't exist, skip with a warning.
+#    (b) If Makefile.in.in contains the string DESKTOP_I18N_RULES,
+#        skip silently.
+#    (c) Append a chunk of rules onto Makefile.in.in
+#
+# Note that we can't use a po/Rules-* file because substitution is not
+# carried out on these files.
+do_setup() {
+  # Was DIR specified?
+  if test "x$1" = x; then srcdir=.; else srcdir=$1; fi
+
+  # Can we find configure.ac or configure.in?
+  for f in configure.ac configure.in; do
+    if test -r $srcdir/$f; then
+      ac_file=$srcdir/$f
+      break
+    fi
+  done
+  if test "x$ac_file" = x; then
+    echo "Cannot find configure.ac or configure.in!"
+    exit 4
+  fi
+
+  # Check that configure.ac is readable
+  if ! test -r $ac_file; then
+    echo "Cannot open $ac_file for reading."
+    exit 3
+  fi
+
+  # Is the AX_DESKTOP_I18N macro present?
+  if ! grep AX_DESKTOP_I18N $ac_file > /dev/null; then
+    exit
+  fi
+
+  # Now we use a piece of m4 code to try and discover all of the
+  # configuration files. This is UGLY AND BAD, because it only detects
+  # when AC_CONFIG_FILES is called in the main configure script (if
+  # AC_CONFIG_FILES is called by another macro somewhere, it won't be
+  # detected).
+  cat - $ac_file > conftest <<EOF
+changequote([,])dnl
+divert([-1])
+define([AC_CONFIG_FILES], [divert([0])[\$1]divert([-1])])
+EOF
+  conf_files=`m4 conftest`
+  rm conftest
+
+  # Look for any files called Makefile.in.
+  for f in $conf_files; do
+    # Discard any composition rules and prepend srcdir.
+    f=`echo "$f" | sed -e 's,:.*,,'`
+    f="$srcdir/$f"
+
+    # Skip files not called Makefile.in
+    if test `echo "$f" | sed -e 's:.*/::'` != Makefile.in; then
+      continue
+    fi
+
+    # Check that a corresponding Makefile.in.in exists and we can
+    # read/write it
+    if ! test -r $f.in -a -w $f.in; then
+      echo "desktop-i18n: Cannot process $f.in"
+      continue
+    fi
+
+    # Check that we haven't already hacked it
+    if grep DESKTOP_I18N_RULES $f.in > /dev/null; then
+      continue
+    fi
+
+    # Append our rules
+    echo "desktop-i18n: modifying $f.in"
+    cat >> $f.in <<EOF
+
+# DESKTOP_I18N_RULES  (Do not edit or remove this line)
+#####################################################################
+# Makefile rules needed by the desktop-i18n tool.
+# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+top_builddir = @top_builddir@
+MKDIR_P = @MKDIR_P@
+
+DESKTOP_I18N_LOCALE_DIR = @DESKTOP_I18N_LOCALE_DIR@
+
+# We need to temporarily install the localisation files somewhere so
+# that desktop-i18n --create can look up messages in them. We recreate
+# the timestamp before *and* after running 'make install' so that the
+# make doesn't go into an infinite loop!
+all: stamp-i18n
+stamp-i18n: \$(DESKTOP_I18N_LOCALE_DIR) stamp-po Makefile
+	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
+	\$(MAKE) prefix=\$(DESKTOP_I18N_LOCALE_DIR) install && \
+	cp \$(srcdir)/LINGUAS \$(DESKTOP_I18N_LOCALE_DIR)/\$(DOMAIN).LINGUAS \
+	|| rm stamp-i18n
+	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
+\$(DESKTOP_I18N_LOCALE_DIR):
+	\$(MKDIR_P) \$(DESKTOP_I18N_LOCALE_DIR)
+
+clean: clean-i18n
+clean-i18n:
+	-rm -rf \$(DESKTOP_I18N_LOCALE_DIR) stamp-i18n
+
+# End of desktop-i18n rules
+#####################################################################
+
+EOF
+  done
+}
+
+
+
+# First argument has to be the mode of operation. Then call the
+# appropriate function to process the rest of the arguments and do the
+# work.
+if test -z $1; then usage 1; fi
+MODE=$1; shift
+case $MODE in
+  --extract) do_extract "$@";;
+  --create) do_create "$@";;
+  --setup) do_setup "$@";;
+  --help) usage;;
+  *) usage 1;;
+esac
diff --git a/build-tools/icon-theme-installer b/build-tools/icon-theme-installer
new file mode 100755
index 0000000..e070868
--- /dev/null
+++ b/build-tools/icon-theme-installer
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+# icon-theme-installer
+# Copyright (C) 2006 Novell, Inc.
+# Written by Aaron Bockover <abock@xxxxxxxxx>
+# Licensed under the MIT/X11 license
+#
+# Modified by Peter Clifton to allow icons with numerals in the filename
+#
+# This script is meant to be invoked from within a Makefile/Makefile.am
+# in the install-data-local and uninstall-data sections. It handles the
+# task of properly installing icons into the icon theme. It requires a
+# few arguments to set up its environment, and a list of files to be
+# installed. The format of the file list is critical:
+#
+# <category>,<local-src-file-name>
+#
+#   apps,music-player-banshee.svg
+#   apps,music-player-banshee-16.png
+#   apps,music-player-banshee-22.png
+#
+# <category> is the icon theme category, for instance, apps, devices,
+# actions, emblems...
+#
+# <local-src-file-name> must have a basename in the form of:
+#
+#   proper-theme-name[-<SIZE>].<EXTENSION>
+#
+# Where <SIZE> should be either nothing, which will default to scalable
+# or \-[0-9]{2}, which will expand to <SIZE>x<SIZE>. For example:
+#
+#   music-player-banshee-16.png
+#
+# The <SIZE> here is -16 and will expand to 16x16 per the icon theme spec
+#
+# What follows is an example Makefile.am for icon theme installation:
+#
+# ---------------
+# theme=hicolor
+# themedir=$(datadir)/icons/$(theme)
+# theme_icons = \
+#	apps,music-player-banshee.svg \
+#	apps,music-player-banshee-16.png \
+#	apps,music-player-banshee-22.png \
+#	apps,music-player-banshee-24.png \
+#	apps,music-player-banshee-32.png
+#
+# install_icon_exec = $(top_srcdir)/build/icon-theme-installer -t $(theme) -s $(srcdir) -d "x$(DESTDIR)" -b $(themedir) -m "$(mkinstalldirs)" -x "$(INSTALL_DATA)"
+# install-data-local:
+#	$(install_icon_exec) -i $(theme_icons)
+#
+#	uninstall-hook:
+#		$(install_icon_exec) -u $(theme_icons)
+#
+#	MAINTAINERCLEANFILES = Makefile.in
+#	EXTRA_DIST = $(wildcard *.svg *.png)
+# ---------------
+#
+# Arguments to this program:
+#
+# -i         : Install
+# -u         : Uninstall
+# -t <theme> : Theme name (hicolor)
+# -b <dir>   : Theme installation dest directory [x$(DESTDIR)] - Always prefix
+#              this argument with x; it will be stripped but will act as a
+#              placeholder for zero $DESTDIRs (only set by packagers)
+# -d <dir>   : Theme installation directory [$(hicolordir)]
+# -s <dir>   : Source directory [$(srcdir)]
+# -m <exec>  : Command to exec for directory creation [$(mkinstalldirs)]
+# -x <exec>  : Command to exec for single file installation [$(INSTALL_DATA)]
+# <remainging> : All remainging should be category,filename pairs
+
+while getopts "iut:b:d:s:m:x:" flag; do
+	case "$flag" in
+		i) INSTALL=yes ;;
+		u) UNINSTALL=yes ;;
+		t) THEME_NAME=$OPTARG ;;
+		d) INSTALL_DEST_DIR="`echo $OPTARG | sed 's;^x;;'`" ;;
+		b) INSTALL_BASE_DIR=$OPTARG ;;
+		s) SRC_DIR=$OPTARG ;;
+		m) MKINSTALLDIRS_EXEC=$OPTARG ;;
+		x) INSTALL_DATA_EXEC=$OPTARG ;;
+	esac
+done
+
+shift `expr $OPTIND - 1`
+
+if test "x$INSTALL" = "xyes" -a "x$UNINSTALL" = "xyes"; then
+	echo "Cannot pass both -i and -u"
+	exit 1
+elif test "x$INSTALL" = "x" -a "x$UNINSTALL" = "x"; then
+	echo "Must path either -i or -u"
+	exit 1
+fi
+
+if test -z "$THEME_NAME"; then
+	echo "Theme name required (-t hicolor)"
+	exit 1
+fi
+
+if test -z "$INSTALL_BASE_DIR"; then
+	echo "Base theme directory required [-d \$(hicolordir)]"
+	exit 1
+fi
+
+if test ! -x `echo "$MKINSTALLDIRS_EXEC" | cut -f1 -d' '`; then
+	echo "Cannot find '$MKINSTALLDIRS_EXEC'; You probably want to pass -m \$(mkinstalldirs)"
+	exit 1
+fi
+
+if test ! -x `echo "$INSTALL_DATA_EXEC" | cut -f1 -d' '`; then
+	echo "Cannot find '$INSTALL_DATA_EXEC'; You probably want to pass -x \$(INSTALL_DATA)"
+	exit 1
+fi
+
+if test -z "$SRC_DIR"; then
+	SRC_DIR=.
+fi
+
+for icon in $@; do
+	size=`echo $icon | sed -n 's/.*-\([0-9]*\).*/\1/p'`
+	category=`echo $icon | cut -d, -f1`
+	build_name=`echo $icon | cut -d, -f2`
+	install_name=`echo $build_name | sed 's/-[0-9]\+//g'`
+	install_name=`basename $install_name`
+
+	if test -z $size; then 
+		size=scalable;
+	else
+		size=${size}x${size};
+	fi
+	
+	install_dir=${INSTALL_DEST_DIR}${INSTALL_BASE_DIR}/$size/$category
+	install_path=$install_dir/$install_name
+	
+	if test "x$INSTALL" = "xyes"; then
+		echo "Installing $size $install_name into $THEME_NAME icon theme"
+		
+		$MKINSTALLDIRS_EXEC $install_dir || {
+			echo "Failed to create directory $install_dir"
+			exit 1
+		}
+		
+		$INSTALL_DATA_EXEC $SRC_DIR/$build_name $install_path || {
+			echo "Failed to install $SRC_DIR/$build_name into $install_path"
+			exit 1
+		}
+
+		if test ! -e $install_path; then
+			echo "Failed to install $SRC_DIR/$build_name into $install_path"
+			exit 1
+		fi
+	else
+		if test -e $install_path; then
+			echo "Removing $size $install_name from $THEME_NAME icon theme"
+
+			rm $install_path || { 
+				echo "Failed to remove $install_path"
+				exit 1
+			}
+		fi
+	fi
+done
+
+if test "x$INSTALL" = "xyes"; then
+	gtk_update_icon_cache_bin="`(which gtk-update-icon-cache || echo /opt/gnome/bin/gtk-update-icon-cache)2>/dev/null`"
+	gtk_update_icon_cache_bin="${GTK_UPDATE_ICON_CACHE_BIN:-$gtk_update_icon_cache_bin}"
+
+	gtk_update_icon_cache="$gtk_update_icon_cache_bin -f -t $INSTALL_BASE_DIR"
+
+	if test -z "$INSTALL_DEST_DIR"; then 
+		if test -x $gtk_update_icon_cache_bin; then 
+			echo "Updating GTK icon cache"
+			$gtk_update_icon_cache
+		else
+			echo "*** Icon cache not updated. Could not execute $gtk_update_icon_cache_bin"
+		fi
+	else
+		echo "*** Icon cache not updated. After install, run this:"
+		echo "***   $gtk_update_icon_cache"
+	fi
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..d43c901
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,173 @@
+dnl                                                      -*-Autoconf-*-
+dnl Process this file with autoconf to generate configure.
+dnl
+dnl The AX_* macros are defined in files in the top-level m4
+dnl directory.
+
+#####################################################################
+# Set up configuration system
+#####################################################################
+
+AC_INIT([gEDA Suite], [1.5.2], [geda-bug@xxxxxxxx], [gEDA])
+AC_PREREQ([2.60])
+
+AC_CONFIG_SRCDIR([libgeda/src/libgeda.c])
+AC_CONFIG_AUX_DIR([build-tools])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADER([config.h])
+
+AM_INIT_AUTOMAKE([foreign]) # FIXME we should not need 'foreign'
+
+AC_GNU_SOURCE # FIXME for some reason this is needed?
+
+#####################################################################
+# Do version number magic
+#####################################################################
+
+AX_GIT_VERSION([20090328])
+
+#####################################################################
+# Win32/MinGW support
+#####################################################################
+
+# FIXME complete this
+AC_CANONICAL_HOST
+
+#####################################################################
+# Check for compiling & linking tools
+#####################################################################
+
+AC_PROG_CC
+AC_PROG_CPP
+
+AC_LIBTOOL_WIN32_DLL
+AC_DISABLE_STATIC
+AC_PROG_LIBTOOL
+
+AM_PROG_CC_C_O
+AX_GCC_FLAGS([-Wall])
+
+AM_PROG_LEX
+AX_PROG_AWK
+AX_PROG_GROFF
+
+#####################################################################
+# Internationalisation
+#####################################################################
+
+AM_NLS
+AM_GNU_GETTEXT
+AM_GNU_GETTEXT_VERSION([0.16])
+AX_DESKTOP_I18N
+
+#####################################################################
+# Check for libraries that use pkg-config
+#####################################################################
+
+PKG_PROG_PKG_CONFIG
+
+PKG_CHECK_MODULES(GUILE, [guile-1.8], ,
+  AC_MSG_ERROR([Guile 1.8 or later is required.]))
+
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], ,
+  AC_MSG_ERROR([GLib 2.12.0 or later is required.]))
+
+PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.10.0], ,
+  AC_MSG_ERROR([GTK+ 2.10.0 or later is required.]))
+
+PKG_CHECK_MODULES(GDK_PIXBUF, [gdk-pixbuf-2.0 >= 0.15.0], ,
+  AC_MSG_ERROR([GDK_PIXBUF 0.15.0 or later is required.]))
+
+PKG_CHECK_MODULES(CAIRO, [cairo >= 1.2.0], ,
+  AC_MSG_ERROR([CAIRO 1.2.0 or later is required.]))
+
+#####################################################################
+# Header files & particular functions
+#####################################################################
+
+AC_HEADER_SYS_WAIT
+
+# FIXME these checks are obsolete, because every plausible platform
+# provides what they check for.
+AC_HEADER_STDC
+AC_HEADER_DIRENT
+
+# FIXME these checks may be pointless for one of three reasons: every
+# even vaguely sane libc implementation provides them; we don't use
+# any of their functions in favour of GLib alternatives; or we don't
+# provide an alternative, so the build will fail anyway.
+AC_CHECK_HEADERS([stdlib.h string.h unistd.h])
+
+# FIXME since we don't have a sensible alternative, if these headers
+# are missing we should fail. Also need to remove HAVE_ERRNO_H tests
+# in the C source code, since if we *don't* have it the build will
+# fail anyway.
+AC_CHECK_HEADERS([errno.h fcntl.h])
+
+# Check for rint in math library. FIXME do we actually need to test
+# this? Should we use lrint instead?
+AC_CHECK_LIB([m], [lrint],
+             AC_DEFINE([HAVE_LRINT], 1,
+                       [If your math library has lrint in it, define this]))
+
+AC_CHECK_FUNCS([chown getlogin])
+
+# Check if the getopt header is present
+AC_CHECK_HEADERS([getopt.h])
+# Check for getopt_long
+# On FreeBSD the 'gnugetopt' library is needed.
+AC_SEARCH_LIBS([getopt_long], [gnugetopt],
+               AC_DEFINE([HAVE_GETOPT_LONG], 1,
+                         [Define to 1 if you have the `getopt_long' function.]))
+
+# Check for misc features of awk
+AX_AWK_FEATURES
+
+#####################################################################
+# Optional things
+#####################################################################
+
+# Assertions
+AX_OPTION_ASSERT
+# API documentation
+AX_OPTION_DOXYGEN
+# XDG desktop files
+AX_OPTION_XDG_DATA
+# KDE 3 desktop files
+AX_OPTION_KDE3_DATA
+# XDG database updates
+AX_OPTION_XDG_DB
+# libstroke support
+AX_OPTION_STROKE
+
+#####################################################################
+# Tool-specific setup
+#####################################################################
+
+# Where should data files be installed/searched for?
+AX_DATA_DIRS
+# Where should PCB footprints be searched for?
+AX_PCB_DIRS
+# Set up libgeda with the correct ld version number
+AX_LIBGEDA([36:0:0])
+
+#####################################################################
+# Generate output
+#####################################################################
+
+AC_CONFIG_FILES([Makefile
+                 intl/Makefile
+
+                 libgeda/Makefile
+                 libgeda/libgeda.pc
+                 libgeda/po/domain.mak
+                 libgeda/po/Makefile.in
+                 libgeda/data/Makefile
+                 libgeda/docs/Makefile
+                 libgeda/include/Makefile
+                 libgeda/lib/Makefile
+                 libgeda/scheme/Makefile
+                 libgeda/share/Makefile
+                 libgeda/src/Makefile
+])
+AC_OUTPUT
diff --git a/gattrib/desktop-i18n b/gattrib/desktop-i18n
deleted file mode 100755
index 6fab9b8..0000000
--- a/gattrib/desktop-i18n
+++ /dev/null
@@ -1,538 +0,0 @@
-#!/bin/sh
-#                                                   -*-Shell-script-*-
-# Helper script for translating desktop integration data
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-# usage [EXITSTATUS]
-# ------------------
-# Print a simple help message, then exit with EXITSTATUS
-usage() {
-cat <<EOF
-Carry out translation tasks on desktop integration data.
-
-Usage:
-  desktop-i18n --extract <options> -- <xgettext_options>
-  desktop-i18n --create  <options> INFILE OUTFILE
-  desktop-i18n --setup
-
-  Operating modes:
-      --extract  Extract strings by calling xgettext
-      --create   Substitute translated strings
-      --setup    Setup a source tree to use desktop-i18n
-      --help     Print this message
-
-  Options for --extract mode:
-      --xgettext=XGETTEXT
-                 Specify xgettext executable to use
-
-  Options for --create mode:
-      --gettext=GETTEXT
-                 Specify gettext executable to use
-      --domain=TEXTDOMAIN
-                 Retrieve translated bmessages from TEXTDOMAIN
-      --localedir=TEXTDOMAINDIR
-                 Retrieve message catalog from TEXTDOMAINDIR
-      --lang=LANG  Add a language to translate messages into
-
-In order for this to work, all strings to be matched must be on a
-single line. In a .desktop file, a translatable name-value pair must
-have the desired name prefixed by an underscore. For example:
-
-   _Comment=gEDA Schematic Editor
-
-In a MIME info file, XML tag pairs where the tagname begins with an
-underscore are recognized. Both tags must be on the same line, and
-the tag must be the only XML content on the line. Whitespace at the
-start of the line before the opening tag is preserved. For example:
-
-    <_comment>gEDA circuit schematic</_comment>
-
-Do not include double-quotes (") or slashes (\) in translatable
-strings.
-EOF
-exit $1
-}
-
-# extract_desktop INFILE
-# ----------------------
-# Parse desktop file data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_desktop() {
-  # First argument is name of file being processed
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-
-# extract_xml INFILE
-# ------------------
-# Parse XML mimeinfo data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_xml() {
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-# do_extract [OPTION]... -- [XGETTEXT_OPTION]...
-# ----------------------------------------------
-# A wrapper around xgettext. It identifies the file lists and search
-# directories being used by xgettext, and from them any desktop or
-# mimeinfo files to be processed.
-#
-# It then creates a new private directory, and adds it to the xgettext
-# search path. It creates a new file list and set of preprocessed
-# files in that directory, and then calls xgettext (preserving all
-# other original arguments).
-do_extract() {
-  XGETTEXT=xgettext
-
-  # First we have to process the command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    if test "X$in_xg_args" = X; then
-      # This is an argument only for this script
-      case $name in
-        --xgettext) XGETTEXT="$value";;
-        --help)     usage;;
-        --)         in_xg_args=1;;
-        *)          usage 1;;
-      esac
-
-    else
-      # This is an argument to xgettext.  Luckily the Makefile only
-      # uses full-length arguments, and we only really care about the
-      # ones from there!
-      case $name in
-        --directory)  search_dirs="$search_dirs $value";;
-        --files-from) file_lists="$file_lists $value";;
-        *)
-          # We just want to pass this arg straight to xgettext, so
-          # stick it back on the end of the positional parameters
-          set x "$@" "$arg"; shift;;
-      esac
-    fi
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  # If our private data directory exists, die. Otherwise, create it.
-  priv_dir=.po-input
-  if test -d $priv_dir; then
-    echo "desktop-i18n: $PWD/$priv_dir already exists"
-    exit 3
-  fi
-  mkdir $priv_dir
-
-  # Process file lists if necessary
-  if test "X$file_lists" != X; then
-    # Extract names of files we need to preprocess
-    desktop_in=`cat $file_lists | grep ".desktop.in$"`
-    xml_in=`cat $file_lists | grep ".xml.in$"`
-
-    # Create a new POTFILES file which uses the postprocessed
-    # filenames instead of the original ones.
-    cat $file_lists | \
-      sed -e "s:.desktop.in$:.desktop.in.h:" -e "s:.xml.in$:.xml.in.h:" \
-        > $priv_dir/POTFILES
-  fi
-
-  # Preprocess .desktop files
-  for f in $desktop_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_desktop $f < $src > $priv_dir/$f.h
-  done
-
-  # Preprocess .xml files
-  for f in $xml_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_xml $f < $src > $priv_dir/$f.h
-  done
-
-  # Call xgettext (recall we saved some args in $@)
-  gen_args="--files-from=$priv_dir/POTFILES --directory=$priv_dir"
-  for d in $search_dirs; do
-    gen_args="$gen_args --directory=$d"
-  done
-  $XGETTEXT $gen_args "$@"
-
-  # Clean up private directory
-  rm -rf $priv_dir
-}
-
-_search_file() {
-  f=$1
-  shift
-  for d in $@; do
-    if test -f "$d/$f"; then echo "$d/$f"; exit; fi
-  done
-  echo "desktop-i18n: Cannot find $f in xgettext search directories"
-}
-
-# create_desktop INFILE
-# ---------------------
-# Parse desktop file data from standard input and generate a
-# translated desktop file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_desktop() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo $REPLY
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$name=$msgid"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-
-      echo "$name[$lang]=$msg"
-    done
-  done
-}
-
-# create_xml INFILE
-# -----------------
-# Parse XML mimeinfo data from standard input and generate a
-# translated mimeinfo file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_xml() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo "$REPLY"
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-    prefix=`echo $REPLY | sed -e "s:^\(.*\)<_$name>.*:\1:"`
-    suffix=`echo $REPLY | sed -e "s:.*</_$name>\(.*\):\1:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Test for non-empty prefix/suffix
-    if test "x$prefix" != x -o "x$suffix" != x; then
-      echo "$1:$n: translatable tag must be alone on line" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$REPLY" | sed -e "s:<_\($name\)>\(.*\)</_\1>:<\1>\2</\1>:"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-      echo "$REPLY" | sed -e "s,<_\($name\)>\(.*\)</_\1>,<\1 xml:lang=\"$lang\">$msg</\1>,"
-    done
-  done
-}
-
-# do_create [OPTION]... INFILE OUTFILE
-# ------------------------------------
-# Substitutes translations into .desktop or mimeinfo files.
-do_create() {
-  GETTEXT=gettext
-
-  # First process command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    case $name in
-      --gettext)   GETTEXT=$value;;
-      --domain)    TEXTDOMAIN=$value;;
-      --localedir) TEXTDOMAINDIR=$value;;
-      --lang)      LINGUAS="$LINGUAS $value";;
-      *)
-        # Arg might be a filename, so save it at the end of the
-        # positional parameters
-        set x "$@" "$arg"; shift
-    esac
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  if test $# != 2; then usage 1; fi # Should only have 2 args left
-  INFILE=$1; OUTFILE=$2
-  if ! test -r $INFILE; then
-    echo "desktop-i18n: Cannot open $INFILE for reading."
-    exit 3
-  fi
-
-  export TEXTDOMAIN
-  export GETTEXT
-  export TEXTDOMAINDIR
-  export LINGUAS
-
-  if (echo "$INFILE" | grep ".desktop.in$" > /dev/null); then
-    create_desktop $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  if (echo "$INFILE" | grep ".xml.in$" > /dev/null); then
-    create_xml $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  echo "desktop-i18n: $INFILE: Unrecognized extension"
-  exit 1
-}
-
-# do_setup [DIR]
-# --------------
-# Try to set up a source tree to use desktop-i18n.
-#
-# This is a nasty bit of hackery. We need to insert some rules into
-# the Makefile.in.in installed by gettextize/autopoint so that make
-# knows how to generate input for xgettext.
-#
-# Unfortunately, there's no nice way to do this, so we do it by
-# appending some rules onto each Makefile.in.in, using the following
-# procedure:
-#
-# 1. Look for configure.ac in DIR, or in cwd if DIR wasn't
-#    specified. If we can't find it, whinge.
-# 2. If configure.ac doesn't have AX_DESKTOP_I18N, quit successfully.
-# 3. Find anywhere where AC_CONFIG_FILES is called. For each
-#    Makefile.in found in the list of files to create:
-#    (a) Check for Makefile.in.in. If it doesn't exist, skip with a warning.
-#    (b) If Makefile.in.in contains the string DESKTOP_I18N_RULES,
-#        skip silently.
-#    (c) Append a chunk of rules onto Makefile.in.in
-#
-# Note that we can't use a po/Rules-* file because substitution is not
-# carried out on these files.
-do_setup() {
-  # Was DIR specified?
-  if test "x$1" = x; then srcdir=.; else srcdir=$1; fi
-
-  # Can we find configure.ac or configure.in?
-  for f in configure.ac configure.in; do
-    if test -r $srcdir/$f; then
-      ac_file=$srcdir/$f
-      break
-    fi
-  done
-  if test "x$ac_file" = x; then
-    echo "Cannot find configure.ac or configure.in!"
-    exit 4
-  fi
-
-  # Check that configure.ac is readable
-  if ! test -r $ac_file; then
-    echo "Cannot open $ac_file for reading."
-    exit 3
-  fi
-
-  # Is the AX_DESKTOP_I18N macro present?
-  if ! grep AX_DESKTOP_I18N $ac_file > /dev/null; then
-    exit
-  fi
-
-  # Now we use a piece of m4 code to try and discover all of the
-  # configuration files. This is UGLY AND BAD, because it only detects
-  # when AC_CONFIG_FILES is called in the main configure script (if
-  # AC_CONFIG_FILES is called by another macro somewhere, it won't be
-  # detected).
-  cat - $ac_file > conftest <<EOF
-changequote([,])dnl
-divert([-1])
-define([AC_CONFIG_FILES], [divert([0])[\$1]divert([-1])])
-EOF
-  conf_files=`m4 conftest`
-  rm conftest
-
-  # Look for any files called Makefile.in.
-  for f in $conf_files; do
-    # Discard any composition rules and prepend srcdir.
-    f=`echo "$f" | sed -e 's,:.*,,'`
-    f="$srcdir/$f"
-
-    # Skip files not called Makefile.in
-    if test `echo "$f" | sed -e 's:.*/::'` != Makefile.in; then
-      continue
-    fi
-
-    # Check that a corresponding Makefile.in.in exists and we can
-    # read/write it
-    if ! test -r $f.in -a -w $f.in; then
-      echo "desktop-i18n: Cannot process $f.in"
-      continue
-    fi
-
-    # Check that we haven't already hacked it
-    if grep DESKTOP_I18N_RULES $f.in > /dev/null; then
-      continue
-    fi
-
-    # Append our rules
-    echo "desktop-i18n: modifying $f.in"
-    cat >> $f.in <<EOF
-
-# DESKTOP_I18N_RULES  (Do not edit or remove this line)
-#####################################################################
-# Makefile rules needed by the desktop-i18n tool.
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-top_builddir = @top_builddir@
-MKDIR_P = @MKDIR_P@
-
-DESKTOP_I18N_LOCALE_DIR = @DESKTOP_I18N_LOCALE_DIR@
-
-# We need to temporarily install the localisation files somewhere so
-# that desktop-i18n --create can look up messages in them. We recreate
-# the timestamp before *and* after running 'make install' so that the
-# make doesn't go into an infinite loop!
-all: stamp-i18n
-stamp-i18n: \$(DESKTOP_I18N_LOCALE_DIR) stamp-po Makefile
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-	\$(MAKE) prefix=\$(DESKTOP_I18N_LOCALE_DIR) install && \
-	cp \$(srcdir)/LINGUAS \$(DESKTOP_I18N_LOCALE_DIR)/\$(DOMAIN).LINGUAS \
-	|| rm stamp-i18n
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-\$(DESKTOP_I18N_LOCALE_DIR):
-	\$(MKDIR_P) \$(DESKTOP_I18N_LOCALE_DIR)
-
-clean: clean-i18n
-clean-i18n:
-	-rm -rf \$(DESKTOP_I18N_LOCALE_DIR) stamp-i18n
-
-# End of desktop-i18n rules
-#####################################################################
-
-EOF
-  done
-}
-
-
-
-# First argument has to be the mode of operation. Then call the
-# appropriate function to process the rest of the arguments and do the
-# work.
-if test -z $1; then usage 1; fi
-MODE=$1; shift
-case $MODE in
-  --extract) do_extract "$@";;
-  --create) do_create "$@";;
-  --setup) do_setup "$@";;
-  --help) usage;;
-  *) usage 1;;
-esac
diff --git a/gattrib/m4/geda-desktop-i18n.m4 b/gattrib/m4/geda-desktop-i18n.m4
deleted file mode 100644
index 5b8af4e..0000000
--- a/gattrib/m4/geda-desktop-i18n.m4
+++ /dev/null
@@ -1,78 +0,0 @@
-# geda-desktop-i18n.m4                                  -*-Autoconf-*-
-# serial 1
-
-dnl Carry out configuration tasks needed by desktop-i18n tool
-dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-AC_DEFUN([AX_DESKTOP_I18N],
-[
-  AC_PREREQ([2.60])dnl
-  AC_REQUIRE([AM_NLS])dnl
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  dnl Complain if desktop-i18n is missing
-  AC_REQUIRE_AUX_FILE([desktop-i18n])
-
-  # We need to check that GNU gettext is available
-  AM_PATH_PROG_WITH_TEST([GETTEXT], [gettext],
-    [$ac_dir/$ac_word --version | grep GNU > /dev/null], :)
-  if test "x$GETTEXT" = x; then
-    AC_MSG_ERROR([The GNU gettext program could not be found. Please ensure that GNU
-gettext is correctly installed, and rerun configure.])
-  fi
-  AC_SUBST([GETTEXT])
-
-  # How should desktop-i18n be run?
-  DESKTOP_I18N_SCRIPT="$am_aux_dir/desktop-i18n"
-  if test "X$GETTEXT" != "Xgettext"; then
-    DESKTOP_I18N="\${SHELL} $DESKTOP_I18N_SCRIPT"
-  else
-    DESKTOP_I18N="GETTEXT=\${GETTEXT} \${SHELL} $DESKTOP_I18N_SCRIPT"
-  fi
-  AC_SUBST([DESKTOP_I18N_SCRIPT])
-  AC_SUBST([DESKTOP_I18N])
-
-  # We have a private directory to temporarily install locale data
-  # into.
-  DESKTOP_I18N_LOCALE_DIR='$(top_builddir)/.desktop-i18n'
-  AC_SUBST([DESKTOP_I18N_LOCALE_DIR])
-
-  # Substitute our own evil, corrupted version of xgettext.
-  # Mwahahahaha!
-  XGETTEXT="$DESKTOP_I18N --extract --xgettext=$XGETTEXT --"
-
-  # Define some rules for substitution into Makefiles
-  DESKTOP_I18N_CREATE='$(DESKTOP_I18N) --create --gettext=$(GETTEXT) --domain=$(DOMAIN) \
-    --localedir=$(DESKTOP_I18N_LOCALE_DIR)/share/locale $(DESKTOP_I18N_LANGS)'
-  DESKTOP_I18N_LANGS_RULE='DESKTOP_I18N_LANGS = $(addprefix --lang=,$(shell cat $(DESKTOP_I18N_LOCALE_DIR)/$(DOMAIN).LINGUAS))'
-  DESKTOP_I18N_DESKTOP_RULE='%.desktop: %.desktop.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-  DESKTOP_I18N_XML_RULE='%.xml: %.xml.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-
-  AC_SUBST([DESKTOP_I18N_CREATE])
-  _IT_SUBST([DESKTOP_I18N_LANGS_RULE])
-  _IT_SUBST([DESKTOP_I18N_DESKTOP_RULE])
-  _IT_SUBST([DESKTOP_I18N_XML_RULE])
-])dnl AX_DESKTOP_I18N
-
-# _IT_SUBST(VARIABLE)
-# -------------------
-# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
-# Stolen from intltool.m4 (GPL v2)
-AC_DEFUN([_IT_SUBST],
-[
-AC_SUBST([$1])
-m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
-])dnl _IT_SUBST
diff --git a/gschem/desktop-i18n b/gschem/desktop-i18n
deleted file mode 100755
index 6fab9b8..0000000
--- a/gschem/desktop-i18n
+++ /dev/null
@@ -1,538 +0,0 @@
-#!/bin/sh
-#                                                   -*-Shell-script-*-
-# Helper script for translating desktop integration data
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-# usage [EXITSTATUS]
-# ------------------
-# Print a simple help message, then exit with EXITSTATUS
-usage() {
-cat <<EOF
-Carry out translation tasks on desktop integration data.
-
-Usage:
-  desktop-i18n --extract <options> -- <xgettext_options>
-  desktop-i18n --create  <options> INFILE OUTFILE
-  desktop-i18n --setup
-
-  Operating modes:
-      --extract  Extract strings by calling xgettext
-      --create   Substitute translated strings
-      --setup    Setup a source tree to use desktop-i18n
-      --help     Print this message
-
-  Options for --extract mode:
-      --xgettext=XGETTEXT
-                 Specify xgettext executable to use
-
-  Options for --create mode:
-      --gettext=GETTEXT
-                 Specify gettext executable to use
-      --domain=TEXTDOMAIN
-                 Retrieve translated bmessages from TEXTDOMAIN
-      --localedir=TEXTDOMAINDIR
-                 Retrieve message catalog from TEXTDOMAINDIR
-      --lang=LANG  Add a language to translate messages into
-
-In order for this to work, all strings to be matched must be on a
-single line. In a .desktop file, a translatable name-value pair must
-have the desired name prefixed by an underscore. For example:
-
-   _Comment=gEDA Schematic Editor
-
-In a MIME info file, XML tag pairs where the tagname begins with an
-underscore are recognized. Both tags must be on the same line, and
-the tag must be the only XML content on the line. Whitespace at the
-start of the line before the opening tag is preserved. For example:
-
-    <_comment>gEDA circuit schematic</_comment>
-
-Do not include double-quotes (") or slashes (\) in translatable
-strings.
-EOF
-exit $1
-}
-
-# extract_desktop INFILE
-# ----------------------
-# Parse desktop file data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_desktop() {
-  # First argument is name of file being processed
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-
-# extract_xml INFILE
-# ------------------
-# Parse XML mimeinfo data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_xml() {
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-# do_extract [OPTION]... -- [XGETTEXT_OPTION]...
-# ----------------------------------------------
-# A wrapper around xgettext. It identifies the file lists and search
-# directories being used by xgettext, and from them any desktop or
-# mimeinfo files to be processed.
-#
-# It then creates a new private directory, and adds it to the xgettext
-# search path. It creates a new file list and set of preprocessed
-# files in that directory, and then calls xgettext (preserving all
-# other original arguments).
-do_extract() {
-  XGETTEXT=xgettext
-
-  # First we have to process the command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    if test "X$in_xg_args" = X; then
-      # This is an argument only for this script
-      case $name in
-        --xgettext) XGETTEXT="$value";;
-        --help)     usage;;
-        --)         in_xg_args=1;;
-        *)          usage 1;;
-      esac
-
-    else
-      # This is an argument to xgettext.  Luckily the Makefile only
-      # uses full-length arguments, and we only really care about the
-      # ones from there!
-      case $name in
-        --directory)  search_dirs="$search_dirs $value";;
-        --files-from) file_lists="$file_lists $value";;
-        *)
-          # We just want to pass this arg straight to xgettext, so
-          # stick it back on the end of the positional parameters
-          set x "$@" "$arg"; shift;;
-      esac
-    fi
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  # If our private data directory exists, die. Otherwise, create it.
-  priv_dir=.po-input
-  if test -d $priv_dir; then
-    echo "desktop-i18n: $PWD/$priv_dir already exists"
-    exit 3
-  fi
-  mkdir $priv_dir
-
-  # Process file lists if necessary
-  if test "X$file_lists" != X; then
-    # Extract names of files we need to preprocess
-    desktop_in=`cat $file_lists | grep ".desktop.in$"`
-    xml_in=`cat $file_lists | grep ".xml.in$"`
-
-    # Create a new POTFILES file which uses the postprocessed
-    # filenames instead of the original ones.
-    cat $file_lists | \
-      sed -e "s:.desktop.in$:.desktop.in.h:" -e "s:.xml.in$:.xml.in.h:" \
-        > $priv_dir/POTFILES
-  fi
-
-  # Preprocess .desktop files
-  for f in $desktop_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_desktop $f < $src > $priv_dir/$f.h
-  done
-
-  # Preprocess .xml files
-  for f in $xml_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_xml $f < $src > $priv_dir/$f.h
-  done
-
-  # Call xgettext (recall we saved some args in $@)
-  gen_args="--files-from=$priv_dir/POTFILES --directory=$priv_dir"
-  for d in $search_dirs; do
-    gen_args="$gen_args --directory=$d"
-  done
-  $XGETTEXT $gen_args "$@"
-
-  # Clean up private directory
-  rm -rf $priv_dir
-}
-
-_search_file() {
-  f=$1
-  shift
-  for d in $@; do
-    if test -f "$d/$f"; then echo "$d/$f"; exit; fi
-  done
-  echo "desktop-i18n: Cannot find $f in xgettext search directories"
-}
-
-# create_desktop INFILE
-# ---------------------
-# Parse desktop file data from standard input and generate a
-# translated desktop file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_desktop() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo $REPLY
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$name=$msgid"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-
-      echo "$name[$lang]=$msg"
-    done
-  done
-}
-
-# create_xml INFILE
-# -----------------
-# Parse XML mimeinfo data from standard input and generate a
-# translated mimeinfo file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_xml() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo "$REPLY"
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-    prefix=`echo $REPLY | sed -e "s:^\(.*\)<_$name>.*:\1:"`
-    suffix=`echo $REPLY | sed -e "s:.*</_$name>\(.*\):\1:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Test for non-empty prefix/suffix
-    if test "x$prefix" != x -o "x$suffix" != x; then
-      echo "$1:$n: translatable tag must be alone on line" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$REPLY" | sed -e "s:<_\($name\)>\(.*\)</_\1>:<\1>\2</\1>:"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-      echo "$REPLY" | sed -e "s,<_\($name\)>\(.*\)</_\1>,<\1 xml:lang=\"$lang\">$msg</\1>,"
-    done
-  done
-}
-
-# do_create [OPTION]... INFILE OUTFILE
-# ------------------------------------
-# Substitutes translations into .desktop or mimeinfo files.
-do_create() {
-  GETTEXT=gettext
-
-  # First process command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    case $name in
-      --gettext)   GETTEXT=$value;;
-      --domain)    TEXTDOMAIN=$value;;
-      --localedir) TEXTDOMAINDIR=$value;;
-      --lang)      LINGUAS="$LINGUAS $value";;
-      *)
-        # Arg might be a filename, so save it at the end of the
-        # positional parameters
-        set x "$@" "$arg"; shift
-    esac
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  if test $# != 2; then usage 1; fi # Should only have 2 args left
-  INFILE=$1; OUTFILE=$2
-  if ! test -r $INFILE; then
-    echo "desktop-i18n: Cannot open $INFILE for reading."
-    exit 3
-  fi
-
-  export TEXTDOMAIN
-  export GETTEXT
-  export TEXTDOMAINDIR
-  export LINGUAS
-
-  if (echo "$INFILE" | grep ".desktop.in$" > /dev/null); then
-    create_desktop $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  if (echo "$INFILE" | grep ".xml.in$" > /dev/null); then
-    create_xml $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  echo "desktop-i18n: $INFILE: Unrecognized extension"
-  exit 1
-}
-
-# do_setup [DIR]
-# --------------
-# Try to set up a source tree to use desktop-i18n.
-#
-# This is a nasty bit of hackery. We need to insert some rules into
-# the Makefile.in.in installed by gettextize/autopoint so that make
-# knows how to generate input for xgettext.
-#
-# Unfortunately, there's no nice way to do this, so we do it by
-# appending some rules onto each Makefile.in.in, using the following
-# procedure:
-#
-# 1. Look for configure.ac in DIR, or in cwd if DIR wasn't
-#    specified. If we can't find it, whinge.
-# 2. If configure.ac doesn't have AX_DESKTOP_I18N, quit successfully.
-# 3. Find anywhere where AC_CONFIG_FILES is called. For each
-#    Makefile.in found in the list of files to create:
-#    (a) Check for Makefile.in.in. If it doesn't exist, skip with a warning.
-#    (b) If Makefile.in.in contains the string DESKTOP_I18N_RULES,
-#        skip silently.
-#    (c) Append a chunk of rules onto Makefile.in.in
-#
-# Note that we can't use a po/Rules-* file because substitution is not
-# carried out on these files.
-do_setup() {
-  # Was DIR specified?
-  if test "x$1" = x; then srcdir=.; else srcdir=$1; fi
-
-  # Can we find configure.ac or configure.in?
-  for f in configure.ac configure.in; do
-    if test -r $srcdir/$f; then
-      ac_file=$srcdir/$f
-      break
-    fi
-  done
-  if test "x$ac_file" = x; then
-    echo "Cannot find configure.ac or configure.in!"
-    exit 4
-  fi
-
-  # Check that configure.ac is readable
-  if ! test -r $ac_file; then
-    echo "Cannot open $ac_file for reading."
-    exit 3
-  fi
-
-  # Is the AX_DESKTOP_I18N macro present?
-  if ! grep AX_DESKTOP_I18N $ac_file > /dev/null; then
-    exit
-  fi
-
-  # Now we use a piece of m4 code to try and discover all of the
-  # configuration files. This is UGLY AND BAD, because it only detects
-  # when AC_CONFIG_FILES is called in the main configure script (if
-  # AC_CONFIG_FILES is called by another macro somewhere, it won't be
-  # detected).
-  cat - $ac_file > conftest <<EOF
-changequote([,])dnl
-divert([-1])
-define([AC_CONFIG_FILES], [divert([0])[\$1]divert([-1])])
-EOF
-  conf_files=`m4 conftest`
-  rm conftest
-
-  # Look for any files called Makefile.in.
-  for f in $conf_files; do
-    # Discard any composition rules and prepend srcdir.
-    f=`echo "$f" | sed -e 's,:.*,,'`
-    f="$srcdir/$f"
-
-    # Skip files not called Makefile.in
-    if test `echo "$f" | sed -e 's:.*/::'` != Makefile.in; then
-      continue
-    fi
-
-    # Check that a corresponding Makefile.in.in exists and we can
-    # read/write it
-    if ! test -r $f.in -a -w $f.in; then
-      echo "desktop-i18n: Cannot process $f.in"
-      continue
-    fi
-
-    # Check that we haven't already hacked it
-    if grep DESKTOP_I18N_RULES $f.in > /dev/null; then
-      continue
-    fi
-
-    # Append our rules
-    echo "desktop-i18n: modifying $f.in"
-    cat >> $f.in <<EOF
-
-# DESKTOP_I18N_RULES  (Do not edit or remove this line)
-#####################################################################
-# Makefile rules needed by the desktop-i18n tool.
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-top_builddir = @top_builddir@
-MKDIR_P = @MKDIR_P@
-
-DESKTOP_I18N_LOCALE_DIR = @DESKTOP_I18N_LOCALE_DIR@
-
-# We need to temporarily install the localisation files somewhere so
-# that desktop-i18n --create can look up messages in them. We recreate
-# the timestamp before *and* after running 'make install' so that the
-# make doesn't go into an infinite loop!
-all: stamp-i18n
-stamp-i18n: \$(DESKTOP_I18N_LOCALE_DIR) stamp-po Makefile
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-	\$(MAKE) prefix=\$(DESKTOP_I18N_LOCALE_DIR) install && \
-	cp \$(srcdir)/LINGUAS \$(DESKTOP_I18N_LOCALE_DIR)/\$(DOMAIN).LINGUAS \
-	|| rm stamp-i18n
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-\$(DESKTOP_I18N_LOCALE_DIR):
-	\$(MKDIR_P) \$(DESKTOP_I18N_LOCALE_DIR)
-
-clean: clean-i18n
-clean-i18n:
-	-rm -rf \$(DESKTOP_I18N_LOCALE_DIR) stamp-i18n
-
-# End of desktop-i18n rules
-#####################################################################
-
-EOF
-  done
-}
-
-
-
-# First argument has to be the mode of operation. Then call the
-# appropriate function to process the rest of the arguments and do the
-# work.
-if test -z $1; then usage 1; fi
-MODE=$1; shift
-case $MODE in
-  --extract) do_extract "$@";;
-  --create) do_create "$@";;
-  --setup) do_setup "$@";;
-  --help) usage;;
-  *) usage 1;;
-esac
diff --git a/gschem/m4/geda-desktop-i18n.m4 b/gschem/m4/geda-desktop-i18n.m4
deleted file mode 100644
index 5b8af4e..0000000
--- a/gschem/m4/geda-desktop-i18n.m4
+++ /dev/null
@@ -1,78 +0,0 @@
-# geda-desktop-i18n.m4                                  -*-Autoconf-*-
-# serial 1
-
-dnl Carry out configuration tasks needed by desktop-i18n tool
-dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-AC_DEFUN([AX_DESKTOP_I18N],
-[
-  AC_PREREQ([2.60])dnl
-  AC_REQUIRE([AM_NLS])dnl
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  dnl Complain if desktop-i18n is missing
-  AC_REQUIRE_AUX_FILE([desktop-i18n])
-
-  # We need to check that GNU gettext is available
-  AM_PATH_PROG_WITH_TEST([GETTEXT], [gettext],
-    [$ac_dir/$ac_word --version | grep GNU > /dev/null], :)
-  if test "x$GETTEXT" = x; then
-    AC_MSG_ERROR([The GNU gettext program could not be found. Please ensure that GNU
-gettext is correctly installed, and rerun configure.])
-  fi
-  AC_SUBST([GETTEXT])
-
-  # How should desktop-i18n be run?
-  DESKTOP_I18N_SCRIPT="$am_aux_dir/desktop-i18n"
-  if test "X$GETTEXT" != "Xgettext"; then
-    DESKTOP_I18N="\${SHELL} $DESKTOP_I18N_SCRIPT"
-  else
-    DESKTOP_I18N="GETTEXT=\${GETTEXT} \${SHELL} $DESKTOP_I18N_SCRIPT"
-  fi
-  AC_SUBST([DESKTOP_I18N_SCRIPT])
-  AC_SUBST([DESKTOP_I18N])
-
-  # We have a private directory to temporarily install locale data
-  # into.
-  DESKTOP_I18N_LOCALE_DIR='$(top_builddir)/.desktop-i18n'
-  AC_SUBST([DESKTOP_I18N_LOCALE_DIR])
-
-  # Substitute our own evil, corrupted version of xgettext.
-  # Mwahahahaha!
-  XGETTEXT="$DESKTOP_I18N --extract --xgettext=$XGETTEXT --"
-
-  # Define some rules for substitution into Makefiles
-  DESKTOP_I18N_CREATE='$(DESKTOP_I18N) --create --gettext=$(GETTEXT) --domain=$(DOMAIN) \
-    --localedir=$(DESKTOP_I18N_LOCALE_DIR)/share/locale $(DESKTOP_I18N_LANGS)'
-  DESKTOP_I18N_LANGS_RULE='DESKTOP_I18N_LANGS = $(addprefix --lang=,$(shell cat $(DESKTOP_I18N_LOCALE_DIR)/$(DOMAIN).LINGUAS))'
-  DESKTOP_I18N_DESKTOP_RULE='%.desktop: %.desktop.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-  DESKTOP_I18N_XML_RULE='%.xml: %.xml.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-
-  AC_SUBST([DESKTOP_I18N_CREATE])
-  _IT_SUBST([DESKTOP_I18N_LANGS_RULE])
-  _IT_SUBST([DESKTOP_I18N_DESKTOP_RULE])
-  _IT_SUBST([DESKTOP_I18N_XML_RULE])
-])dnl AX_DESKTOP_I18N
-
-# _IT_SUBST(VARIABLE)
-# -------------------
-# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
-# Stolen from intltool.m4 (GPL v2)
-AC_DEFUN([_IT_SUBST],
-[
-AC_SUBST([$1])
-m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
-])dnl _IT_SUBST
diff --git a/libgeda/.gitignore b/libgeda/.gitignore
index a040e48..81f1686 100644
--- a/libgeda/.gitignore
+++ b/libgeda/.gitignore
@@ -1,25 +1,6 @@
 Makefile
 Makefile.in
-stamp-h1
-configure
-libtool
-*.cache
-config.h
-config.h.in
-config.log
-config.status
-configure.ac
 libgeda.pc
-aclocal.m4
-config.guess
-config.rpath
-config.sub
-ltmain.sh
-depcomp
-install-sh
-missing
-mkinstalldirs
-ABOUT-NLS
 *~
 *#
 TAGS
@@ -28,7 +9,5 @@ GRTAGS
 GSYMS
 GTAGS
 HTML
-gschem.log
 docs/images/*png
 docs/images/*pdf
-.desktop-i18n
diff --git a/libgeda/Makefile.am b/libgeda/Makefile.am
index 57ced64..0659bf4 100644
--- a/libgeda/Makefile.am
+++ b/libgeda/Makefile.am
@@ -1,8 +1,7 @@
 
-SUBDIRS = po data docs include intl lib scheme share src
+SUBDIRS = po data docs include lib scheme share src
 
-EXTRA_DIST = HACKING BUGS ChangeLog-1.0 autogen.sh \
-             icon-theme-installer desktop-i18n po/domain.mak.in
+EXTRA_DIST = HACKING BUGS ChangeLog-1.0 po/domain.mak.in
 
 pkgconfigdir            = $(libdir)/pkgconfig
 pkgconfig_DATA          = libgeda.pc
@@ -11,20 +10,7 @@ libgeda-pc-install: libgeda.pc
 	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
 	$(INSTALL_DATA) libgeda.pc $(DESTDIR)$(pkgconfigdir)
 
-distclean-local:
-	-rm -rf autom4te.cache
-
-maintainer-clean-local:
-	-rm -rf autom4te.cache
-
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak libgeda.pc po/domain.mak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
-	               config.status aclocal.m4 libgeda.pc config.guess \
-		       config.sub depcomp install-sh ltmain.sh missing \
-		       mkinstalldirs
-
-DISTCHECK_CONFIGURE_FLAGS = --disable-update-mime-database
-
-ACLOCAL_AMFLAGS = -I m4
+DISTCLEANFILES = *.log core FILE *~ libgeda.pc po/domain.mak
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in libgeda.pc
diff --git a/libgeda/data/Makefile.am b/libgeda/data/Makefile.am
index a3671bc..5f2b000 100644
--- a/libgeda/data/Makefile.am
+++ b/libgeda/data/Makefile.am
@@ -30,18 +30,20 @@ xmldir = $(mimedir)/packages
 xml_in_files = libgeda.xml.in
 xml_DATA = $(xml_in_files:.xml.in=.xml)
 
-kdedatadir=@KDEDATADIR@
-mimelnkdir = $(kdedatadir)/mimelnk
-applicationdir = $(mimelnkdir)/application
-
 application_in_files = \
 	x-geda-gsch2pcb-project.desktop.in \
 	x-geda-schematic.desktop.in \
 	x-geda-symbol.desktop.in
+
+if ENABLE_KDE_DESKTOP_DATA
+kdedatadir=@KDEDATADIR@
+mimelnkdir = $(kdedatadir)/mimelnk
+applicationdir = $(mimelnkdir)/application
 application_DATA = $(application_in_files:.desktop.in=.desktop)
+endif ENABLE_KDE_DESKTOP_DATA
 
 install_icon_exec = \
-	$(SHELL) $(top_srcdir)/icon-theme-installer \
+	$(ICON_THEME_INSTALLER) \
 	-t $(theme) \
 	-s $(srcdir) \
 	-d "x$(DESTDIR)" \
@@ -49,7 +51,7 @@ install_icon_exec = \
 	-m "$(mkinstalldirs)" \
 	-x "$(INSTALL_DATA)"
 
-DOMAIN=$(GETTEXT_PACKAGE)
+DOMAIN=$(LIBGEDA_GETTEXT_DOMAIN)
 
 @DESKTOP_I18N_LANGS_RULE@
 @DESKTOP_I18N_DESKTOP_RULE@
@@ -59,12 +61,12 @@ install-data-local:
 	$(install_icon_exec) -i $(theme_icons)
 
 install-data-hook:
-if ENABLE_UPDATE_MIME_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"
 endif
 
 uninstall-hook:
-if ENABLE_UPDATE_MIME_DATABASE
+if ENABLE_UPDATE_XDG_DATABASE
 	$(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"
 endif
 	$(install_icon_exec) -u $(theme_icons)
@@ -72,6 +74,5 @@ endif
 MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
 DISTCLEANFILES = $(xml_DATA) $(application_DATA)
 EXTRA_DIST = $(mime_icon_files) $(mime_icon_sources) \
-             $(xml_in_files) $(xml_DATA) \
-             $(application_in_files)
+             $(xml_in_files) $(application_in_files)
 
diff --git a/libgeda/desktop-i18n b/libgeda/desktop-i18n
deleted file mode 100755
index 6fab9b8..0000000
--- a/libgeda/desktop-i18n
+++ /dev/null
@@ -1,538 +0,0 @@
-#!/bin/sh
-#                                                   -*-Shell-script-*-
-# Helper script for translating desktop integration data
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-# usage [EXITSTATUS]
-# ------------------
-# Print a simple help message, then exit with EXITSTATUS
-usage() {
-cat <<EOF
-Carry out translation tasks on desktop integration data.
-
-Usage:
-  desktop-i18n --extract <options> -- <xgettext_options>
-  desktop-i18n --create  <options> INFILE OUTFILE
-  desktop-i18n --setup
-
-  Operating modes:
-      --extract  Extract strings by calling xgettext
-      --create   Substitute translated strings
-      --setup    Setup a source tree to use desktop-i18n
-      --help     Print this message
-
-  Options for --extract mode:
-      --xgettext=XGETTEXT
-                 Specify xgettext executable to use
-
-  Options for --create mode:
-      --gettext=GETTEXT
-                 Specify gettext executable to use
-      --domain=TEXTDOMAIN
-                 Retrieve translated bmessages from TEXTDOMAIN
-      --localedir=TEXTDOMAINDIR
-                 Retrieve message catalog from TEXTDOMAINDIR
-      --lang=LANG  Add a language to translate messages into
-
-In order for this to work, all strings to be matched must be on a
-single line. In a .desktop file, a translatable name-value pair must
-have the desired name prefixed by an underscore. For example:
-
-   _Comment=gEDA Schematic Editor
-
-In a MIME info file, XML tag pairs where the tagname begins with an
-underscore are recognized. Both tags must be on the same line, and
-the tag must be the only XML content on the line. Whitespace at the
-start of the line before the opening tag is preserved. For example:
-
-    <_comment>gEDA circuit schematic</_comment>
-
-Do not include double-quotes (") or slashes (\) in translatable
-strings.
-EOF
-exit $1
-}
-
-# extract_desktop INFILE
-# ----------------------
-# Parse desktop file data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_desktop() {
-  # First argument is name of file being processed
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-
-# extract_xml INFILE
-# ------------------
-# Parse XML mimeinfo data from standard input and generate C on
-# standard output. If an error occurs, a message is printed blaming
-# INFILE.
-extract_xml() {
-  echo "/* Generated from $1 by desktop-i18n */"
-  echo
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate output line
-    if test "x$name" != x -a "x$msgid" != x; then
-      echo "_(\"$msgid\");"
-    else
-      echo "$1:$n: name or msgid is empty" >&2
-      exit 2
-    fi
-  done
-}
-
-# do_extract [OPTION]... -- [XGETTEXT_OPTION]...
-# ----------------------------------------------
-# A wrapper around xgettext. It identifies the file lists and search
-# directories being used by xgettext, and from them any desktop or
-# mimeinfo files to be processed.
-#
-# It then creates a new private directory, and adds it to the xgettext
-# search path. It creates a new file list and set of preprocessed
-# files in that directory, and then calls xgettext (preserving all
-# other original arguments).
-do_extract() {
-  XGETTEXT=xgettext
-
-  # First we have to process the command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    if test "X$in_xg_args" = X; then
-      # This is an argument only for this script
-      case $name in
-        --xgettext) XGETTEXT="$value";;
-        --help)     usage;;
-        --)         in_xg_args=1;;
-        *)          usage 1;;
-      esac
-
-    else
-      # This is an argument to xgettext.  Luckily the Makefile only
-      # uses full-length arguments, and we only really care about the
-      # ones from there!
-      case $name in
-        --directory)  search_dirs="$search_dirs $value";;
-        --files-from) file_lists="$file_lists $value";;
-        *)
-          # We just want to pass this arg straight to xgettext, so
-          # stick it back on the end of the positional parameters
-          set x "$@" "$arg"; shift;;
-      esac
-    fi
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  # If our private data directory exists, die. Otherwise, create it.
-  priv_dir=.po-input
-  if test -d $priv_dir; then
-    echo "desktop-i18n: $PWD/$priv_dir already exists"
-    exit 3
-  fi
-  mkdir $priv_dir
-
-  # Process file lists if necessary
-  if test "X$file_lists" != X; then
-    # Extract names of files we need to preprocess
-    desktop_in=`cat $file_lists | grep ".desktop.in$"`
-    xml_in=`cat $file_lists | grep ".xml.in$"`
-
-    # Create a new POTFILES file which uses the postprocessed
-    # filenames instead of the original ones.
-    cat $file_lists | \
-      sed -e "s:.desktop.in$:.desktop.in.h:" -e "s:.xml.in$:.xml.in.h:" \
-        > $priv_dir/POTFILES
-  fi
-
-  # Preprocess .desktop files
-  for f in $desktop_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_desktop $f < $src > $priv_dir/$f.h
-  done
-
-  # Preprocess .xml files
-  for f in $xml_in; do
-    src=`_search_file $f $search_dirs` || { rm -rf $priv_dir; exit 3; }
-    mkdir -p $priv_dir/`dirname $f`
-    extract_xml $f < $src > $priv_dir/$f.h
-  done
-
-  # Call xgettext (recall we saved some args in $@)
-  gen_args="--files-from=$priv_dir/POTFILES --directory=$priv_dir"
-  for d in $search_dirs; do
-    gen_args="$gen_args --directory=$d"
-  done
-  $XGETTEXT $gen_args "$@"
-
-  # Clean up private directory
-  rm -rf $priv_dir
-}
-
-_search_file() {
-  f=$1
-  shift
-  for d in $@; do
-    if test -f "$d/$f"; then echo "$d/$f"; exit; fi
-  done
-  echo "desktop-i18n: Cannot find $f in xgettext search directories"
-}
-
-# create_desktop INFILE
-# ---------------------
-# Parse desktop file data from standard input and generate a
-# translated desktop file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_desktop() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='^_\([^=]*\)=\(.*\)$'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo $REPLY
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$name=$msgid"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-
-      echo "$name[$lang]=$msg"
-    done
-  done
-}
-
-# create_xml INFILE
-# -----------------
-# Parse XML mimeinfo data from standard input and generate a
-# translated mimeinfo file on standard output. If an error occurs, a
-# message is printed blaming INFILE.
-create_xml() {
-  # Loop over each line of standard input
-  n=0
-  while read REPLY; do
-    n=`expr $n + 1`
-    regexp='<_\([a-zA-Z][a-zA-Z]*\)>\(.*\)</_\1>'
-    if ! (echo $REPLY | grep $regexp > /dev/null); then
-      echo "$REPLY"
-      continue
-    fi
-    name=`echo $REPLY | sed -e "s:$regexp:\1:"`
-    msgid=`echo $REPLY | sed -e "s:$regexp:\2:"`
-    prefix=`echo $REPLY | sed -e "s:^\(.*\)<_$name>.*:\1:"`
-    suffix=`echo $REPLY | sed -e "s:.*</_$name>\(.*\):\1:"`
-
-    # Test for bad characters
-    if (echo $msgid | grep '["\\]' > /dev/null); then
-      echo "$1:$n: msgid contains invalid character" >&2
-      exit 2
-    fi
-
-    # Test for non-empty prefix/suffix
-    if test "x$prefix" != x -o "x$suffix" != x; then
-      echo "$1:$n: translatable tag must be alone on line" >&2
-      exit 2
-    fi
-
-    # Generate first output line
-    echo "$REPLY" | sed -e "s:<_\($name\)>\(.*\)</_\1>:<\1>\2</\1>:"
-
-    # Generate language-specific output lines
-    for lang in $LINGUAS; do
-      msg=`LANGUAGE=$lang $GETTEXT "$msgid"`
-      # If translated message is unmodified, don't write an output
-      # line
-      if test "x$msg" = x -o "$msg" = "$msgid"; then
-        continue;
-      fi
-      echo "$REPLY" | sed -e "s,<_\($name\)>\(.*\)</_\1>,<\1 xml:lang=\"$lang\">$msg</\1>,"
-    done
-  done
-}
-
-# do_create [OPTION]... INFILE OUTFILE
-# ------------------------------------
-# Substitutes translations into .desktop or mimeinfo files.
-do_create() {
-  GETTEXT=gettext
-
-  # First process command-line arguments
-  for arg; do
-    # Split into name=value
-    name=`echo $arg | sed -e's:=.*::'`
-    value=`echo $arg | sed -e's:^[^=]*=*::'`
-
-    case $name in
-      --gettext)   GETTEXT=$value;;
-      --domain)    TEXTDOMAIN=$value;;
-      --localedir) TEXTDOMAINDIR=$value;;
-      --lang)      LINGUAS="$LINGUAS $value";;
-      *)
-        # Arg might be a filename, so save it at the end of the
-        # positional parameters
-        set x "$@" "$arg"; shift
-    esac
-
-    # Discard processed arg from positional parameters
-    shift
-  done
-
-  if test $# != 2; then usage 1; fi # Should only have 2 args left
-  INFILE=$1; OUTFILE=$2
-  if ! test -r $INFILE; then
-    echo "desktop-i18n: Cannot open $INFILE for reading."
-    exit 3
-  fi
-
-  export TEXTDOMAIN
-  export GETTEXT
-  export TEXTDOMAINDIR
-  export LINGUAS
-
-  if (echo "$INFILE" | grep ".desktop.in$" > /dev/null); then
-    create_desktop $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  if (echo "$INFILE" | grep ".xml.in$" > /dev/null); then
-    create_xml $INFILE < $INFILE > $OUTFILE
-    exit 0
-  fi
-
-  echo "desktop-i18n: $INFILE: Unrecognized extension"
-  exit 1
-}
-
-# do_setup [DIR]
-# --------------
-# Try to set up a source tree to use desktop-i18n.
-#
-# This is a nasty bit of hackery. We need to insert some rules into
-# the Makefile.in.in installed by gettextize/autopoint so that make
-# knows how to generate input for xgettext.
-#
-# Unfortunately, there's no nice way to do this, so we do it by
-# appending some rules onto each Makefile.in.in, using the following
-# procedure:
-#
-# 1. Look for configure.ac in DIR, or in cwd if DIR wasn't
-#    specified. If we can't find it, whinge.
-# 2. If configure.ac doesn't have AX_DESKTOP_I18N, quit successfully.
-# 3. Find anywhere where AC_CONFIG_FILES is called. For each
-#    Makefile.in found in the list of files to create:
-#    (a) Check for Makefile.in.in. If it doesn't exist, skip with a warning.
-#    (b) If Makefile.in.in contains the string DESKTOP_I18N_RULES,
-#        skip silently.
-#    (c) Append a chunk of rules onto Makefile.in.in
-#
-# Note that we can't use a po/Rules-* file because substitution is not
-# carried out on these files.
-do_setup() {
-  # Was DIR specified?
-  if test "x$1" = x; then srcdir=.; else srcdir=$1; fi
-
-  # Can we find configure.ac or configure.in?
-  for f in configure.ac configure.in; do
-    if test -r $srcdir/$f; then
-      ac_file=$srcdir/$f
-      break
-    fi
-  done
-  if test "x$ac_file" = x; then
-    echo "Cannot find configure.ac or configure.in!"
-    exit 4
-  fi
-
-  # Check that configure.ac is readable
-  if ! test -r $ac_file; then
-    echo "Cannot open $ac_file for reading."
-    exit 3
-  fi
-
-  # Is the AX_DESKTOP_I18N macro present?
-  if ! grep AX_DESKTOP_I18N $ac_file > /dev/null; then
-    exit
-  fi
-
-  # Now we use a piece of m4 code to try and discover all of the
-  # configuration files. This is UGLY AND BAD, because it only detects
-  # when AC_CONFIG_FILES is called in the main configure script (if
-  # AC_CONFIG_FILES is called by another macro somewhere, it won't be
-  # detected).
-  cat - $ac_file > conftest <<EOF
-changequote([,])dnl
-divert([-1])
-define([AC_CONFIG_FILES], [divert([0])[\$1]divert([-1])])
-EOF
-  conf_files=`m4 conftest`
-  rm conftest
-
-  # Look for any files called Makefile.in.
-  for f in $conf_files; do
-    # Discard any composition rules and prepend srcdir.
-    f=`echo "$f" | sed -e 's,:.*,,'`
-    f="$srcdir/$f"
-
-    # Skip files not called Makefile.in
-    if test `echo "$f" | sed -e 's:.*/::'` != Makefile.in; then
-      continue
-    fi
-
-    # Check that a corresponding Makefile.in.in exists and we can
-    # read/write it
-    if ! test -r $f.in -a -w $f.in; then
-      echo "desktop-i18n: Cannot process $f.in"
-      continue
-    fi
-
-    # Check that we haven't already hacked it
-    if grep DESKTOP_I18N_RULES $f.in > /dev/null; then
-      continue
-    fi
-
-    # Append our rules
-    echo "desktop-i18n: modifying $f.in"
-    cat >> $f.in <<EOF
-
-# DESKTOP_I18N_RULES  (Do not edit or remove this line)
-#####################################################################
-# Makefile rules needed by the desktop-i18n tool.
-# Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-top_builddir = @top_builddir@
-MKDIR_P = @MKDIR_P@
-
-DESKTOP_I18N_LOCALE_DIR = @DESKTOP_I18N_LOCALE_DIR@
-
-# We need to temporarily install the localisation files somewhere so
-# that desktop-i18n --create can look up messages in them. We recreate
-# the timestamp before *and* after running 'make install' so that the
-# make doesn't go into an infinite loop!
-all: stamp-i18n
-stamp-i18n: \$(DESKTOP_I18N_LOCALE_DIR) stamp-po Makefile
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-	\$(MAKE) prefix=\$(DESKTOP_I18N_LOCALE_DIR) install && \
-	cp \$(srcdir)/LINGUAS \$(DESKTOP_I18N_LOCALE_DIR)/\$(DOMAIN).LINGUAS \
-	|| rm stamp-i18n
-	@echo timestamp > stamp-i18nT && mv stamp-i18nT stamp-i18n
-\$(DESKTOP_I18N_LOCALE_DIR):
-	\$(MKDIR_P) \$(DESKTOP_I18N_LOCALE_DIR)
-
-clean: clean-i18n
-clean-i18n:
-	-rm -rf \$(DESKTOP_I18N_LOCALE_DIR) stamp-i18n
-
-# End of desktop-i18n rules
-#####################################################################
-
-EOF
-  done
-}
-
-
-
-# First argument has to be the mode of operation. Then call the
-# appropriate function to process the rest of the arguments and do the
-# work.
-if test -z $1; then usage 1; fi
-MODE=$1; shift
-case $MODE in
-  --extract) do_extract "$@";;
-  --create) do_create "$@";;
-  --setup) do_setup "$@";;
-  --help) usage;;
-  *) usage 1;;
-esac
diff --git a/libgeda/docs/Makefile.am b/libgeda/docs/Makefile.am
index 95465e6..c916658 100644
--- a/libgeda/docs/Makefile.am
+++ b/libgeda/docs/Makefile.am
@@ -8,7 +8,7 @@ all:
 
 doxygen: libgeda.dox
 	@echo 'Creating doxygen documentation for libgeda...'
-if BUILDDOC
+if ENABLE_DOXYGEN
 	-cd images && $(MAKE)
 	-cd ..
 	$(DOXYGEN) libgeda.dox
@@ -22,7 +22,7 @@ endif
 MOSTLYCLEANFILES = 	*.log *~
 CLEANFILES = 		*.log *~
 DISTCLEANFILES =        *.log
-MAINTAINERCLEANFILES = 	*.log *~ Makefile.in configure
+MAINTAINERCLEANFILES = 	*.log *~ Makefile.in
 
 distclean-local:
 	-rm -rf html latex
diff --git a/libgeda/icon-theme-installer b/libgeda/icon-theme-installer
deleted file mode 100755
index e070868..0000000
--- a/libgeda/icon-theme-installer
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/bin/sh
-
-# icon-theme-installer
-# Copyright (C) 2006 Novell, Inc.
-# Written by Aaron Bockover <abock@xxxxxxxxx>
-# Licensed under the MIT/X11 license
-#
-# Modified by Peter Clifton to allow icons with numerals in the filename
-#
-# This script is meant to be invoked from within a Makefile/Makefile.am
-# in the install-data-local and uninstall-data sections. It handles the
-# task of properly installing icons into the icon theme. It requires a
-# few arguments to set up its environment, and a list of files to be
-# installed. The format of the file list is critical:
-#
-# <category>,<local-src-file-name>
-#
-#   apps,music-player-banshee.svg
-#   apps,music-player-banshee-16.png
-#   apps,music-player-banshee-22.png
-#
-# <category> is the icon theme category, for instance, apps, devices,
-# actions, emblems...
-#
-# <local-src-file-name> must have a basename in the form of:
-#
-#   proper-theme-name[-<SIZE>].<EXTENSION>
-#
-# Where <SIZE> should be either nothing, which will default to scalable
-# or \-[0-9]{2}, which will expand to <SIZE>x<SIZE>. For example:
-#
-#   music-player-banshee-16.png
-#
-# The <SIZE> here is -16 and will expand to 16x16 per the icon theme spec
-#
-# What follows is an example Makefile.am for icon theme installation:
-#
-# ---------------
-# theme=hicolor
-# themedir=$(datadir)/icons/$(theme)
-# theme_icons = \
-#	apps,music-player-banshee.svg \
-#	apps,music-player-banshee-16.png \
-#	apps,music-player-banshee-22.png \
-#	apps,music-player-banshee-24.png \
-#	apps,music-player-banshee-32.png
-#
-# install_icon_exec = $(top_srcdir)/build/icon-theme-installer -t $(theme) -s $(srcdir) -d "x$(DESTDIR)" -b $(themedir) -m "$(mkinstalldirs)" -x "$(INSTALL_DATA)"
-# install-data-local:
-#	$(install_icon_exec) -i $(theme_icons)
-#
-#	uninstall-hook:
-#		$(install_icon_exec) -u $(theme_icons)
-#
-#	MAINTAINERCLEANFILES = Makefile.in
-#	EXTRA_DIST = $(wildcard *.svg *.png)
-# ---------------
-#
-# Arguments to this program:
-#
-# -i         : Install
-# -u         : Uninstall
-# -t <theme> : Theme name (hicolor)
-# -b <dir>   : Theme installation dest directory [x$(DESTDIR)] - Always prefix
-#              this argument with x; it will be stripped but will act as a
-#              placeholder for zero $DESTDIRs (only set by packagers)
-# -d <dir>   : Theme installation directory [$(hicolordir)]
-# -s <dir>   : Source directory [$(srcdir)]
-# -m <exec>  : Command to exec for directory creation [$(mkinstalldirs)]
-# -x <exec>  : Command to exec for single file installation [$(INSTALL_DATA)]
-# <remainging> : All remainging should be category,filename pairs
-
-while getopts "iut:b:d:s:m:x:" flag; do
-	case "$flag" in
-		i) INSTALL=yes ;;
-		u) UNINSTALL=yes ;;
-		t) THEME_NAME=$OPTARG ;;
-		d) INSTALL_DEST_DIR="`echo $OPTARG | sed 's;^x;;'`" ;;
-		b) INSTALL_BASE_DIR=$OPTARG ;;
-		s) SRC_DIR=$OPTARG ;;
-		m) MKINSTALLDIRS_EXEC=$OPTARG ;;
-		x) INSTALL_DATA_EXEC=$OPTARG ;;
-	esac
-done
-
-shift `expr $OPTIND - 1`
-
-if test "x$INSTALL" = "xyes" -a "x$UNINSTALL" = "xyes"; then
-	echo "Cannot pass both -i and -u"
-	exit 1
-elif test "x$INSTALL" = "x" -a "x$UNINSTALL" = "x"; then
-	echo "Must path either -i or -u"
-	exit 1
-fi
-
-if test -z "$THEME_NAME"; then
-	echo "Theme name required (-t hicolor)"
-	exit 1
-fi
-
-if test -z "$INSTALL_BASE_DIR"; then
-	echo "Base theme directory required [-d \$(hicolordir)]"
-	exit 1
-fi
-
-if test ! -x `echo "$MKINSTALLDIRS_EXEC" | cut -f1 -d' '`; then
-	echo "Cannot find '$MKINSTALLDIRS_EXEC'; You probably want to pass -m \$(mkinstalldirs)"
-	exit 1
-fi
-
-if test ! -x `echo "$INSTALL_DATA_EXEC" | cut -f1 -d' '`; then
-	echo "Cannot find '$INSTALL_DATA_EXEC'; You probably want to pass -x \$(INSTALL_DATA)"
-	exit 1
-fi
-
-if test -z "$SRC_DIR"; then
-	SRC_DIR=.
-fi
-
-for icon in $@; do
-	size=`echo $icon | sed -n 's/.*-\([0-9]*\).*/\1/p'`
-	category=`echo $icon | cut -d, -f1`
-	build_name=`echo $icon | cut -d, -f2`
-	install_name=`echo $build_name | sed 's/-[0-9]\+//g'`
-	install_name=`basename $install_name`
-
-	if test -z $size; then 
-		size=scalable;
-	else
-		size=${size}x${size};
-	fi
-	
-	install_dir=${INSTALL_DEST_DIR}${INSTALL_BASE_DIR}/$size/$category
-	install_path=$install_dir/$install_name
-	
-	if test "x$INSTALL" = "xyes"; then
-		echo "Installing $size $install_name into $THEME_NAME icon theme"
-		
-		$MKINSTALLDIRS_EXEC $install_dir || {
-			echo "Failed to create directory $install_dir"
-			exit 1
-		}
-		
-		$INSTALL_DATA_EXEC $SRC_DIR/$build_name $install_path || {
-			echo "Failed to install $SRC_DIR/$build_name into $install_path"
-			exit 1
-		}
-
-		if test ! -e $install_path; then
-			echo "Failed to install $SRC_DIR/$build_name into $install_path"
-			exit 1
-		fi
-	else
-		if test -e $install_path; then
-			echo "Removing $size $install_name from $THEME_NAME icon theme"
-
-			rm $install_path || { 
-				echo "Failed to remove $install_path"
-				exit 1
-			}
-		fi
-	fi
-done
-
-if test "x$INSTALL" = "xyes"; then
-	gtk_update_icon_cache_bin="`(which gtk-update-icon-cache || echo /opt/gnome/bin/gtk-update-icon-cache)2>/dev/null`"
-	gtk_update_icon_cache_bin="${GTK_UPDATE_ICON_CACHE_BIN:-$gtk_update_icon_cache_bin}"
-
-	gtk_update_icon_cache="$gtk_update_icon_cache_bin -f -t $INSTALL_BASE_DIR"
-
-	if test -z "$INSTALL_DEST_DIR"; then 
-		if test -x $gtk_update_icon_cache_bin; then 
-			echo "Updating GTK icon cache"
-			$gtk_update_icon_cache
-		else
-			echo "*** Icon cache not updated. Could not execute $gtk_update_icon_cache_bin"
-		fi
-	else
-		echo "*** Icon cache not updated. After install, run this:"
-		echo "***   $gtk_update_icon_cache"
-	fi
-fi
-
diff --git a/libgeda/include/Makefile.am b/libgeda/include/Makefile.am
index 8aab65b..a8bfbef 100644
--- a/libgeda/include/Makefile.am
+++ b/libgeda/include/Makefile.am
@@ -22,6 +22,6 @@ noinst_HEADERS = \
 
 MOSTLYCLEANFILES = *.log core FILE *~
 CLEANFILES = *.log core FILE *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
 
diff --git a/libgeda/include/gettext_priv.h b/libgeda/include/gettext_priv.h
index 54ed05b..5a3876e 100644
--- a/libgeda/include/gettext_priv.h
+++ b/libgeda/include/gettext_priv.h
@@ -66,6 +66,6 @@
    initializer for static 'char[]' or 'const char[]' variables.  */
 #define gettext_noop(String) String
 
-#define _(String) dgettext(GETTEXT_PACKAGE, String)
+#define _(String) dgettext(LIBGEDA_GETTEXT_DOMAIN, String)
 
 #endif /* _LIBGETTEXT_H */
diff --git a/libgeda/lib/Makefile.am b/libgeda/lib/Makefile.am
index 5a40a8e..c3f2b84 100644
--- a/libgeda/lib/Makefile.am
+++ b/libgeda/lib/Makefile.am
@@ -1,5 +1,5 @@
 
-rcdatadir = @GEDARCDIR@
+rcdatadir = $(GEDARCDIR)
 dist_rcdata_DATA = system-gafrc print-colormap-lightbg print-colormap-darkbg
 
 MOSTLYCLEANFILES = *.log *~
diff --git a/libgeda/m4/geda-desktop-i18n.m4 b/libgeda/m4/geda-desktop-i18n.m4
deleted file mode 100644
index 5b8af4e..0000000
--- a/libgeda/m4/geda-desktop-i18n.m4
+++ /dev/null
@@ -1,78 +0,0 @@
-# geda-desktop-i18n.m4                                  -*-Autoconf-*-
-# serial 1
-
-dnl Carry out configuration tasks needed by desktop-i18n tool
-dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-AC_DEFUN([AX_DESKTOP_I18N],
-[
-  AC_PREREQ([2.60])dnl
-  AC_REQUIRE([AM_NLS])dnl
-  AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  dnl Complain if desktop-i18n is missing
-  AC_REQUIRE_AUX_FILE([desktop-i18n])
-
-  # We need to check that GNU gettext is available
-  AM_PATH_PROG_WITH_TEST([GETTEXT], [gettext],
-    [$ac_dir/$ac_word --version | grep GNU > /dev/null], :)
-  if test "x$GETTEXT" = x; then
-    AC_MSG_ERROR([The GNU gettext program could not be found. Please ensure that GNU
-gettext is correctly installed, and rerun configure.])
-  fi
-  AC_SUBST([GETTEXT])
-
-  # How should desktop-i18n be run?
-  DESKTOP_I18N_SCRIPT="$am_aux_dir/desktop-i18n"
-  if test "X$GETTEXT" != "Xgettext"; then
-    DESKTOP_I18N="\${SHELL} $DESKTOP_I18N_SCRIPT"
-  else
-    DESKTOP_I18N="GETTEXT=\${GETTEXT} \${SHELL} $DESKTOP_I18N_SCRIPT"
-  fi
-  AC_SUBST([DESKTOP_I18N_SCRIPT])
-  AC_SUBST([DESKTOP_I18N])
-
-  # We have a private directory to temporarily install locale data
-  # into.
-  DESKTOP_I18N_LOCALE_DIR='$(top_builddir)/.desktop-i18n'
-  AC_SUBST([DESKTOP_I18N_LOCALE_DIR])
-
-  # Substitute our own evil, corrupted version of xgettext.
-  # Mwahahahaha!
-  XGETTEXT="$DESKTOP_I18N --extract --xgettext=$XGETTEXT --"
-
-  # Define some rules for substitution into Makefiles
-  DESKTOP_I18N_CREATE='$(DESKTOP_I18N) --create --gettext=$(GETTEXT) --domain=$(DOMAIN) \
-    --localedir=$(DESKTOP_I18N_LOCALE_DIR)/share/locale $(DESKTOP_I18N_LANGS)'
-  DESKTOP_I18N_LANGS_RULE='DESKTOP_I18N_LANGS = $(addprefix --lang=,$(shell cat $(DESKTOP_I18N_LOCALE_DIR)/$(DOMAIN).LINGUAS))'
-  DESKTOP_I18N_DESKTOP_RULE='%.desktop: %.desktop.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-  DESKTOP_I18N_XML_RULE='%.xml: %.xml.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
-
-  AC_SUBST([DESKTOP_I18N_CREATE])
-  _IT_SUBST([DESKTOP_I18N_LANGS_RULE])
-  _IT_SUBST([DESKTOP_I18N_DESKTOP_RULE])
-  _IT_SUBST([DESKTOP_I18N_XML_RULE])
-])dnl AX_DESKTOP_I18N
-
-# _IT_SUBST(VARIABLE)
-# -------------------
-# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
-# Stolen from intltool.m4 (GPL v2)
-AC_DEFUN([_IT_SUBST],
-[
-AC_SUBST([$1])
-m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
-])dnl _IT_SUBST
diff --git a/libgeda/po/Makevars b/libgeda/po/Makevars
index e9e8470..52d8132 100644
--- a/libgeda/po/Makevars
+++ b/libgeda/po/Makevars
@@ -11,8 +11,8 @@
 include domain.mak
 
 # These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
+subdir = libgeda/po
+top_builddir = ../..
 
 # These options get passed to xgettext.
 XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
diff --git a/libgeda/po/POTFILES.in b/libgeda/po/POTFILES.in
index 1cdd0ce..41a2a2b 100644
--- a/libgeda/po/POTFILES.in
+++ b/libgeda/po/POTFILES.in
@@ -1,32 +1,32 @@
-data/libgeda.xml.in
-data/x-geda-gsch2pcb-project.desktop.in
-data/x-geda-schematic.desktop.in
-data/x-geda-symbol.desktop.in
+libgeda/data/libgeda.xml.in
+libgeda/data/x-geda-gsch2pcb-project.desktop.in
+libgeda/data/x-geda-schematic.desktop.in
+libgeda/data/x-geda-symbol.desktop.in
 
-src/a_basic.c
-src/f_basic.c
-src/f_print.c
-src/g_basic.c
-src/g_rc.c
-src/o_arc_basic.c
-src/o_attrib.c
-src/o_basic.c
-src/o_box_basic.c
-src/o_bus_basic.c
-src/o_circle_basic.c
-src/o_complex_basic.c
-src/o_embed.c
-src/o_line_basic.c
-src/o_net_basic.c
-src/o_path_basic.c
-src/o_picture.c
-src/o_pin_basic.c
-src/o_text_basic.c
-src/s_clib.c
-src/s_color.c
-src/s_hierarchy.c
-src/s_page.c
-src/s_slib.c
+libgeda/src/a_basic.c
+libgeda/src/f_basic.c
+libgeda/src/f_print.c
+libgeda/src/g_basic.c
+libgeda/src/g_rc.c
+libgeda/src/o_arc_basic.c
+libgeda/src/o_attrib.c
+libgeda/src/o_basic.c
+libgeda/src/o_box_basic.c
+libgeda/src/o_bus_basic.c
+libgeda/src/o_circle_basic.c
+libgeda/src/o_complex_basic.c
+libgeda/src/o_embed.c
+libgeda/src/o_line_basic.c
+libgeda/src/o_net_basic.c
+libgeda/src/o_path_basic.c
+libgeda/src/o_picture.c
+libgeda/src/o_pin_basic.c
+libgeda/src/o_text_basic.c
+libgeda/src/s_clib.c
+libgeda/src/s_color.c
+libgeda/src/s_hierarchy.c
+libgeda/src/s_page.c
+libgeda/src/s_slib.c
 
 intl/plural.c
 
diff --git a/libgeda/po/de.po b/libgeda/po/de.po
index f46030e..904e55f 100644
--- a/libgeda/po/de.po
+++ b/libgeda/po/de.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:49+0100\n"
+"POT-Creation-Date: 2009-08-07 22:55+0100\n"
 "PO-Revision-Date: 2008-12-21 12:20+0100\n"
 "Last-Translator: Werner Hoch <werner.ho@xxxxxx>\n"
 "Language-Team: deutsch <de@xxxxxx>\n"
@@ -17,41 +17,41 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: data/libgeda.xml.in.h:3
+#: libgeda/data/libgeda.xml.in.h:3
 msgid "gEDA circuit schematic"
 msgstr "gEDA Schaltplan"
 
-#: data/libgeda.xml.in.h:4
+#: libgeda/data/libgeda.xml.in.h:4
 msgid "gEDA schematic symbol"
 msgstr "gEDA Schaltplansymbol"
 
-#: data/libgeda.xml.in.h:5
+#: libgeda/data/libgeda.xml.in.h:5
 msgid "gEDA gsch2pcb project"
 msgstr "gEDA gsch2pcb Projekt"
 
-#: data/x-geda-gsch2pcb-project.desktop.in.h:3
+#: libgeda/data/x-geda-gsch2pcb-project.desktop.in.h:3
 msgid "gEDA Gsch2pcb Project"
 msgstr "gEDA Gsch2pcb Projekt"
 
-#: data/x-geda-schematic.desktop.in.h:3
+#: libgeda/data/x-geda-schematic.desktop.in.h:3
 msgid "gEDA Circuit Schematic"
 msgstr "gEDA Schaltplan"
 
-#: data/x-geda-symbol.desktop.in.h:3
+#: libgeda/data/x-geda-symbol.desktop.in.h:3
 msgid "gEDA Schematic Symbol"
 msgstr "gEDA Schaltplansymbol"
 
-#: src/a_basic.c:185
+#: libgeda/src/a_basic.c:181
 #, c-format
 msgid "o_save_objects: object %p has unknown type '%c'\n"
 msgstr "o_save_objects: Das Objekt %p hat eine unbekannte Typangabe '%c'\n"
 
-#: src/a_basic.c:235
+#: libgeda/src/a_basic.c:231
 #, c-format
 msgid "o_save: Could not open [%s]\n"
 msgstr "o_save: Konnte Datei [%s] nicht öffnen\n"
 
-#: src/a_basic.c:440
+#: libgeda/src/a_basic.c:436
 #, c-format
 msgid ""
 "Read unexpected embedded symbol start marker in [%s] :\n"
@@ -62,7 +62,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:469
+#: libgeda/src/a_basic.c:465
 #, c-format
 msgid ""
 "Read unexpected embedded symbol end marker in [%s] :\n"
@@ -73,7 +73,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:498
+#: libgeda/src/a_basic.c:494
 #, c-format
 msgid ""
 "Read an old format sym/sch file!\n"
@@ -84,7 +84,7 @@ msgstr ""
 "Bitte aktualisiere die Datei mit g[sym|sch]update:\n"
 "[%s]\n"
 
-#: src/a_basic.c:504
+#: libgeda/src/a_basic.c:500
 #, c-format
 msgid ""
 "Read garbage in [%s] :\n"
@@ -95,17 +95,17 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/f_basic.c:123 src/f_basic.c:136
+#: libgeda/src/f_basic.c:123 libgeda/src/f_basic.c:136
 #, c-format
 msgid "Failed to stat [%s]: %s"
 msgstr "Konnte Dateiinformation nicht ermitteln [%s]: %s"
 
-#: src/f_basic.c:219
+#: libgeda/src/f_basic.c:219
 #, c-format
 msgid "Cannot find file %s: %s"
 msgstr "Konnte Datei nicht finden %s: %s"
 
-#: src/f_basic.c:257
+#: libgeda/src/f_basic.c:257
 #, c-format
 msgid ""
 "\n"
@@ -118,13 +118,13 @@ msgstr ""
 "  %s.\n"
 "\n"
 
-#: src/f_basic.c:259
+#: libgeda/src/f_basic.c:259
 msgid "I could not guess if it is newer, so you have to do it manually.\n"
 msgstr ""
 "Konnte nicht feststellen ob die Backupdatei neuer ist oder nicht. Dies muss "
 "nun manuell durchgeführt werden.\n"
 
-#: src/f_basic.c:261
+#: libgeda/src/f_basic.c:261
 msgid ""
 "The backup copy is newer than the schematic, so it seems you should load it "
 "instead of the original file.\n"
@@ -132,7 +132,7 @@ msgstr ""
 "Die Backupdatei ist neuer als die des Schaltplanes. Es sollte eventuell das "
 "Backup anstatt der originalen Datei geladen werden.\n"
 
-#: src/f_basic.c:263
+#: libgeda/src/f_basic.c:263
 msgid ""
 "Gschem usually makes backup copies automatically, and this situation happens "
 "when it crashed or it was forced to exit abruptly.\n"
@@ -140,7 +140,7 @@ msgstr ""
 "Gschem erstellt automatisch Backupdateien. Stürzt gschem ab oder wird es "
 "absichtlich getötet, so ergibt sich diese Situation.\n"
 
-#: src/f_basic.c:266
+#: libgeda/src/f_basic.c:266
 msgid ""
 "\n"
 "Run gschem and correct the situation.\n"
@@ -150,145 +150,145 @@ msgstr ""
 "Starte gschem und korrigiere diesen Zustand.\n"
 "\n"
 
-#: src/f_basic.c:375
+#: libgeda/src/f_basic.c:375
 #, c-format
 msgid "Can't get the real filename of %s."
 msgstr "Konnte den wahren Dateinamen von %s nicht ermitteln."
 
-#: src/f_basic.c:395
+#: libgeda/src/f_basic.c:395
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "Konnte die Rechte der alten Backupdatei [%s] nicht auf lesen+schreiben "
 "setzen\n"
 
-#: src/f_basic.c:401
+#: libgeda/src/f_basic.c:401
 #, c-format
 msgid "Can't save backup file: %s."
 msgstr "Konnte Backupdatei nicht speichern: %s."
 
-#: src/f_basic.c:411
+#: libgeda/src/f_basic.c:411
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Konnte die Rechte der Backupdatei [%s] nicht auf nurlesend setzen\n"
 
-#: src/f_basic.c:700
+#: libgeda/src/f_basic.c:700
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/f_print.c:117
+#: libgeda/src/f_print.c:118
 msgid "Unable to get time of day in f_print_header()\n"
 msgstr "f_print_header(): Konnte die aktuelle Zeit nicht ermitteln\n"
 
-#: src/f_print.c:159
+#: libgeda/src/f_print.c:160
 #, c-format
 msgid "Unable to open the prolog file `%s' for reading in f_print_header()\n"
 msgstr "f_print_header(): Konnte die Prologdatei '%s' nicht öffnen.\n"
 
-#: src/f_print.c:176
+#: libgeda/src/f_print.c:177
 #, c-format
 msgid "Error during reading of the prolog file `%s' in f_print_header()\n"
 msgstr "f_print_header(): Fehler beim Lesen der Prologdatei '%s'\n"
 
-#: src/f_print.c:182
+#: libgeda/src/f_print.c:183
 msgid ""
 "Error during writing of the output postscript file in f_print_header()\n"
 msgstr "f_print_header(): Fehler beim Schreiben der Postscript-Datei.\n"
 
-#: src/f_print.c:195
+#: libgeda/src/f_print.c:196
 msgid "Giving up on printing\n"
 msgstr "Gebe das Ausdrucken auf\n"
 
-#: src/f_print.c:390
+#: libgeda/src/f_print.c:391
 #, c-format
 msgid "Could not open [%s] for printing\n"
 msgstr "Konnte die Datei [%s] nicht zum Drucken öffnen\n"
 
-#: src/f_print.c:423
+#: libgeda/src/f_print.c:424
 #, c-format
 msgid "Could not execute command [%s] for printing\n"
 msgstr "Konnte den Befehl [%s] zum Drucken nicht ausführen\n"
 
-#: src/f_print.c:698
+#: libgeda/src/f_print.c:699
 msgid "Too many UTF-8 characters, cannot print\n"
 msgstr "Zu viele UTF-8 Zeichen. Es kann nicht gedruckt werden\n"
 
-#: src/g_basic.c:101
+#: libgeda/src/g_basic.c:101
 #, c-format
 msgid "%s:%i:%i: %s\n"
 msgstr "%s:%i:%i: %s\n"
 
-#: src/g_basic.c:108
+#: libgeda/src/g_basic.c:108
 #, c-format
 msgid "Unknown file: %s\n"
 msgstr "Unbekannte Datei: %s\n"
 
-#: src/g_basic.c:114
+#: libgeda/src/g_basic.c:114
 #, c-format
 msgid "Evaluation failed: %s\n"
 msgstr "Ausführung gescheitert: %s\n"
 
-#: src/g_basic.c:115
+#: libgeda/src/g_basic.c:115
 msgid "Enable debugging for more detailed information\n"
 msgstr "Aktiviere die Debugausgabe für genaure Informationen\n"
 
-#: src/g_basic.c:258
+#: libgeda/src/g_basic.c:258
 #, c-format
 msgid "Could not find [%s] for interpretation\n"
 msgstr "Konnte [%s] für die Auswertung nicht finden\n"
 
-#: src/g_rc.c:136
+#: libgeda/src/g_rc.c:136
 #, c-format
 msgid "RC file [%s] already read in.\n"
 msgstr "Konfigurationsdatei [%s] wurde bereits gelesen.\n"
 
-#: src/g_rc.c:181
+#: libgeda/src/g_rc.c:181
 #, fuzzy, c-format
 msgid "Read system config file [%%s]\n"
 msgstr "Lese die Systemdatei %s [%%s]\n"
 
-#: src/g_rc.c:182
+#: libgeda/src/g_rc.c:182
 #, fuzzy, c-format
 msgid "Did not find required system config file [%%s]\n"
 msgstr "Konnte die erforderliche Systemdatei %s nicht finden [%%s]\n"
 
-#: src/g_rc.c:216
+#: libgeda/src/g_rc.c:216
 #, fuzzy, c-format
 msgid "Read user config file [%%s]\n"
 msgstr "Lese vorgegebene %s Datei [%%s]\n"
 
-#: src/g_rc.c:217
+#: libgeda/src/g_rc.c:217
 #, fuzzy, c-format
 msgid "Did not find optional user config file [%%s]\n"
 msgstr "Konnte die optionale lokale %s-Datei [%%s] nicht finden\n"
 
-#: src/g_rc.c:248
+#: libgeda/src/g_rc.c:248
 #, fuzzy, c-format
 msgid "Read local config file [%%s]\n"
 msgstr "Lese die lokale %s-Datei [%%s]\n"
 
-#: src/g_rc.c:249
+#: libgeda/src/g_rc.c:249
 #, fuzzy, c-format
 msgid "Did not find optional local config file [%%s]\n"
 msgstr "Konnte die optionale lokale %s-Datei [%%s] nicht finden\n"
 
-#: src/g_rc.c:286
+#: libgeda/src/g_rc.c:286
 #, c-format
 msgid "Read specified %s file [%%s]\n"
 msgstr "Lese vorgegebene %s Datei [%%s]\n"
 
-#: src/g_rc.c:288
+#: libgeda/src/g_rc.c:288
 #, c-format
 msgid "Did not find specified %s file [%%s]\n"
 msgstr "Konnte die angegebene %s-Datei [%%s] nicht finden\n"
 
-#: src/g_rc.c:338
+#: libgeda/src/g_rc.c:338
 #, c-format
 msgid "Could not find any %s file!\n"
 msgstr "Konnte keine %s-Dateien finden!\n"
 
-#: src/g_rc.c:984
+#: libgeda/src/g_rc.c:984
 msgid ""
 "WARNING: using a string for 'always-promote-attributes' is deprecated. Use a "
 "list of strings instead\n"
@@ -297,88 +297,92 @@ msgstr ""
 "attributes' ist veraltet. Es sollte statdessen eine Liste von Strings "
 "verwendet werden.\n"
 
-#: src/o_arc_basic.c:282
+#: libgeda/src/o_arc_basic.c:275
 #, c-format
 msgid "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"
 msgstr "Kreisbogen mit Radius 0 entdeckt [%c %d, %d, %d, %d, %d, %d ]\n"
 
-#: src/o_arc_basic.c:287 src/o_box_basic.c:301 src/o_bus_basic.c:188
-#: src/o_circle_basic.c:293 src/o_line_basic.c:269 src/o_net_basic.c:180
-#: src/o_path_basic.c:199 src/o_pin_basic.c:193 src/o_text_basic.c:1155
+#: libgeda/src/o_arc_basic.c:280 libgeda/src/o_box_basic.c:294
+#: libgeda/src/o_bus_basic.c:188 libgeda/src/o_circle_basic.c:286
+#: libgeda/src/o_line_basic.c:262 libgeda/src/o_net_basic.c:180
+#: libgeda/src/o_path_basic.c:192 libgeda/src/o_pin_basic.c:193
+#: libgeda/src/o_text_basic.c:1203
 #, c-format
 msgid "Found an invalid color [ %s ]\n"
 msgstr "Fehlerhafte Farbangabe entdeckt [%s]\n"
 
-#: src/o_arc_basic.c:288 src/o_box_basic.c:302 src/o_bus_basic.c:189
-#: src/o_circle_basic.c:294 src/o_line_basic.c:270 src/o_net_basic.c:181
-#: src/o_path_basic.c:200 src/o_pin_basic.c:194 src/o_text_basic.c:1156
+#: libgeda/src/o_arc_basic.c:281 libgeda/src/o_box_basic.c:295
+#: libgeda/src/o_bus_basic.c:189 libgeda/src/o_circle_basic.c:287
+#: libgeda/src/o_line_basic.c:263 libgeda/src/o_net_basic.c:181
+#: libgeda/src/o_path_basic.c:193 libgeda/src/o_pin_basic.c:194
+#: libgeda/src/o_text_basic.c:1204
 #, fuzzy
 msgid "Setting color to default color\n"
 msgstr "Verwende die Farbe WEISS\n"
 
-#: src/o_attrib.c:146
+#: libgeda/src/o_attrib.c:123
 msgid "Attempt to attach non text item as an attribute!\n"
 msgstr "Es wurde versucht eine Attribut anzubringen, welches kein Text ist!\n"
 
-#: src/o_attrib.c:151
+#: libgeda/src/o_attrib.c:128
 #, c-format
 msgid "Attempt to attach attribute [%s] to more than one object\n"
 msgstr ""
 "Es wurde versucht ein Attribute [%s] an mehr als ein Objekt anzubringen\n"
 
-#: src/o_attrib.c:763
+#: libgeda/src/o_attrib.c:740
 msgid "Did not find slotdef=#:#,#,#... attribute\n"
 msgstr "Es wurde kein slotdef=#:#,#,#... Attribut gefunden\n"
 
-#: src/o_attrib.c:769
+#: libgeda/src/o_attrib.c:746
 msgid "Improper slotdef syntax: missing \":\".\n"
 msgstr "Fehlerhafte slotdef syntax: \":\" fehlt.\n"
 
-#: src/o_attrib.c:784
+#: libgeda/src/o_attrib.c:761
 msgid "Did not find proper slotdef=#:#,#,#... attribute\n"
 msgstr "Kein korrektes Attribut slotdef=#:#,#,#... gefunden\n"
 
-#: src/o_attrib.c:814
+#: libgeda/src/o_attrib.c:791
 msgid "component missing pinseq= attribute\n"
 msgstr "pinseq= Attribut fehlt.\n"
 
-#: src/o_basic.c:199 src/o_basic.c:211
+#: libgeda/src/o_basic.c:199 libgeda/src/o_basic.c:211
 msgid "Invalid space specified, setting to 100\n"
 msgstr "Fehlerhafte Abstandsangabe, verwende 100\n"
 
-#: src/o_basic.c:207
+#: libgeda/src/o_basic.c:207
 msgid "Invalid length specified, setting to 100\n"
 msgstr "Fehlerhafte Längenangabe, verwende 100\n"
 
-#: src/o_box_basic.c:296
+#: libgeda/src/o_box_basic.c:289
 #, c-format
 msgid "Found a zero width/height box [ %c %d %d %d %d %d ]\n"
 msgstr "Rechteck mit der Kantenlänge 0 entdeckt [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:179
+#: libgeda/src/o_bus_basic.c:179
 #, c-format
 msgid "Found a zero length bus [ %c %d %d %d %d %d ]\n"
 msgstr "Bus mit der Länge 0 entdeckt [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:194
+#: libgeda/src/o_bus_basic.c:194
 #, c-format
 msgid "Found an invalid bus ripper direction [ %s ]\n"
 msgstr "Fehlerhafte Richtungsangabe [%s] bei einem Busanschluss entdeckt\n"
 
-#: src/o_bus_basic.c:195
+#: libgeda/src/o_bus_basic.c:195
 msgid "Resetting direction to neutral (no direction)\n"
 msgstr "Setze die Richtung auf neutral (keine Richtung)\n"
 
-#: src/o_circle_basic.c:204
+#: libgeda/src/o_circle_basic.c:197
 msgid "Null radius circles are not allowed\n"
 msgstr "Kreise mit dem Radius 0 sind nicht erlaubt\n"
 
-#: src/o_circle_basic.c:287
+#: libgeda/src/o_circle_basic.c:280
 #, c-format
 msgid "Found a zero radius circle [ %c %d %d %d %d ]\n"
 msgstr "Kreis mit dem Radius 0 entdeckt [ %c %d %d %d %d ]\n"
 
-#: src/o_complex_basic.c:457
+#: libgeda/src/o_complex_basic.c:457
 #, c-format
 msgid ""
 "Component not found:\n"
@@ -387,13 +391,13 @@ msgstr ""
 "Bauteil wurde nicht gefunden:\n"
 " %s"
 
-#: src/o_complex_basic.c:671
+#: libgeda/src/o_complex_basic.c:671
 #, c-format
 msgid "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"
 msgstr ""
 "Bauteil mit fehlerhafter Rotationsangabe entdeckt [ %c %d %d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:683
+#: libgeda/src/o_complex_basic.c:683
 #, c-format
 msgid ""
 "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"
@@ -401,7 +405,7 @@ msgstr ""
 "Bauteil mit fehlerhafter Spiegelungsangabe entdeckt [ %c %d %d %d %d %d %"
 "s ]\n"
 
-#: src/o_complex_basic.c:1307
+#: libgeda/src/o_complex_basic.c:1027
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -411,7 +415,7 @@ msgstr ""
 "s':\n"
 "\tKonnte das Attribut symversion=%s nicht zerlegen\n"
 
-#: src/o_complex_basic.c:1311
+#: libgeda/src/o_complex_basic.c:1031
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -421,7 +425,7 @@ msgstr ""
 "s':\n"
 "\tKonnte das Attribut symversion= nicht zerlegen\n"
 
-#: src/o_complex_basic.c:1327
+#: libgeda/src/o_complex_basic.c:1047
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -431,7 +435,7 @@ msgstr ""
 "s':\n"
 "\tKonnte das angehängte Attribut symversion=%s nicht zerlegen\n"
 
-#: src/o_complex_basic.c:1352
+#: libgeda/src/o_complex_basic.c:1072
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -443,7 +447,7 @@ msgstr ""
 "\tsymversion=%s existiert bei dem Symbol im Schaltplan, fehlt aber innerhalb "
 "der Schaltsymbol-Datei\n"
 
-#: src/o_complex_basic.c:1366
+#: libgeda/src/o_complex_basic.c:1086
 #, c-format
 msgid ""
 "WARNING: Symbol version mismatch on refdes %s (%s):\n"
@@ -453,20 +457,20 @@ msgstr ""
 "s):\n"
 "\tDas Symbol in der Bibliothek ist neuer als das Symbol im Schaltplan\n"
 
-#: src/o_complex_basic.c:1394
+#: libgeda/src/o_complex_basic.c:1114
 #, c-format
 msgid "\tMAJOR VERSION CHANGE (file %.3f, instantiated %.3f, %s)!\n"
 msgstr ""
 "\tGROSSE VERSIONSÃ?NDERUNG (Symboldatei %.3f, Symbol im Schaltplan %.3f, %"
 "s)!\n"
 
-#: src/o_complex_basic.c:1412
+#: libgeda/src/o_complex_basic.c:1132
 #, c-format
 msgid "\tMinor version change (file %.3f, instantiated %.3f)\n"
 msgstr ""
 "\tKleine Versionsänderung (Symboldatei %.3f, Symbol im Schaltplan %.3f)!\n"
 
-#: src/o_complex_basic.c:1423
+#: libgeda/src/o_complex_basic.c:1143
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -475,12 +479,12 @@ msgstr ""
 "ACHTUNG: Seltsame Versionskonstellation bei dem Symbol mit der Referenz %s:\n"
 "\tDie Symbolversion im Schaltplan ist aktueller als in der Symbolbibliothek\n"
 
-#: src/o_embed.c:58
+#: libgeda/src/o_embed.c:56
 #, c-format
 msgid "Component [%s] has been embedded\n"
 msgstr "Bauteil [%s] wurde eingebettet\n"
 
-#: src/o_embed.c:98
+#: libgeda/src/o_embed.c:96
 #, c-format
 msgid ""
 "Could not find component [%s], while trying to unembed. Component is still "
@@ -489,100 +493,103 @@ msgstr ""
 "Konnte Symbol [%s] nicht finden um es auszubetten. Das Bauteil bleibt "
 "eingebettet\n"
 
-#: src/o_embed.c:106
+#: libgeda/src/o_embed.c:104
 #, c-format
 msgid "Component [%s] has been successfully unembedded\n"
 msgstr "Das Bauteil [%s] wurde erfolgreich ausgebettet\n"
 
-#: src/o_line_basic.c:264
+#: libgeda/src/o_line_basic.c:257
 #, c-format
 msgid "Found a zero length line [ %c %d %d %d %d %d ]\n"
 msgstr "Linie mit der Länge 0 entdeckt [ %c %d %d %d %d %d ]\n"
 
-#: src/o_net_basic.c:170
+#: libgeda/src/o_net_basic.c:170
 #, c-format
 msgid "Found a zero length net [ %c %d %d %d %d %d ]\n"
 msgstr "Netz mit der Länge 0 entdeckt [ %c %d %d %d %d %d ]\n"
 
-#: src/o_picture.c:80
+#: libgeda/src/o_picture.c:75
 #, c-format
 msgid "Error reading picture definition line: %s.\n"
 msgstr "Fehler beim Lesen der Bildinformation. Zeile: %s.\n"
 
-#: src/o_picture.c:94
+#: libgeda/src/o_picture.c:89
 #, c-format
 msgid "Found a zero width/height picture [ %c %d %d %d %d ]\n"
 msgstr "Bild mit der Seitenlänge 0 entdeckt [ %c %d %d %d %d ]\n"
 
-#: src/o_picture.c:99
+#: libgeda/src/o_picture.c:94
 #, c-format
 msgid "Found a picture with a wrong 'mirrored' parameter: %c.\n"
 msgstr "Bild mit fehlerhaften Spiegelungsparametern entdeckt: %c.\n"
 
-#: src/o_picture.c:101
+#: libgeda/src/o_picture.c:96
 msgid "Setting mirrored to 0\n"
 msgstr "Setze die Spiegelung auf 0\n"
 
-#: src/o_picture.c:106
+#: libgeda/src/o_picture.c:101
 #, c-format
 msgid "Found a picture with a wrong 'embedded' parameter: %c.\n"
 msgstr "Bild mit fehlerhaften Einbettungsparametern entdeckt. %c.\n"
 
-#: src/o_picture.c:108
+#: libgeda/src/o_picture.c:103
 msgid "Setting embedded to 0\n"
 msgstr "Setze die Einbettung auf 0\n"
 
-#: src/o_picture.c:120
+#: libgeda/src/o_picture.c:115
 #, c-format
 msgid "Found an unsupported picture angle [ %d ]\n"
 msgstr "Bild mit fehlerhafter Winkelangabe entdeckt [%d]\n"
 
-#: src/o_picture.c:121 src/o_text_basic.c:1127
+#: libgeda/src/o_picture.c:116 libgeda/src/o_text_basic.c:1175
 msgid "Setting angle to 0\n"
 msgstr "Setze die Winkelangabe auf 0\n"
 
-#: src/o_picture.c:156 src/o_picture.c:167 src/o_picture.c:924
+#: libgeda/src/o_picture.c:151 libgeda/src/o_picture.c:162
+#: libgeda/src/o_picture.c:915
 #, c-format
 msgid "Failed to load image from embedded data [%s]: %s\n"
 msgstr "Fehler beim Laden der Daten eines eingebetteten Bildes [%s]: %s\n"
 
-#: src/o_picture.c:157
+#: libgeda/src/o_picture.c:152
 msgid "Base64 decoding failed."
 msgstr "Base64 Dekodierung fehlgeschlagen."
 
-#: src/o_picture.c:158 src/o_picture.c:169 src/o_picture.c:926
+#: libgeda/src/o_picture.c:153 libgeda/src/o_picture.c:164
+#: libgeda/src/o_picture.c:917
 msgid "Falling back to file loading. Picture unembedded.\n"
 msgstr "Lade das Bild aus der Datei. Das Bild ist ausgebettet.\n"
 
-#: src/o_picture.c:180 src/o_picture.c:912 src/o_picture.c:961
+#: libgeda/src/o_picture.c:175 libgeda/src/o_picture.c:903
+#: libgeda/src/o_picture.c:952
 #, c-format
 msgid "Failed to load image from file [%s]: %s\n"
 msgstr "Das Bild konnte nicht aus der Datei [%s] geladen werden: %s\n"
 
-#: src/o_picture.c:191
+#: libgeda/src/o_picture.c:186
 msgid "Loading warning picture.\n"
 msgstr "Lade das Warnbild.\n"
 
-#: src/o_picture.c:197
+#: libgeda/src/o_picture.c:192
 #, c-format
 msgid "Error loading picture from file: %s.\n"
 msgstr "Fehler beim Laden des Bildes aus der Datei %s.\n"
 
-#: src/o_picture.c:257
+#: libgeda/src/o_picture.c:252
 msgid "ERROR: o_picture_save: unable to encode the picture.\n"
 msgstr "FEHLER: o_picture_save: Kann das Bild nicht kodieren.\n"
 
-#: src/o_picture.c:939
+#: libgeda/src/o_picture.c:930
 #, c-format
 msgid "Picture [%s] has been embedded\n"
 msgstr "Das Bild [%s] wurde eingebettet\n"
 
-#: src/o_picture.c:979
+#: libgeda/src/o_picture.c:970
 #, c-format
 msgid "Picture [%s] has been unembedded\n"
 msgstr "Das Bild [%s] wurde ausgebettet\n"
 
-#: src/o_pin_basic.c:180
+#: libgeda/src/o_pin_basic.c:180
 msgid ""
 "Found a pin which did not have the whichone field set.\n"
 "Verify and correct manually.\n"
@@ -590,77 +597,70 @@ msgstr ""
 "Pin ohne Markierung (whichend) der aktiven Seite entdeckt.\n"
 "Kontrolliere die Markierung und korrigiere ggf. manuell.\n"
 
-#: src/o_pin_basic.c:183
+#: libgeda/src/o_pin_basic.c:183
 #, c-format
 msgid "Found an invalid whichend on a pin (reseting to zero): %d\n"
 msgstr ""
 "Pin mit fehlerafter Markierung (whichend) der aktiven Seite entdeckt. "
 "Verwende 0: %d\n"
 
-#: src/o_pin_basic.c:189
+#: libgeda/src/o_pin_basic.c:189
 #, c-format
 msgid "Found a zero length pin: [ %s ]\n"
 msgstr "Pin mit der Länge 0 entdeckt: [ %s ]\n"
 
-#: src/o_text_basic.c:303
+#: libgeda/src/o_text_basic.c:362
 #, c-format
 msgid "Could not find character '%s' definition.\n"
 msgstr "Konnte die Definition des Zeichens '%s' nicht finden.\n"
 
-#: src/o_text_basic.c:308
-#, c-format
-msgid "Could not load question font char -- check font-directory keyword\n"
-msgstr ""
-"Konnte das angefragte Zeichen nicht laden -- kontrolliere die Einstellung "
-"'font-directory'\n"
-
-#: src/o_text_basic.c:1113
+#: libgeda/src/o_text_basic.c:1161
 #, c-format
 msgid "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Textstring mit der Zeichengrö�e 0 entdeckt [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1125
+#: libgeda/src/o_text_basic.c:1173
 #, c-format
 msgid "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Text mit nicht unterstützer Winkelangabe entdeckt [ %c %d %d %d %d %d %d %d %"
 "d ]\n"
 
-#: src/o_text_basic.c:1147
+#: libgeda/src/o_text_basic.c:1195
 #, c-format
 msgid "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Text mit nicht unterstützer Ausrichtung entdeckt [ %c %d %d %d %d %d %d %d %"
 "d ]\n"
 
-#: src/o_text_basic.c:1149
+#: libgeda/src/o_text_basic.c:1197
 msgid "Setting alignment to LOWER_LEFT\n"
 msgstr "Verwende die Ausrichtung 'Links Unten'\n"
 
-#: src/o_text_basic.c:1238
+#: libgeda/src/o_text_basic.c:1286
 #, c-format
 msgid "Failed to validate utf-8 character in font definition: \"%s\".\n"
 msgstr ""
 "UTF-8 Zeichen konnte in der Zeichensatzdefinition nicht ermittelt werden: \"%"
 "s\".\n"
 
-#: src/s_clib.c:464
+#: libgeda/src/s_clib.c:464
 #, c-format
 msgid "Library command failed [%s]: %s\n"
 msgstr "Bibliotheksbefehl fehlgeschlagen [%s]: %s\n"
 
-#: src/s_clib.c:469
+#: libgeda/src/s_clib.c:469
 #, c-format
 msgid "Library command failed [%s]: Uncaught signal %i.\n"
 msgstr "Bibliotheksbefehl fehlgeschlagen [%s]: Nicht abgefangenes Signal %i.\n"
 
-#: src/s_clib.c:473
+#: libgeda/src/s_clib.c:473
 #, c-format
 msgid "Library command failed [%s]\n"
 msgstr "Bibliotheksbefehl fehlgeschlagen [%s]\n"
 
-#: src/s_clib.c:474
+#: libgeda/src/s_clib.c:474
 #, c-format
 msgid ""
 "Error output was:\n"
@@ -669,35 +669,35 @@ msgstr ""
 "Die Fehlermeldung lautete:\n"
 "%s\n"
 
-#: src/s_clib.c:560
+#: libgeda/src/s_clib.c:560
 #, c-format
 msgid "Library name [%s] already in use.  Using [%s].\n"
 msgstr "Bibliotheksname [%s] wird bereits verwendet. Verwende [%s].\n"
 
-#: src/s_clib.c:597
+#: libgeda/src/s_clib.c:597
 #, c-format
 msgid "Failed to open directory [%s]: %s\n"
 msgstr "Fehler beim Ã?ffnen eines Verzeichnisses [%s]: %s\n"
 
-#: src/s_clib.c:732
+#: libgeda/src/s_clib.c:733
 #, c-format
 msgid "Failed to scan library [%s]: Scheme function returned non-list\n"
 msgstr ""
 "Fehler beim Einlesen der Bibliothek [%s]: Die Scheme-Funktion hat 'non-list' "
 "zurückgegeben\n"
 
-#: src/s_clib.c:740
+#: libgeda/src/s_clib.c:741
 #, c-format
 msgid "Non-string symbol name while scanning library [%s]\n"
 msgstr ""
 "Beim Einlesen der Bibliothek [%s] wurde der Symbolname 'non-string' "
 "zurückgegeben\n"
 
-#: src/s_clib.c:895 src/s_clib.c:942
+#: libgeda/src/s_clib.c:900 libgeda/src/s_clib.c:947
 msgid "Cannot add library: name not specified\n"
 msgstr "Kann die Bibliothek nicht hinzufügen. Der Name fehlt\n"
 
-#: src/s_clib.c:902
+#: libgeda/src/s_clib.c:907
 #, c-format
 msgid ""
 "Cannot add library [%s]: both 'list' and 'get' commands must be specified.\n"
@@ -705,51 +705,51 @@ msgstr ""
 "Kann die Bibliothek [%s] nicht hinzufügen: Beide Befehle ('list' und 'get') "
 "müssen angegeben werden.\n"
 
-#: src/s_clib.c:950
+#: libgeda/src/s_clib.c:955
 #, c-format
 msgid "Cannot add Scheme-library [%s]: callbacks must be closures\n"
 msgstr ""
 "Die Scheme-Bibliothek kann nicht hinzugefügt werden [%s]: Die aufgerufenen "
 "Prozeduren müssen abgeschlossen sein (closures)\n"
 
-#: src/s_clib.c:1077
+#: libgeda/src/s_clib.c:1082
 #, c-format
 msgid "Failed to load symbol from file [%s]: %s\n"
 msgstr "Fehler beim Laden eines Symbols aus der Datei [%s]: %s\n"
 
-#: src/s_clib.c:1135
+#: libgeda/src/s_clib.c:1142
 #, c-format
 msgid "Failed to load symbol data [%s] from source [%s]\n"
 msgstr "Fehler beim Laden der Symboldaten [%s] aus der Quelle [%s]\n"
 
-#: src/s_clib.c:1360
+#: libgeda/src/s_clib.c:1373
 #, c-format
 msgid "Component [%s] was not found in the component library\n"
 msgstr ""
 "Das Bauteil [%s] konnte nicht in der Bauteilbibliothek gefunden werden\n"
 
-#: src/s_clib.c:1366
+#: libgeda/src/s_clib.c:1379
 #, c-format
 msgid "More than one component found with name [%s]\n"
 msgstr "Mehr als ein Bauteil mit dem Namen [%s] gefunden\n"
 
-#: src/s_color.c:206
+#: libgeda/src/s_color.c:206
 msgid "Color index out of range"
 msgstr ""
 
-#: src/s_color.c:261
+#: libgeda/src/s_color.c:261
 msgid "Color map entry must be a two-element list"
 msgstr ""
 
-#: src/s_color.c:269
+#: libgeda/src/s_color.c:269
 msgid "Index in color map entry must be an integer"
 msgstr ""
 
-#: src/s_color.c:295
+#: libgeda/src/s_color.c:295
 msgid "Value in color map entry must be #f or a string"
 msgstr ""
 
-#: src/s_hierarchy.c:90
+#: libgeda/src/s_hierarchy.c:90
 #, c-format
 msgid ""
 "hierarchy loop detected while visiting page:\n"
@@ -758,46 +758,51 @@ msgstr ""
 "Zirkuläre Abhängigkeiten in der Hierarchie entdeckt. Schaltplan:\n"
 "  \"%s\"\n"
 
-#: src/s_hierarchy.c:185
+#: libgeda/src/s_hierarchy.c:185
 msgid "There are no schematics above the current one!\n"
 msgstr "Ã?ber diesem Schaltplan gibt es keinen weiteren!\n"
 
-#: src/s_hierarchy.c:266
+#: libgeda/src/s_hierarchy.c:266
 #, c-format
 msgid "ERROR in s_hierarchy_traverse: schematic not found: %s\n"
 msgstr "ERROR: s_hierarchy_traverse: Schaltplan [%s] wurde nicht gefunden.\n"
 
-#: src/s_page.c:167
+#: libgeda/src/s_page.c:167
 #, c-format
 msgid "s_page_delete: Can't get the real filename of %s."
 msgstr ""
 "s_page_delete: Kann den tatsächlichen Dateinamen von [%s] nicht ermitteln."
 
-#: src/s_page.c:178
+#: libgeda/src/s_page.c:178
 #, c-format
 msgid "s_page_delete: Unable to delete backup file %s."
 msgstr "s_page_delete: Kann die Backupdatei [%s] nicht löschen."
 
-#: src/s_page.c:380
+#: libgeda/src/s_page.c:380
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Gespeichert [%s]\n"
 
-#: src/s_page.c:386
+#: libgeda/src/s_page.c:386
 #, c-format
 msgid "Could NOT save [%s]\n"
 msgstr "ACHTUNG: Konnte Datei nicht speichern [%s]\n"
 
-#: src/s_slib.c:181
+#: libgeda/src/s_slib.c:181
 #, c-format
 msgid "Found [%s]\n"
 msgstr "[%s] gefunden\n"
 
-#: src/s_slib.c:191
+#: libgeda/src/s_slib.c:191
 #, c-format
 msgid "Could not find [%s] in any SourceLibrary\n"
 msgstr "Konnte [%s] in keiner Bibliothekenquelle finden\n"
 
+#~ msgid "Could not load question font char -- check font-directory keyword\n"
+#~ msgstr ""
+#~ "Konnte das angefragte Zeichen nicht laden -- kontrolliere die Einstellung "
+#~ "'font-directory'\n"
+
 #~ msgid "Read ~/.gEDA/%s file [%%s]\n"
 #~ msgstr "Lese die ~/.gEDA/%s Datei [%%s]\n"
 
diff --git a/libgeda/po/domain.mak.in b/libgeda/po/domain.mak.in
index 0e45d8b..a5d0e49 100644
--- a/libgeda/po/domain.mak.in
+++ b/libgeda/po/domain.mak.in
@@ -1,3 +1,3 @@
 #                                                       -*-GNUmakefile-*-
 # This is a workaround for buggy logic in the gettext m4 files.
-DOMAIN = @GETTEXT_PACKAGE@
+DOMAIN = @LIBGEDA_GETTEXT_DOMAIN@
diff --git a/libgeda/po/en_GB.po b/libgeda/po/en_GB.po
index ca09e90..c1cc838 100644
--- a/libgeda/po/en_GB.po
+++ b/libgeda/po/en_GB.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libgeda\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:49+0100\n"
+"POT-Creation-Date: 2009-08-07 22:55+0100\n"
 "PO-Revision-Date: 2009-01-02 14:31+0100\n"
 "Last-Translator: Peter Clifton <pcjc2@xxxxxxxxx>\n"
 "Language-Team: geda-dev <geda-dev@xxxxxxxx>\n"
@@ -15,41 +15,41 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/libgeda.xml.in.h:3
+#: libgeda/data/libgeda.xml.in.h:3
 msgid "gEDA circuit schematic"
 msgstr "gEDA circuit schematic"
 
-#: data/libgeda.xml.in.h:4
+#: libgeda/data/libgeda.xml.in.h:4
 msgid "gEDA schematic symbol"
 msgstr "gEDA schematic symbol"
 
-#: data/libgeda.xml.in.h:5
+#: libgeda/data/libgeda.xml.in.h:5
 msgid "gEDA gsch2pcb project"
 msgstr "gEDA gsch2pcb project"
 
-#: data/x-geda-gsch2pcb-project.desktop.in.h:3
+#: libgeda/data/x-geda-gsch2pcb-project.desktop.in.h:3
 msgid "gEDA Gsch2pcb Project"
 msgstr "gEDA Gsch2pcb Project"
 
-#: data/x-geda-schematic.desktop.in.h:3
+#: libgeda/data/x-geda-schematic.desktop.in.h:3
 msgid "gEDA Circuit Schematic"
 msgstr "gEDA Circuit Schematic"
 
-#: data/x-geda-symbol.desktop.in.h:3
+#: libgeda/data/x-geda-symbol.desktop.in.h:3
 msgid "gEDA Schematic Symbol"
 msgstr "gEDA Schematic Symbol"
 
-#: src/a_basic.c:185
+#: libgeda/src/a_basic.c:181
 #, c-format
 msgid "o_save_objects: object %p has unknown type '%c'\n"
 msgstr "o_save_objects: object %p has unknown type '%c'\n"
 
-#: src/a_basic.c:235
+#: libgeda/src/a_basic.c:231
 #, c-format
 msgid "o_save: Could not open [%s]\n"
 msgstr "o_save: Could not open [%s]\n"
 
-#: src/a_basic.c:440
+#: libgeda/src/a_basic.c:436
 #, c-format
 msgid ""
 "Read unexpected embedded symbol start marker in [%s] :\n"
@@ -60,7 +60,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:469
+#: libgeda/src/a_basic.c:465
 #, c-format
 msgid ""
 "Read unexpected embedded symbol end marker in [%s] :\n"
@@ -71,7 +71,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:498
+#: libgeda/src/a_basic.c:494
 #, c-format
 msgid ""
 "Read an old format sym/sch file!\n"
@@ -82,7 +82,7 @@ msgstr ""
 "Please run g[sym|sch]update on:\n"
 "[%s]\n"
 
-#: src/a_basic.c:504
+#: libgeda/src/a_basic.c:500
 #, c-format
 msgid ""
 "Read garbage in [%s] :\n"
@@ -93,17 +93,17 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/f_basic.c:123 src/f_basic.c:136
+#: libgeda/src/f_basic.c:123 libgeda/src/f_basic.c:136
 #, c-format
 msgid "Failed to stat [%s]: %s"
 msgstr "Failed to stat [%s]: %s"
 
-#: src/f_basic.c:219
+#: libgeda/src/f_basic.c:219
 #, c-format
 msgid "Cannot find file %s: %s"
 msgstr "Cannot find file: %s: %s"
 
-#: src/f_basic.c:257
+#: libgeda/src/f_basic.c:257
 #, c-format
 msgid ""
 "\n"
@@ -116,11 +116,11 @@ msgstr ""
 "  %s.\n"
 "\n"
 
-#: src/f_basic.c:259
+#: libgeda/src/f_basic.c:259
 msgid "I could not guess if it is newer, so you have to do it manually.\n"
 msgstr "I could not guess if it is newer, so you have to do it manually.\n"
 
-#: src/f_basic.c:261
+#: libgeda/src/f_basic.c:261
 msgid ""
 "The backup copy is newer than the schematic, so it seems you should load it "
 "instead of the original file.\n"
@@ -128,7 +128,7 @@ msgstr ""
 "The backup copy is newer than the schematic, so it seems you should load it "
 "instead of the original file.\n"
 
-#: src/f_basic.c:263
+#: libgeda/src/f_basic.c:263
 msgid ""
 "Gschem usually makes backup copies automatically, and this situation happens "
 "when it crashed or it was forced to exit abruptly.\n"
@@ -136,7 +136,7 @@ msgstr ""
 "Gschem usually makes backup copies automatically, and this situation happens "
 "when it crashed or it was forced to exit abruptly.\n"
 
-#: src/f_basic.c:266
+#: libgeda/src/f_basic.c:266
 msgid ""
 "\n"
 "Run gschem and correct the situation.\n"
@@ -146,144 +146,144 @@ msgstr ""
 "Run gschem and correct the situation.\n"
 "\n"
 
-#: src/f_basic.c:375
+#: libgeda/src/f_basic.c:375
 #, c-format
 msgid "Can't get the real filename of %s."
 msgstr "Can't get the real filename of %s."
 
-#: src/f_basic.c:395
+#: libgeda/src/f_basic.c:395
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "Could NOT set previous backup file [%s] read-write\n"
 
-#: src/f_basic.c:401
+#: libgeda/src/f_basic.c:401
 #, c-format
 msgid "Can't save backup file: %s."
 msgstr "Can't save backup file: %s."
 
-#: src/f_basic.c:411
+#: libgeda/src/f_basic.c:411
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Could NOT set backup file [%s] readonly\n"
 
-#: src/f_basic.c:700
+#: libgeda/src/f_basic.c:700
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/f_print.c:117
+#: libgeda/src/f_print.c:118
 msgid "Unable to get time of day in f_print_header()\n"
 msgstr "Unable to get time of day in f_print_header()\n"
 
-#: src/f_print.c:159
+#: libgeda/src/f_print.c:160
 #, c-format
 msgid "Unable to open the prolog file `%s' for reading in f_print_header()\n"
 msgstr "Unable to open the prolog file `%s' for reading in f_print_header()\n"
 
-#: src/f_print.c:176
+#: libgeda/src/f_print.c:177
 #, c-format
 msgid "Error during reading of the prolog file `%s' in f_print_header()\n"
 msgstr "Error during reading of the prolog file `%s' in f_print_header()\n"
 
-#: src/f_print.c:182
+#: libgeda/src/f_print.c:183
 msgid ""
 "Error during writing of the output postscript file in f_print_header()\n"
 msgstr ""
 "Error during writing of the output postscript file in f_print_header()\n"
 
-#: src/f_print.c:195
+#: libgeda/src/f_print.c:196
 msgid "Giving up on printing\n"
 msgstr "Giving up on printing\n"
 
-#: src/f_print.c:390
+#: libgeda/src/f_print.c:391
 #, c-format
 msgid "Could not open [%s] for printing\n"
 msgstr "Could not open [%s] for printing\n"
 
-#: src/f_print.c:423
+#: libgeda/src/f_print.c:424
 #, c-format
 msgid "Could not execute command [%s] for printing\n"
 msgstr "Could not execute command [%s] for printing\n"
 
-#: src/f_print.c:698
+#: libgeda/src/f_print.c:699
 msgid "Too many UTF-8 characters, cannot print\n"
 msgstr "Too many UTF-8 characters, cannot print\n"
 
-#: src/g_basic.c:101
+#: libgeda/src/g_basic.c:101
 #, c-format
 msgid "%s:%i:%i: %s\n"
 msgstr "%s:%i:%i: %s\n"
 
-#: src/g_basic.c:108
+#: libgeda/src/g_basic.c:108
 #, c-format
 msgid "Unknown file: %s\n"
 msgstr "Unknown file: %s\n"
 
-#: src/g_basic.c:114
+#: libgeda/src/g_basic.c:114
 #, c-format
 msgid "Evaluation failed: %s\n"
 msgstr "Evaluation failed: %s\n"
 
-#: src/g_basic.c:115
+#: libgeda/src/g_basic.c:115
 msgid "Enable debugging for more detailed information\n"
 msgstr "Enable debugging for more detailed information\n"
 
-#: src/g_basic.c:258
+#: libgeda/src/g_basic.c:258
 #, c-format
 msgid "Could not find [%s] for interpretation\n"
 msgstr "Could not find [%s] for interpretation\n"
 
-#: src/g_rc.c:136
+#: libgeda/src/g_rc.c:136
 #, c-format
 msgid "RC file [%s] already read in.\n"
 msgstr "RC file [%s] already read in.\n"
 
-#: src/g_rc.c:181
+#: libgeda/src/g_rc.c:181
 #, fuzzy, c-format
 msgid "Read system config file [%%s]\n"
 msgstr "Read system-%s file [%%s]\n"
 
-#: src/g_rc.c:182
+#: libgeda/src/g_rc.c:182
 #, fuzzy, c-format
 msgid "Did not find required system config file [%%s]\n"
 msgstr "Did not find required system-%s file [%%s]\n"
 
-#: src/g_rc.c:216
+#: libgeda/src/g_rc.c:216
 #, fuzzy, c-format
 msgid "Read user config file [%%s]\n"
 msgstr "Read specified %s file [%%s]\n"
 
-#: src/g_rc.c:217
+#: libgeda/src/g_rc.c:217
 #, fuzzy, c-format
 msgid "Did not find optional user config file [%%s]\n"
 msgstr "Did not find optional local %s file [%%s]\n"
 
-#: src/g_rc.c:248
+#: libgeda/src/g_rc.c:248
 #, fuzzy, c-format
 msgid "Read local config file [%%s]\n"
 msgstr "Read local %s file [%%s]\n"
 
-#: src/g_rc.c:249
+#: libgeda/src/g_rc.c:249
 #, fuzzy, c-format
 msgid "Did not find optional local config file [%%s]\n"
 msgstr "Did not find optional local %s file [%%s]\n"
 
-#: src/g_rc.c:286
+#: libgeda/src/g_rc.c:286
 #, c-format
 msgid "Read specified %s file [%%s]\n"
 msgstr "Read specified %s file [%%s]\n"
 
-#: src/g_rc.c:288
+#: libgeda/src/g_rc.c:288
 #, c-format
 msgid "Did not find specified %s file [%%s]\n"
 msgstr "Did not find specified %s file [%%s]\n"
 
-#: src/g_rc.c:338
+#: libgeda/src/g_rc.c:338
 #, c-format
 msgid "Could not find any %s file!\n"
 msgstr "Could not find any %s file!\n"
 
-#: src/g_rc.c:984
+#: libgeda/src/g_rc.c:984
 msgid ""
 "WARNING: using a string for 'always-promote-attributes' is deprecated. Use a "
 "list of strings instead\n"
@@ -291,86 +291,90 @@ msgstr ""
 "WARNING: using a string for 'always-promote-attributes' is deprecated. Use a "
 "list of strings instead\n"
 
-#: src/o_arc_basic.c:282
+#: libgeda/src/o_arc_basic.c:275
 #, c-format
 msgid "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"
 msgstr "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"
 
-#: src/o_arc_basic.c:287 src/o_box_basic.c:301 src/o_bus_basic.c:188
-#: src/o_circle_basic.c:293 src/o_line_basic.c:269 src/o_net_basic.c:180
-#: src/o_path_basic.c:199 src/o_pin_basic.c:193 src/o_text_basic.c:1155
+#: libgeda/src/o_arc_basic.c:280 libgeda/src/o_box_basic.c:294
+#: libgeda/src/o_bus_basic.c:188 libgeda/src/o_circle_basic.c:286
+#: libgeda/src/o_line_basic.c:262 libgeda/src/o_net_basic.c:180
+#: libgeda/src/o_path_basic.c:192 libgeda/src/o_pin_basic.c:193
+#: libgeda/src/o_text_basic.c:1203
 #, c-format
 msgid "Found an invalid color [ %s ]\n"
 msgstr "Found an invalid colour [ %s ]\n"
 
-#: src/o_arc_basic.c:288 src/o_box_basic.c:302 src/o_bus_basic.c:189
-#: src/o_circle_basic.c:294 src/o_line_basic.c:270 src/o_net_basic.c:181
-#: src/o_path_basic.c:200 src/o_pin_basic.c:194 src/o_text_basic.c:1156
+#: libgeda/src/o_arc_basic.c:281 libgeda/src/o_box_basic.c:295
+#: libgeda/src/o_bus_basic.c:189 libgeda/src/o_circle_basic.c:287
+#: libgeda/src/o_line_basic.c:263 libgeda/src/o_net_basic.c:181
+#: libgeda/src/o_path_basic.c:193 libgeda/src/o_pin_basic.c:194
+#: libgeda/src/o_text_basic.c:1204
 msgid "Setting color to default color\n"
 msgstr "Setting colour to default colour\n"
 
-#: src/o_attrib.c:146
+#: libgeda/src/o_attrib.c:123
 msgid "Attempt to attach non text item as an attribute!\n"
 msgstr "Attempt to attach non text item as an attribute!\n"
 
-#: src/o_attrib.c:151
+#: libgeda/src/o_attrib.c:128
 #, c-format
 msgid "Attempt to attach attribute [%s] to more than one object\n"
 msgstr "Attempt to attach attribute [%s] to more than one object\n"
 
-#: src/o_attrib.c:763
+#: libgeda/src/o_attrib.c:740
 msgid "Did not find slotdef=#:#,#,#... attribute\n"
 msgstr "Did not find slotdef=#:#,#,#... attribute\n"
 
-#: src/o_attrib.c:769
+#: libgeda/src/o_attrib.c:746
 msgid "Improper slotdef syntax: missing \":\".\n"
 msgstr "Improper slotdef syntax: missing \":\".\n"
 
-#: src/o_attrib.c:784
+#: libgeda/src/o_attrib.c:761
 msgid "Did not find proper slotdef=#:#,#,#... attribute\n"
 msgstr "Did not find proper slotdef=#:#,#,#... attribute\n"
 
-#: src/o_attrib.c:814
+#: libgeda/src/o_attrib.c:791
 msgid "component missing pinseq= attribute\n"
 msgstr "component missing pinseq= attribute\n"
 
-#: src/o_basic.c:199 src/o_basic.c:211
+#: libgeda/src/o_basic.c:199 libgeda/src/o_basic.c:211
 msgid "Invalid space specified, setting to 100\n"
 msgstr "Invalid space specified, setting to 100\n"
 
-#: src/o_basic.c:207
+#: libgeda/src/o_basic.c:207
 msgid "Invalid length specified, setting to 100\n"
 msgstr "Invalid length specified, setting to 100\n"
 
-#: src/o_box_basic.c:296
+#: libgeda/src/o_box_basic.c:289
 #, c-format
 msgid "Found a zero width/height box [ %c %d %d %d %d %d ]\n"
 msgstr "Found a zero width/height box [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:179
+#: libgeda/src/o_bus_basic.c:179
 #, c-format
 msgid "Found a zero length bus [ %c %d %d %d %d %d ]\n"
 msgstr "Found a zero length bus [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:194
+#: libgeda/src/o_bus_basic.c:194
 #, c-format
 msgid "Found an invalid bus ripper direction [ %s ]\n"
 msgstr "Found an invalid bus ripper direction [ %s ]\n"
 
-#: src/o_bus_basic.c:195
+#: libgeda/src/o_bus_basic.c:195
 msgid "Resetting direction to neutral (no direction)\n"
 msgstr "Resetting direction to neutral (no direction)\n"
 
-#: src/o_circle_basic.c:204
+#: libgeda/src/o_circle_basic.c:197
 msgid "Null radius circles are not allowed\n"
 msgstr "Null radius circles are not allowed\n"
 
-#: src/o_circle_basic.c:287
+#: libgeda/src/o_circle_basic.c:280
 #, c-format
 msgid "Found a zero radius circle [ %c %d %d %d %d ]\n"
 msgstr "Found a zero radius circle [ %c %d %d %d %d ]\n"
 
-#: src/o_complex_basic.c:457
+#: libgeda/src/o_complex_basic.c:457
 #, c-format
 msgid ""
 "Component not found:\n"
@@ -379,19 +383,19 @@ msgstr ""
 "Component not found:\n"
 " %s"
 
-#: src/o_complex_basic.c:671
+#: libgeda/src/o_complex_basic.c:671
 #, c-format
 msgid "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"
 msgstr "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:683
+#: libgeda/src/o_complex_basic.c:683
 #, c-format
 msgid ""
 "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"
 msgstr ""
 "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:1307
+#: libgeda/src/o_complex_basic.c:1027
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -400,7 +404,7 @@ msgstr ""
 "WARNING: Symbol version parse error on refdes %s:\n"
 "\tCould not parse symbol file symversion=%s\n"
 
-#: src/o_complex_basic.c:1311
+#: libgeda/src/o_complex_basic.c:1031
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -409,7 +413,7 @@ msgstr ""
 "WARNING: Symbol version parse error on refdes %s:\n"
 "\tCould not parse symbol file symversion=\n"
 
-#: src/o_complex_basic.c:1327
+#: libgeda/src/o_complex_basic.c:1047
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -418,7 +422,7 @@ msgstr ""
 "WARNING: Symbol version parse error on refdes %s:\n"
 "\tCould not parse attached symversion=%s\n"
 
-#: src/o_complex_basic.c:1352
+#: libgeda/src/o_complex_basic.c:1072
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -429,7 +433,7 @@ msgstr ""
 "\tsymversion=%s attached to instantiated symbol, but no symversion= inside "
 "symbol file\n"
 
-#: src/o_complex_basic.c:1366
+#: libgeda/src/o_complex_basic.c:1086
 #, c-format
 msgid ""
 "WARNING: Symbol version mismatch on refdes %s (%s):\n"
@@ -438,17 +442,17 @@ msgstr ""
 "WARNING: Symbol version mismatch on refdes %s (%s):\n"
 "\tSymbol in library is newer than instantiated symbol\n"
 
-#: src/o_complex_basic.c:1394
+#: libgeda/src/o_complex_basic.c:1114
 #, c-format
 msgid "\tMAJOR VERSION CHANGE (file %.3f, instantiated %.3f, %s)!\n"
 msgstr "\tMAJOR VERSION CHANGE (file %.3f, instantiated %.3f, %s)!\n"
 
-#: src/o_complex_basic.c:1412
+#: libgeda/src/o_complex_basic.c:1132
 #, c-format
 msgid "\tMinor version change (file %.3f, instantiated %.3f)\n"
 msgstr "\tMinor version change (file %.3f, instantiated %.3f)\n"
 
-#: src/o_complex_basic.c:1423
+#: libgeda/src/o_complex_basic.c:1143
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -457,12 +461,12 @@ msgstr ""
 "WARNING: Symbol version oddity on refdes %s:\n"
 "\tInstantiated symbol is newer than symbol in library\n"
 
-#: src/o_embed.c:58
+#: libgeda/src/o_embed.c:56
 #, c-format
 msgid "Component [%s] has been embedded\n"
 msgstr "Component [%s] has been embedded\n"
 
-#: src/o_embed.c:98
+#: libgeda/src/o_embed.c:96
 #, c-format
 msgid ""
 "Could not find component [%s], while trying to unembed. Component is still "
@@ -471,100 +475,103 @@ msgstr ""
 "Could not find component [%s], while trying to unembed. Component is still "
 "embedded\n"
 
-#: src/o_embed.c:106
+#: libgeda/src/o_embed.c:104
 #, c-format
 msgid "Component [%s] has been successfully unembedded\n"
 msgstr "Component [%s] has been successfully unembedded\n"
 
-#: src/o_line_basic.c:264
+#: libgeda/src/o_line_basic.c:257
 #, c-format
 msgid "Found a zero length line [ %c %d %d %d %d %d ]\n"
 msgstr "Found a zero length line [ %c %d %d %d %d %d ]\n"
 
-#: src/o_net_basic.c:170
+#: libgeda/src/o_net_basic.c:170
 #, c-format
 msgid "Found a zero length net [ %c %d %d %d %d %d ]\n"
 msgstr "Found a zero length net [ %c %d %d %d %d %d ]\n"
 
-#: src/o_picture.c:80
+#: libgeda/src/o_picture.c:75
 #, c-format
 msgid "Error reading picture definition line: %s.\n"
 msgstr "Error reading picture definition line: %s.\n"
 
-#: src/o_picture.c:94
+#: libgeda/src/o_picture.c:89
 #, c-format
 msgid "Found a zero width/height picture [ %c %d %d %d %d ]\n"
 msgstr "Found a zero width/height picture [ %c %d %d %d %d ]\n"
 
-#: src/o_picture.c:99
+#: libgeda/src/o_picture.c:94
 #, c-format
 msgid "Found a picture with a wrong 'mirrored' parameter: %c.\n"
 msgstr "Found a picture with a wrong 'mirrored' parameter: %c.\n"
 
-#: src/o_picture.c:101
+#: libgeda/src/o_picture.c:96
 msgid "Setting mirrored to 0\n"
 msgstr "Setting mirrored to 0\n"
 
-#: src/o_picture.c:106
+#: libgeda/src/o_picture.c:101
 #, c-format
 msgid "Found a picture with a wrong 'embedded' parameter: %c.\n"
 msgstr "Found a picture with a wrong 'embedded' parameter: %c.\n"
 
-#: src/o_picture.c:108
+#: libgeda/src/o_picture.c:103
 msgid "Setting embedded to 0\n"
 msgstr "Setting embedded to 0\n"
 
-#: src/o_picture.c:120
+#: libgeda/src/o_picture.c:115
 #, c-format
 msgid "Found an unsupported picture angle [ %d ]\n"
 msgstr "Found an unsupported picture angle [ %d ]\n"
 
-#: src/o_picture.c:121 src/o_text_basic.c:1127
+#: libgeda/src/o_picture.c:116 libgeda/src/o_text_basic.c:1175
 msgid "Setting angle to 0\n"
 msgstr "Setting angle to 0\n"
 
-#: src/o_picture.c:156 src/o_picture.c:167 src/o_picture.c:924
+#: libgeda/src/o_picture.c:151 libgeda/src/o_picture.c:162
+#: libgeda/src/o_picture.c:915
 #, c-format
 msgid "Failed to load image from embedded data [%s]: %s\n"
 msgstr "Failed to load image from embedded data [%s]: %s\n"
 
-#: src/o_picture.c:157
+#: libgeda/src/o_picture.c:152
 msgid "Base64 decoding failed."
 msgstr "Base64 decoding failed."
 
-#: src/o_picture.c:158 src/o_picture.c:169 src/o_picture.c:926
+#: libgeda/src/o_picture.c:153 libgeda/src/o_picture.c:164
+#: libgeda/src/o_picture.c:917
 msgid "Falling back to file loading. Picture unembedded.\n"
 msgstr "Falling back to file loading. Picture unembedded.\n"
 
-#: src/o_picture.c:180 src/o_picture.c:912 src/o_picture.c:961
+#: libgeda/src/o_picture.c:175 libgeda/src/o_picture.c:903
+#: libgeda/src/o_picture.c:952
 #, c-format
 msgid "Failed to load image from file [%s]: %s\n"
 msgstr "Failed to load image from file [%s]: %s\n"
 
-#: src/o_picture.c:191
+#: libgeda/src/o_picture.c:186
 msgid "Loading warning picture.\n"
 msgstr "Loading warning picture.\n"
 
-#: src/o_picture.c:197
+#: libgeda/src/o_picture.c:192
 #, c-format
 msgid "Error loading picture from file: %s.\n"
 msgstr "Error loading picture from file: %s.\n"
 
-#: src/o_picture.c:257
+#: libgeda/src/o_picture.c:252
 msgid "ERROR: o_picture_save: unable to encode the picture.\n"
 msgstr "ERROR: o_picture_save: unable to encode the picture.\n"
 
-#: src/o_picture.c:939
+#: libgeda/src/o_picture.c:930
 #, c-format
 msgid "Picture [%s] has been embedded\n"
 msgstr "Picture [%s] has been embedded\n"
 
-#: src/o_picture.c:979
+#: libgeda/src/o_picture.c:970
 #, c-format
 msgid "Picture [%s] has been unembedded\n"
 msgstr "Picture [%s] has been unembedded\n"
 
-#: src/o_pin_basic.c:180
+#: libgeda/src/o_pin_basic.c:180
 msgid ""
 "Found a pin which did not have the whichone field set.\n"
 "Verify and correct manually.\n"
@@ -572,66 +579,61 @@ msgstr ""
 "Found a pin which did not have the whichone field set.\n"
 "Verify and correct manually.\n"
 
-#: src/o_pin_basic.c:183
+#: libgeda/src/o_pin_basic.c:183
 #, c-format
 msgid "Found an invalid whichend on a pin (reseting to zero): %d\n"
 msgstr "Found an invalid whichend on a pin (reseting to zero): %d\n"
 
-#: src/o_pin_basic.c:189
+#: libgeda/src/o_pin_basic.c:189
 #, c-format
 msgid "Found a zero length pin: [ %s ]\n"
 msgstr "Found a zero length pin: [ %s ]\n"
 
-#: src/o_text_basic.c:303
+#: libgeda/src/o_text_basic.c:362
 #, c-format
 msgid "Could not find character '%s' definition.\n"
 msgstr "Could not find character '%s' definition.\n"
 
-#: src/o_text_basic.c:308
-#, c-format
-msgid "Could not load question font char -- check font-directory keyword\n"
-msgstr "Could not load question font char -- check font-directory keyword\n"
-
-#: src/o_text_basic.c:1113
+#: libgeda/src/o_text_basic.c:1161
 #, c-format
 msgid "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1125
+#: libgeda/src/o_text_basic.c:1173
 #, c-format
 msgid "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1147
+#: libgeda/src/o_text_basic.c:1195
 #, c-format
 msgid "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1149
+#: libgeda/src/o_text_basic.c:1197
 msgid "Setting alignment to LOWER_LEFT\n"
 msgstr "Setting alignment to LOWER_LEFT\n"
 
-#: src/o_text_basic.c:1238
+#: libgeda/src/o_text_basic.c:1286
 #, c-format
 msgid "Failed to validate utf-8 character in font definition: \"%s\".\n"
 msgstr "Failed to validate utf-8 character in font definition: \"%s\".\n"
 
-#: src/s_clib.c:464
+#: libgeda/src/s_clib.c:464
 #, c-format
 msgid "Library command failed [%s]: %s\n"
 msgstr "Library command failed [%s]: %s\n"
 
-#: src/s_clib.c:469
+#: libgeda/src/s_clib.c:469
 #, c-format
 msgid "Library command failed [%s]: Uncaught signal %i.\n"
 msgstr "Library command failed [%s]: Uncaught signal %i.\n"
 
-#: src/s_clib.c:473
+#: libgeda/src/s_clib.c:473
 #, c-format
 msgid "Library command failed [%s]\n"
 msgstr "Library command failed [%s]\n"
 
-#: src/s_clib.c:474
+#: libgeda/src/s_clib.c:474
 #, c-format
 msgid ""
 "Error output was:\n"
@@ -640,79 +642,79 @@ msgstr ""
 "Error output was:\n"
 "%s\n"
 
-#: src/s_clib.c:560
+#: libgeda/src/s_clib.c:560
 #, c-format
 msgid "Library name [%s] already in use.  Using [%s].\n"
 msgstr "Library name [%s] already in use.  Using [%s].\n"
 
-#: src/s_clib.c:597
+#: libgeda/src/s_clib.c:597
 #, c-format
 msgid "Failed to open directory [%s]: %s\n"
 msgstr "Failed to open directory [%s]: %s\n"
 
-#: src/s_clib.c:732
+#: libgeda/src/s_clib.c:733
 #, c-format
 msgid "Failed to scan library [%s]: Scheme function returned non-list\n"
 msgstr "Failed to scan library [%s]: Scheme function returned non-list\n"
 
-#: src/s_clib.c:740
+#: libgeda/src/s_clib.c:741
 #, c-format
 msgid "Non-string symbol name while scanning library [%s]\n"
 msgstr "Non-string symbol name while scanning library [%s]\n"
 
-#: src/s_clib.c:895 src/s_clib.c:942
+#: libgeda/src/s_clib.c:900 libgeda/src/s_clib.c:947
 msgid "Cannot add library: name not specified\n"
 msgstr "Cannot add library: name not specified\n"
 
-#: src/s_clib.c:902
+#: libgeda/src/s_clib.c:907
 #, c-format
 msgid ""
 "Cannot add library [%s]: both 'list' and 'get' commands must be specified.\n"
 msgstr ""
 "Cannot add library [%s]: both 'list' and 'get' commands must be specified.\n"
 
-#: src/s_clib.c:950
+#: libgeda/src/s_clib.c:955
 #, c-format
 msgid "Cannot add Scheme-library [%s]: callbacks must be closures\n"
 msgstr "Cannot add Scheme-library [%s]: callbacks must be closures\n"
 
-#: src/s_clib.c:1077
+#: libgeda/src/s_clib.c:1082
 #, c-format
 msgid "Failed to load symbol from file [%s]: %s\n"
 msgstr "Failed to load symbol from file [%s]: %s\n"
 
-#: src/s_clib.c:1135
+#: libgeda/src/s_clib.c:1142
 #, c-format
 msgid "Failed to load symbol data [%s] from source [%s]\n"
 msgstr "Failed to load symbol data [%s] from source [%s]\n"
 
-#: src/s_clib.c:1360
+#: libgeda/src/s_clib.c:1373
 #, c-format
 msgid "Component [%s] was not found in the component library\n"
 msgstr "Component [%s] was not found in the component library\n"
 
-#: src/s_clib.c:1366
+#: libgeda/src/s_clib.c:1379
 #, c-format
 msgid "More than one component found with name [%s]\n"
 msgstr "More than one component found with name [%s]\n"
 
-#: src/s_color.c:206
+#: libgeda/src/s_color.c:206
 msgid "Color index out of range"
 msgstr "Colour index out of range"
 
-#: src/s_color.c:261
+#: libgeda/src/s_color.c:261
 msgid "Color map entry must be a two-element list"
 msgstr "Colour map entry must be a two-element list"
 
-#: src/s_color.c:269
+#: libgeda/src/s_color.c:269
 msgid "Index in color map entry must be an integer"
 msgstr "Index in colour map entry must be an integer"
 
-#: src/s_color.c:295
+#: libgeda/src/s_color.c:295
 msgid "Value in color map entry must be #f or a string"
 msgstr "Value in colour map entry must be #f or a string"
 
-#: src/s_hierarchy.c:90
+#: libgeda/src/s_hierarchy.c:90
 #, c-format
 msgid ""
 "hierarchy loop detected while visiting page:\n"
@@ -721,45 +723,48 @@ msgstr ""
 "hierarchy loop detected while visiting page:\n"
 "  \"%s\"\n"
 
-#: src/s_hierarchy.c:185
+#: libgeda/src/s_hierarchy.c:185
 msgid "There are no schematics above the current one!\n"
 msgstr "There are no schematics above the current one!\n"
 
-#: src/s_hierarchy.c:266
+#: libgeda/src/s_hierarchy.c:266
 #, c-format
 msgid "ERROR in s_hierarchy_traverse: schematic not found: %s\n"
 msgstr "ERROR in s_hierarchy_traverse: schematic not found: %s\n"
 
-#: src/s_page.c:167
+#: libgeda/src/s_page.c:167
 #, c-format
 msgid "s_page_delete: Can't get the real filename of %s."
 msgstr "s_page_delete: Can't get the real filename of %s."
 
-#: src/s_page.c:178
+#: libgeda/src/s_page.c:178
 #, c-format
 msgid "s_page_delete: Unable to delete backup file %s."
 msgstr "s_page_delete: Unable to delete backup file %s."
 
-#: src/s_page.c:380
+#: libgeda/src/s_page.c:380
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Saved [%s]\n"
 
-#: src/s_page.c:386
+#: libgeda/src/s_page.c:386
 #, c-format
 msgid "Could NOT save [%s]\n"
 msgstr "Could NOT save [%s]\n"
 
-#: src/s_slib.c:181
+#: libgeda/src/s_slib.c:181
 #, c-format
 msgid "Found [%s]\n"
 msgstr "Found [%s]\n"
 
-#: src/s_slib.c:191
+#: libgeda/src/s_slib.c:191
 #, c-format
 msgid "Could not find [%s] in any SourceLibrary\n"
 msgstr "Could not find [%s] in any SourceLibrary\n"
 
+#~ msgid "Could not load question font char -- check font-directory keyword\n"
+#~ msgstr "Could not load question font char -- check font-directory keyword\n"
+
 #~ msgid "Read ~/.gEDA/%s file [%%s]\n"
 #~ msgstr "Read ~/.gEDA/%s file [%%s]\n"
 
diff --git a/libgeda/po/es.po b/libgeda/po/es.po
index 0f881f8..8ac8f0d 100644
--- a/libgeda/po/es.po
+++ b/libgeda/po/es.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libgeda\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:49+0100\n"
+"POT-Creation-Date: 2009-08-07 22:55+0100\n"
 "PO-Revision-Date: 2008-12-21 21:07+0100\n"
 "Last-Translator: Carlos Nieves Ã?nega <cnieves@xxxxxxxxxx>\n"
 "Language-Team: geda-dev <geda-dev@xxxxxxxx>\n"
@@ -16,41 +16,41 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/libgeda.xml.in.h:3
+#: libgeda/data/libgeda.xml.in.h:3
 msgid "gEDA circuit schematic"
 msgstr "Esquema de circuito gEDA"
 
-#: data/libgeda.xml.in.h:4
+#: libgeda/data/libgeda.xml.in.h:4
 msgid "gEDA schematic symbol"
 msgstr "Símbolo de esquema gEDA"
 
-#: data/libgeda.xml.in.h:5
+#: libgeda/data/libgeda.xml.in.h:5
 msgid "gEDA gsch2pcb project"
 msgstr "Proyecto de gEDA gsch2pcb"
 
-#: data/x-geda-gsch2pcb-project.desktop.in.h:3
+#: libgeda/data/x-geda-gsch2pcb-project.desktop.in.h:3
 msgid "gEDA Gsch2pcb Project"
 msgstr "Proyecto gEDA Gsch2pcb"
 
-#: data/x-geda-schematic.desktop.in.h:3
+#: libgeda/data/x-geda-schematic.desktop.in.h:3
 msgid "gEDA Circuit Schematic"
 msgstr "Esquema de circuito gEDA"
 
-#: data/x-geda-symbol.desktop.in.h:3
+#: libgeda/data/x-geda-symbol.desktop.in.h:3
 msgid "gEDA Schematic Symbol"
 msgstr "Símbolo de esquema gEDA"
 
-#: src/a_basic.c:185
+#: libgeda/src/a_basic.c:181
 #, c-format
 msgid "o_save_objects: object %p has unknown type '%c'\n"
 msgstr "o_save_objects: el objeto %p tiene un tipo '%c' desconocido\n"
 
-#: src/a_basic.c:235
+#: libgeda/src/a_basic.c:231
 #, c-format
 msgid "o_save: Could not open [%s]\n"
 msgstr "o_save: No se puede abrir [%s]\n"
 
-#: src/a_basic.c:440
+#: libgeda/src/a_basic.c:436
 #, c-format
 msgid ""
 "Read unexpected embedded symbol start marker in [%s] :\n"
@@ -61,7 +61,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:469
+#: libgeda/src/a_basic.c:465
 #, c-format
 msgid ""
 "Read unexpected embedded symbol end marker in [%s] :\n"
@@ -72,7 +72,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:498
+#: libgeda/src/a_basic.c:494
 #, c-format
 msgid ""
 "Read an old format sym/sch file!\n"
@@ -83,7 +83,7 @@ msgstr ""
 "Por favor ejecute: g[sym|sch]update en: \n"
 "[%s]\n"
 
-#: src/a_basic.c:504
+#: libgeda/src/a_basic.c:500
 #, c-format
 msgid ""
 "Read garbage in [%s] :\n"
@@ -94,17 +94,17 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/f_basic.c:123 src/f_basic.c:136
+#: libgeda/src/f_basic.c:123 libgeda/src/f_basic.c:136
 #, c-format
 msgid "Failed to stat [%s]: %s"
 msgstr "No se ha podido determinar [%s]: %s"
 
-#: src/f_basic.c:219
+#: libgeda/src/f_basic.c:219
 #, c-format
 msgid "Cannot find file %s: %s"
 msgstr "No se puede encontrar el archivo %s: %s"
 
-#: src/f_basic.c:257
+#: libgeda/src/f_basic.c:257
 #, c-format
 msgid ""
 "\n"
@@ -117,13 +117,13 @@ msgstr ""
 "  %s.\n"
 "\n"
 
-#: src/f_basic.c:259
+#: libgeda/src/f_basic.c:259
 msgid "I could not guess if it is newer, so you have to do it manually.\n"
 msgstr ""
 "No se ha podido averiguar si es más reciente, así que lo tendrá que hacer "
 "usted manualmente.\n"
 
-#: src/f_basic.c:261
+#: libgeda/src/f_basic.c:261
 msgid ""
 "The backup copy is newer than the schematic, so it seems you should load it "
 "instead of the original file.\n"
@@ -131,7 +131,7 @@ msgstr ""
 "La copia de seguridad es más reciente que el esquema. Parece que debería "
 "cargar la copia de seguridad en vez del archivo original.\n"
 
-#: src/f_basic.c:263
+#: libgeda/src/f_basic.c:263
 msgid ""
 "Gschem usually makes backup copies automatically, and this situation happens "
 "when it crashed or it was forced to exit abruptly.\n"
@@ -139,7 +139,7 @@ msgstr ""
 "Gschem normalmente realiza copias de seguridad automáticamente y esta "
 "situaciónocurre cuando ha fallado o se ha forzado una salida abrupta.\n"
 
-#: src/f_basic.c:266
+#: libgeda/src/f_basic.c:266
 msgid ""
 "\n"
 "Run gschem and correct the situation.\n"
@@ -149,149 +149,149 @@ msgstr ""
 "Ejecute gschem y corrija la situación.\n"
 "\n"
 
-#: src/f_basic.c:375
+#: libgeda/src/f_basic.c:375
 #, c-format
 msgid "Can't get the real filename of %s."
 msgstr "No se puede averiguar el nombre real del archivo %s."
 
-#: src/f_basic.c:395
+#: libgeda/src/f_basic.c:395
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr ""
 "No se ha podido poner el archivo de copia de seguridad anterior [%s] en modo "
 "de lectura-escritura\n"
 
-#: src/f_basic.c:401
+#: libgeda/src/f_basic.c:401
 #, c-format
 msgid "Can't save backup file: %s."
 msgstr "No se puede guardar la copia de seguridad: %s"
 
-#: src/f_basic.c:411
+#: libgeda/src/f_basic.c:411
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr ""
 "No se ha podido poner el archivo de copia de seguridad [%s] en modo de sólo "
 "lectura\n"
 
-#: src/f_basic.c:700
+#: libgeda/src/f_basic.c:700
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/f_print.c:117
+#: libgeda/src/f_print.c:118
 msgid "Unable to get time of day in f_print_header()\n"
 msgstr "Imposible obtener la hora en f_print_header()\n"
 
-#: src/f_print.c:159
+#: libgeda/src/f_print.c:160
 #, c-format
 msgid "Unable to open the prolog file `%s' for reading in f_print_header()\n"
 msgstr ""
 "Imposible abrir el archivo de prólogo '%s' para lectura en f_print_header()\n"
 
-#: src/f_print.c:176
+#: libgeda/src/f_print.c:177
 #, c-format
 msgid "Error during reading of the prolog file `%s' in f_print_header()\n"
 msgstr "Error al leer el archivo de prólogo '%s' en f_print_header()\n"
 
-#: src/f_print.c:182
+#: libgeda/src/f_print.c:183
 msgid ""
 "Error during writing of the output postscript file in f_print_header()\n"
 msgstr ""
 "Error al escribir el archivo postscript de salida en f_print_header()\n"
 
-#: src/f_print.c:195
+#: libgeda/src/f_print.c:196
 msgid "Giving up on printing\n"
 msgstr "Se desiste continuar con la impresión\n"
 
-#: src/f_print.c:390
+#: libgeda/src/f_print.c:391
 #, c-format
 msgid "Could not open [%s] for printing\n"
 msgstr "No se puede abrir [%s] para impresión\n"
 
-#: src/f_print.c:423
+#: libgeda/src/f_print.c:424
 #, c-format
 msgid "Could not execute command [%s] for printing\n"
 msgstr "No se puede ejecutar el comando [%s] para impresión\n"
 
-#: src/f_print.c:698
+#: libgeda/src/f_print.c:699
 msgid "Too many UTF-8 characters, cannot print\n"
 msgstr "Demasiados caracteres UTF-8, no se puede imprimir\n"
 
-#: src/g_basic.c:101
+#: libgeda/src/g_basic.c:101
 #, c-format
 msgid "%s:%i:%i: %s\n"
 msgstr "%s:%i:%i: %s\n"
 
-#: src/g_basic.c:108
+#: libgeda/src/g_basic.c:108
 #, c-format
 msgid "Unknown file: %s\n"
 msgstr "Archivo desconocido: %s\n"
 
-#: src/g_basic.c:114
+#: libgeda/src/g_basic.c:114
 #, c-format
 msgid "Evaluation failed: %s\n"
 msgstr "Ha fallado la evaluación de: %s\n"
 
-#: src/g_basic.c:115
+#: libgeda/src/g_basic.c:115
 msgid "Enable debugging for more detailed information\n"
 msgstr "Habilitar la depuración para ver información más detallada\n"
 
-#: src/g_basic.c:258
+#: libgeda/src/g_basic.c:258
 #, c-format
 msgid "Could not find [%s] for interpretation\n"
 msgstr "No se puede encontrar [%s] para interpretar\n"
 
-#: src/g_rc.c:136
+#: libgeda/src/g_rc.c:136
 #, c-format
 msgid "RC file [%s] already read in.\n"
 msgstr "El archivo RC [%s] ya ha sido leído.\n"
 
-#: src/g_rc.c:181
+#: libgeda/src/g_rc.c:181
 #, fuzzy, c-format
 msgid "Read system config file [%%s]\n"
 msgstr "Leído archivo system-%s [%%s]\n"
 
-#: src/g_rc.c:182
+#: libgeda/src/g_rc.c:182
 #, fuzzy, c-format
 msgid "Did not find required system config file [%%s]\n"
 msgstr "No se ha encontrado el archivo imprescindible system-%s [%%s]\n"
 
-#: src/g_rc.c:216
+#: libgeda/src/g_rc.c:216
 #, fuzzy, c-format
 msgid "Read user config file [%%s]\n"
 msgstr "Leído el archivo especificado %s [%%s]\n"
 
-#: src/g_rc.c:217
+#: libgeda/src/g_rc.c:217
 #, fuzzy, c-format
 msgid "Did not find optional user config file [%%s]\n"
 msgstr "No se ha podido encontrar el archivo local %s [%%s]\n"
 
-#: src/g_rc.c:248
+#: libgeda/src/g_rc.c:248
 #, fuzzy, c-format
 msgid "Read local config file [%%s]\n"
 msgstr "Leído el archivo local %s [%%s]\n"
 
-#: src/g_rc.c:249
+#: libgeda/src/g_rc.c:249
 #, fuzzy, c-format
 msgid "Did not find optional local config file [%%s]\n"
 msgstr "No se ha podido encontrar el archivo local %s [%%s]\n"
 
-#: src/g_rc.c:286
+#: libgeda/src/g_rc.c:286
 #, c-format
 msgid "Read specified %s file [%%s]\n"
 msgstr "Leído el archivo especificado %s [%%s]\n"
 
-#: src/g_rc.c:288
+#: libgeda/src/g_rc.c:288
 #, c-format
 msgid "Did not find specified %s file [%%s]\n"
 msgstr "No se ha podido encontrar el archivo especificado %s [%%s]\n"
 
-#: src/g_rc.c:338
+#: libgeda/src/g_rc.c:338
 #, c-format
 msgid "Could not find any %s file!\n"
 msgstr "¡No se puede encontrar ningún archivo %s!\n"
 
-#: src/g_rc.c:984
+#: libgeda/src/g_rc.c:984
 msgid ""
 "WARNING: using a string for 'always-promote-attributes' is deprecated. Use a "
 "list of strings instead\n"
@@ -299,92 +299,96 @@ msgstr ""
 "ADVERTENCIA: el uso de la cadena 'always-promote-attributes' está obsoleto. "
 "Se recomienda utilizar una lista de cadenas en su lugar\n"
 
-#: src/o_arc_basic.c:282
+#: libgeda/src/o_arc_basic.c:275
 #, c-format
 msgid "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"
 msgstr ""
 "Se ha encontrado un arco con radio cero [ %c %d, %d, %d, %d, %d, %d ]\n"
 
-#: src/o_arc_basic.c:287 src/o_box_basic.c:301 src/o_bus_basic.c:188
-#: src/o_circle_basic.c:293 src/o_line_basic.c:269 src/o_net_basic.c:180
-#: src/o_path_basic.c:199 src/o_pin_basic.c:193 src/o_text_basic.c:1155
+#: libgeda/src/o_arc_basic.c:280 libgeda/src/o_box_basic.c:294
+#: libgeda/src/o_bus_basic.c:188 libgeda/src/o_circle_basic.c:286
+#: libgeda/src/o_line_basic.c:262 libgeda/src/o_net_basic.c:180
+#: libgeda/src/o_path_basic.c:192 libgeda/src/o_pin_basic.c:193
+#: libgeda/src/o_text_basic.c:1203
 #, c-format
 msgid "Found an invalid color [ %s ]\n"
 msgstr "Se ha encontrado un color no válido [%s]\n"
 
-#: src/o_arc_basic.c:288 src/o_box_basic.c:302 src/o_bus_basic.c:189
-#: src/o_circle_basic.c:294 src/o_line_basic.c:270 src/o_net_basic.c:181
-#: src/o_path_basic.c:200 src/o_pin_basic.c:194 src/o_text_basic.c:1156
+#: libgeda/src/o_arc_basic.c:281 libgeda/src/o_box_basic.c:295
+#: libgeda/src/o_bus_basic.c:189 libgeda/src/o_circle_basic.c:287
+#: libgeda/src/o_line_basic.c:263 libgeda/src/o_net_basic.c:181
+#: libgeda/src/o_path_basic.c:193 libgeda/src/o_pin_basic.c:194
+#: libgeda/src/o_text_basic.c:1204
 #, fuzzy
 msgid "Setting color to default color\n"
 msgstr "Seleccionando color BLANCO\n"
 
-#: src/o_attrib.c:146
+#: libgeda/src/o_attrib.c:123
 msgid "Attempt to attach non text item as an attribute!\n"
 msgstr "¡Se ha intentado añadir un objeto que no es texto como un attributo!\n"
 
-#: src/o_attrib.c:151
+#: libgeda/src/o_attrib.c:128
 #, c-format
 msgid "Attempt to attach attribute [%s] to more than one object\n"
 msgstr "Se ha intentado añadir el attributo [%s] a más de un objeto\n"
 
-#: src/o_attrib.c:763
+#: libgeda/src/o_attrib.c:740
 msgid "Did not find slotdef=#:#,#,#... attribute\n"
 msgstr "No se ha encontrado un atributo slotdef=#:#,#,#...\n"
 
-#: src/o_attrib.c:769
+#: libgeda/src/o_attrib.c:746
 msgid "Improper slotdef syntax: missing \":\".\n"
 msgstr "Sintaxis de slotdef incorrecta: falta el carácter \":\".\n"
 
-#: src/o_attrib.c:784
+#: libgeda/src/o_attrib.c:761
 msgid "Did not find proper slotdef=#:#,#,#... attribute\n"
 msgstr "No se ha encontrado un atributo válido slotdef=#:#,#,#...\n"
 
-#: src/o_attrib.c:814
+#: libgeda/src/o_attrib.c:791
 msgid "component missing pinseq= attribute\n"
 msgstr "El componente no tiene el atributo pinseq\n"
 
-#: src/o_basic.c:199 src/o_basic.c:211
+#: libgeda/src/o_basic.c:199 libgeda/src/o_basic.c:211
 msgid "Invalid space specified, setting to 100\n"
 msgstr "Se ha especificado un espaciado no válido, se corrige a 100\n"
 
-#: src/o_basic.c:207
+#: libgeda/src/o_basic.c:207
 msgid "Invalid length specified, setting to 100\n"
 msgstr "Se ha especificado una longitud no válida, se corrige a 100\n"
 
-#: src/o_box_basic.c:296
+#: libgeda/src/o_box_basic.c:289
 #, c-format
 msgid "Found a zero width/height box [ %c %d %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado un rectángulo con altura o anchura cero [ %c %d %d %d %d %"
 "d ]\n"
 
-#: src/o_bus_basic.c:179
+#: libgeda/src/o_bus_basic.c:179
 #, c-format
 msgid "Found a zero length bus [ %c %d %d %d %d %d ]\n"
 msgstr "Se ha encontrado un bus de longitud cero [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:194
+#: libgeda/src/o_bus_basic.c:194
 #, c-format
 msgid "Found an invalid bus ripper direction [ %s ]\n"
 msgstr ""
 "Se ha encontrado una dirección del símbolo de extracción de bus no válida [ %"
 "s ]\n"
 
-#: src/o_bus_basic.c:195
+#: libgeda/src/o_bus_basic.c:195
 msgid "Resetting direction to neutral (no direction)\n"
 msgstr "Cambiando la dirección al valor por defecto neutro (sin dirección)\n"
 
-#: src/o_circle_basic.c:204
+#: libgeda/src/o_circle_basic.c:197
 msgid "Null radius circles are not allowed\n"
 msgstr "No se permiten círculos con radio cero\n"
 
-#: src/o_circle_basic.c:287
+#: libgeda/src/o_circle_basic.c:280
 #, c-format
 msgid "Found a zero radius circle [ %c %d %d %d %d ]\n"
 msgstr "Se ha encontrado un círculo con radio cero [ %c %d %d %d %d ]\n"
 
-#: src/o_complex_basic.c:457
+#: libgeda/src/o_complex_basic.c:457
 #, c-format
 msgid ""
 "Component not found:\n"
@@ -393,14 +397,14 @@ msgstr ""
 "No se ha encontrado el componente:\n"
 " %s"
 
-#: src/o_complex_basic.c:671
+#: libgeda/src/o_complex_basic.c:671
 #, c-format
 msgid "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"
 msgstr ""
 "Se ha encontrado un componente con un ángulo de rotación no válido [ %c %d %"
 "d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:683
+#: libgeda/src/o_complex_basic.c:683
 #, c-format
 msgid ""
 "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"
@@ -408,7 +412,7 @@ msgstr ""
 "Se ha encontrado un componente con un atributo de simetría no válido [ %c %d "
 "%d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:1307
+#: libgeda/src/o_complex_basic.c:1027
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -417,7 +421,7 @@ msgstr ""
 "ADVERTENCIA: Error al obtener la versión de símbolo en la referencia %s:\n"
 "\tNo se ha podido procesar el atributo de versión de archivo symversion=%s\n"
 
-#: src/o_complex_basic.c:1311
+#: libgeda/src/o_complex_basic.c:1031
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -426,7 +430,7 @@ msgstr ""
 "ADVERTENCIA: Error al obtener la versión de símbolo en la referencia %s:\n"
 "\tNo se ha podido procesar el atributo de versión de archivo symversion=\n"
 
-#: src/o_complex_basic.c:1327
+#: libgeda/src/o_complex_basic.c:1047
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -435,7 +439,7 @@ msgstr ""
 "ADVERTENCIA: Error al obtener la versión de símbolo en la referencia %s:\n"
 "\tNo se ha podido procesar el atributo añadido symversion=%s\n"
 
-#: src/o_complex_basic.c:1352
+#: libgeda/src/o_complex_basic.c:1072
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -447,7 +451,7 @@ msgstr ""
 "\tse ha añadido el atributo symversion=%s a la instancia del símbolo, pero "
 "no hay ningún atributo symversion= dentro del archivo del símbolo\n"
 
-#: src/o_complex_basic.c:1366
+#: libgeda/src/o_complex_basic.c:1086
 #, c-format
 msgid ""
 "WARNING: Symbol version mismatch on refdes %s (%s):\n"
@@ -458,18 +462,18 @@ msgstr ""
 "\t El símbolo en la librería es más reciente que el instanciado en el "
 "esquema\n"
 
-#: src/o_complex_basic.c:1394
+#: libgeda/src/o_complex_basic.c:1114
 #, c-format
 msgid "\tMAJOR VERSION CHANGE (file %.3f, instantiated %.3f, %s)!\n"
 msgstr ""
 "\t¡CAMBIO DE VERSI�N IMPORTANTE (archivo %.3f, instanciado %.3f, %s)!\n"
 
-#: src/o_complex_basic.c:1412
+#: libgeda/src/o_complex_basic.c:1132
 #, c-format
 msgid "\tMinor version change (file %.3f, instantiated %.3f)\n"
 msgstr "\t Cambio menor en la versión (archivo %.3f, instanciado %.3f)\n"
 
-#: src/o_complex_basic.c:1423
+#: libgeda/src/o_complex_basic.c:1143
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -479,12 +483,12 @@ msgstr ""
 "referencia %s:\n"
 "\tEl símbolo instanciado es más reciente que el símbolo en la librería\n"
 
-#: src/o_embed.c:58
+#: libgeda/src/o_embed.c:56
 #, c-format
 msgid "Component [%s] has been embedded\n"
 msgstr "Se ha incrustado el componente [%s]\n"
 
-#: src/o_embed.c:98
+#: libgeda/src/o_embed.c:96
 #, c-format
 msgid ""
 "Could not find component [%s], while trying to unembed. Component is still "
@@ -493,105 +497,108 @@ msgstr ""
 "No se puede encontrar el componente [%s], al intentar desincrustarlo.El "
 "componente permanece todavía incrustado\n"
 
-#: src/o_embed.c:106
+#: libgeda/src/o_embed.c:104
 #, c-format
 msgid "Component [%s] has been successfully unembedded\n"
 msgstr "Se ha desincrustado satisfactoriamente el componente [%s]\n"
 
-#: src/o_line_basic.c:264
+#: libgeda/src/o_line_basic.c:257
 #, c-format
 msgid "Found a zero length line [ %c %d %d %d %d %d ]\n"
 msgstr "Se ha encontrado una línea con longitud cero [ %c %d %d %d %d %d ]\n"
 
-#: src/o_net_basic.c:170
+#: libgeda/src/o_net_basic.c:170
 #, c-format
 msgid "Found a zero length net [ %c %d %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado una conexión con longitud cero [ %c %d %d %d %d %d ]\n"
 
-#: src/o_picture.c:80
+#: libgeda/src/o_picture.c:75
 #, c-format
 msgid "Error reading picture definition line: %s.\n"
 msgstr "Error al leer la línea de definición de la imagen: %s\n"
 
-#: src/o_picture.c:94
+#: libgeda/src/o_picture.c:89
 #, c-format
 msgid "Found a zero width/height picture [ %c %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado una imagen con altura ó anchura cero [ %c %d %d %d %d ]\n"
 
-#: src/o_picture.c:99
+#: libgeda/src/o_picture.c:94
 #, c-format
 msgid "Found a picture with a wrong 'mirrored' parameter: %c.\n"
 msgstr ""
 "Se ha encontrado una imagen con el parámetro 'volteado' incorrecto: %c.\n"
 
-#: src/o_picture.c:101
+#: libgeda/src/o_picture.c:96
 msgid "Setting mirrored to 0\n"
 msgstr "Cambiando el parámetro 'volteado' a 0\n"
 
-#: src/o_picture.c:106
+#: libgeda/src/o_picture.c:101
 #, c-format
 msgid "Found a picture with a wrong 'embedded' parameter: %c.\n"
 msgstr ""
 "Se ha encontrado una imagen con el parámetro 'incrustado' incorrecto: %c.\n"
 
-#: src/o_picture.c:108
+#: libgeda/src/o_picture.c:103
 msgid "Setting embedded to 0\n"
 msgstr "Cambiando el parámetro 'incrustado' a 0\n"
 
-#: src/o_picture.c:120
+#: libgeda/src/o_picture.c:115
 #, c-format
 msgid "Found an unsupported picture angle [ %d ]\n"
 msgstr ""
 "Se ha encontrado una imagen con un ángulo de rotación no válido [ %d ]\n"
 
-#: src/o_picture.c:121 src/o_text_basic.c:1127
+#: libgeda/src/o_picture.c:116 libgeda/src/o_text_basic.c:1175
 msgid "Setting angle to 0\n"
 msgstr "Cambiando el parámetro 'ángulo' a 0\n"
 
-#: src/o_picture.c:156 src/o_picture.c:167 src/o_picture.c:924
+#: libgeda/src/o_picture.c:151 libgeda/src/o_picture.c:162
+#: libgeda/src/o_picture.c:915
 #, c-format
 msgid "Failed to load image from embedded data [%s]: %s\n"
 msgstr "Error al cargar imagen desde los datos embebidos [%s]: %s\n"
 
-#: src/o_picture.c:157
+#: libgeda/src/o_picture.c:152
 msgid "Base64 decoding failed."
 msgstr "Ha fallado la decodificación Base64"
 
-#: src/o_picture.c:158 src/o_picture.c:169 src/o_picture.c:926
+#: libgeda/src/o_picture.c:153 libgeda/src/o_picture.c:164
+#: libgeda/src/o_picture.c:917
 msgid "Falling back to file loading. Picture unembedded.\n"
 msgstr "Volviendo al modo de carga de archivo. Imagen desincrustada.\n"
 
-#: src/o_picture.c:180 src/o_picture.c:912 src/o_picture.c:961
+#: libgeda/src/o_picture.c:175 libgeda/src/o_picture.c:903
+#: libgeda/src/o_picture.c:952
 #, c-format
 msgid "Failed to load image from file [%s]: %s\n"
 msgstr "Error al cargar imagen desde el archivo [%s]: %s\n"
 
-#: src/o_picture.c:191
+#: libgeda/src/o_picture.c:186
 msgid "Loading warning picture.\n"
 msgstr "Cargando imagen de advertencia.\n"
 
-#: src/o_picture.c:197
+#: libgeda/src/o_picture.c:192
 #, c-format
 msgid "Error loading picture from file: %s.\n"
 msgstr "Error al cargar la imagen desde el fichero: %s\n"
 
-#: src/o_picture.c:257
+#: libgeda/src/o_picture.c:252
 msgid "ERROR: o_picture_save: unable to encode the picture.\n"
 msgstr "ERROR: o_picture_save: imposible codificar la imagen.\n"
 
-#: src/o_picture.c:939
+#: libgeda/src/o_picture.c:930
 #, c-format
 msgid "Picture [%s] has been embedded\n"
 msgstr "Se ha incrustado la imagen [%s]\n"
 
-#: src/o_picture.c:979
+#: libgeda/src/o_picture.c:970
 #, c-format
 msgid "Picture [%s] has been unembedded\n"
 msgstr "Se ha desincrustado la imagen [%s]\n"
 
-#: src/o_pin_basic.c:180
+#: libgeda/src/o_pin_basic.c:180
 msgid ""
 "Found a pin which did not have the whichone field set.\n"
 "Verify and correct manually.\n"
@@ -599,75 +606,68 @@ msgstr ""
 "Se ha encontrado una pata que no tiene el campo 'whichone'.\n"
 "Por favor, compruébelo y corríjalo manualmente.\n"
 
-#: src/o_pin_basic.c:183
+#: libgeda/src/o_pin_basic.c:183
 #, c-format
 msgid "Found an invalid whichend on a pin (reseting to zero): %d\n"
 msgstr ""
 "Se ha encontrado un parámetro 'whichone' en una pata (y se cambia a 0): %d\n"
 
-#: src/o_pin_basic.c:189
+#: libgeda/src/o_pin_basic.c:189
 #, c-format
 msgid "Found a zero length pin: [ %s ]\n"
 msgstr "Se ha encontrado una pata con longitud cero [ %s ]\n"
 
-#: src/o_text_basic.c:303
+#: libgeda/src/o_text_basic.c:362
 #, c-format
 msgid "Could not find character '%s' definition.\n"
 msgstr "No se puede encontrar la definición del carácter '%s'.\n"
 
-#: src/o_text_basic.c:308
-#, c-format
-msgid "Could not load question font char -- check font-directory keyword\n"
-msgstr ""
-"No se puede cargar el carácter de interrogación -- compruebe la variable "
-"font-directory\n"
-
-#: src/o_text_basic.c:1113
+#: libgeda/src/o_text_basic.c:1161
 #, c-format
 msgid "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado un texto con tamaño cero [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1125
+#: libgeda/src/o_text_basic.c:1173
 #, c-format
 msgid "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado un texto con ángulo no válido [ %c %d %d %d %d %d %d %d %"
 "d ]\n"
 
-#: src/o_text_basic.c:1147
+#: libgeda/src/o_text_basic.c:1195
 #, c-format
 msgid "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Se ha encontrado un texto con alineamiento no válido [ %c %d %d %d %d %d %d %"
 "d %d ]\n"
 
-#: src/o_text_basic.c:1149
+#: libgeda/src/o_text_basic.c:1197
 msgid "Setting alignment to LOWER_LEFT\n"
 msgstr "Cambiando el alineamiento a 'Abajo a la izquierda'\n"
 
-#: src/o_text_basic.c:1238
+#: libgeda/src/o_text_basic.c:1286
 #, c-format
 msgid "Failed to validate utf-8 character in font definition: \"%s\".\n"
 msgstr ""
 "Error al comprobar el carácter utf-8 en la definición de la fuente: \"%s\".\n"
 
-#: src/s_clib.c:464
+#: libgeda/src/s_clib.c:464
 #, c-format
 msgid "Library command failed [%s]: %s\n"
 msgstr "Un comando de librería ha fallado [%s]: %s\n"
 
-#: src/s_clib.c:469
+#: libgeda/src/s_clib.c:469
 #, c-format
 msgid "Library command failed [%s]: Uncaught signal %i.\n"
 msgstr "Un comando de librería ha fallado [%s]: Señal no manejada %i.\n"
 
-#: src/s_clib.c:473
+#: libgeda/src/s_clib.c:473
 #, c-format
 msgid "Library command failed [%s]\n"
 msgstr "Un comando de librería ha fallado [%s]\n"
 
-#: src/s_clib.c:474
+#: libgeda/src/s_clib.c:474
 #, c-format
 msgid ""
 "Error output was:\n"
@@ -676,36 +676,36 @@ msgstr ""
 "La salida de error fue:\n"
 "%s\n"
 
-#: src/s_clib.c:560
+#: libgeda/src/s_clib.c:560
 #, c-format
 msgid "Library name [%s] already in use.  Using [%s].\n"
 msgstr ""
 "Ya se está usando el nombre de la librería [%s]. Se usará [%s] en su lugar.\n"
 
-#: src/s_clib.c:597
+#: libgeda/src/s_clib.c:597
 #, c-format
 msgid "Failed to open directory [%s]: %s\n"
 msgstr "Error al abrir la carpeta [%s]: %s\n"
 
-#: src/s_clib.c:732
+#: libgeda/src/s_clib.c:733
 #, c-format
 msgid "Failed to scan library [%s]: Scheme function returned non-list\n"
 msgstr ""
 "Error al buscar en la librería [%s]: la función de Scheme devolvió algo que "
 "no es una lista\n"
 
-#: src/s_clib.c:740
+#: libgeda/src/s_clib.c:741
 #, c-format
 msgid "Non-string symbol name while scanning library [%s]\n"
 msgstr ""
 "Se ha encontrado un nombre de símbolo que no es una cadena de texto al "
 "buscar en la librería [%s]\n"
 
-#: src/s_clib.c:895 src/s_clib.c:942
+#: libgeda/src/s_clib.c:900 libgeda/src/s_clib.c:947
 msgid "Cannot add library: name not specified\n"
 msgstr "No se puede añadir la librería: nombre sin especificar\n"
 
-#: src/s_clib.c:902
+#: libgeda/src/s_clib.c:907
 #, c-format
 msgid ""
 "Cannot add library [%s]: both 'list' and 'get' commands must be specified.\n"
@@ -713,50 +713,50 @@ msgstr ""
 "No se puede añadir la librería [%s]: se tienen que especificar los comandos "
 "'list' y 'get'.\n"
 
-#: src/s_clib.c:950
+#: libgeda/src/s_clib.c:955
 #, c-format
 msgid "Cannot add Scheme-library [%s]: callbacks must be closures\n"
 msgstr ""
 "No se puede añadir la librería de Scheme [%s]: las funciones de llamada "
 "deben ser cierres (closures)\n"
 
-#: src/s_clib.c:1077
+#: libgeda/src/s_clib.c:1082
 #, c-format
 msgid "Failed to load symbol from file [%s]: %s\n"
 msgstr "Error al cargar símbolo desde el archivo [%s]: %s\n"
 
-#: src/s_clib.c:1135
+#: libgeda/src/s_clib.c:1142
 #, c-format
 msgid "Failed to load symbol data [%s] from source [%s]\n"
 msgstr "Error al cargar los datos del símbolo [%s] desde la fuente [%s]\n"
 
-#: src/s_clib.c:1360
+#: libgeda/src/s_clib.c:1373
 #, c-format
 msgid "Component [%s] was not found in the component library\n"
 msgstr "No se ha encontrado el componente [%s] en la librería de componentes\n"
 
-#: src/s_clib.c:1366
+#: libgeda/src/s_clib.c:1379
 #, c-format
 msgid "More than one component found with name [%s]\n"
 msgstr "Se ha encontrado más de un componente con el nombre [%s]\n"
 
-#: src/s_color.c:206
+#: libgeda/src/s_color.c:206
 msgid "Color index out of range"
 msgstr ""
 
-#: src/s_color.c:261
+#: libgeda/src/s_color.c:261
 msgid "Color map entry must be a two-element list"
 msgstr ""
 
-#: src/s_color.c:269
+#: libgeda/src/s_color.c:269
 msgid "Index in color map entry must be an integer"
 msgstr ""
 
-#: src/s_color.c:295
+#: libgeda/src/s_color.c:295
 msgid "Value in color map entry must be #f or a string"
 msgstr ""
 
-#: src/s_hierarchy.c:90
+#: libgeda/src/s_hierarchy.c:90
 #, c-format
 msgid ""
 "hierarchy loop detected while visiting page:\n"
@@ -765,46 +765,51 @@ msgstr ""
 "Se ha detectado un bucle de jerarquía al cargar la página:\n"
 "  \"%s\"\n"
 
-#: src/s_hierarchy.c:185
+#: libgeda/src/s_hierarchy.c:185
 msgid "There are no schematics above the current one!\n"
 msgstr "¡No hay más esquemas en un nivel de jerarquía superior al actual!\n"
 
-#: src/s_hierarchy.c:266
+#: libgeda/src/s_hierarchy.c:266
 #, c-format
 msgid "ERROR in s_hierarchy_traverse: schematic not found: %s\n"
 msgstr "ERROR: en s_hierarchy_traverse: no se encuentra el esquema %s\n"
 
-#: src/s_page.c:167
+#: libgeda/src/s_page.c:167
 #, c-format
 msgid "s_page_delete: Can't get the real filename of %s."
 msgstr "s_page_delete: No se puede encontrar el nombre real del archivo %s."
 
-#: src/s_page.c:178
+#: libgeda/src/s_page.c:178
 #, c-format
 msgid "s_page_delete: Unable to delete backup file %s."
 msgstr ""
 "s_page_delete: No se ha podido borrar el archivo de copia de seguridad %s."
 
-#: src/s_page.c:380
+#: libgeda/src/s_page.c:380
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "Guardado [%s]\n"
 
-#: src/s_page.c:386
+#: libgeda/src/s_page.c:386
 #, c-format
 msgid "Could NOT save [%s]\n"
 msgstr "No se ha podido guardar [%s]\n"
 
-#: src/s_slib.c:181
+#: libgeda/src/s_slib.c:181
 #, c-format
 msgid "Found [%s]\n"
 msgstr "Encontrado [%s]\n"
 
-#: src/s_slib.c:191
+#: libgeda/src/s_slib.c:191
 #, c-format
 msgid "Could not find [%s] in any SourceLibrary\n"
 msgstr "No se ha podido encontrar [%s] en ninguna librería fuente\n"
 
+#~ msgid "Could not load question font char -- check font-directory keyword\n"
+#~ msgstr ""
+#~ "No se puede cargar el carácter de interrogación -- compruebe la variable "
+#~ "font-directory\n"
+
 #~ msgid "Read ~/.gEDA/%s file [%%s]\n"
 #~ msgstr "Leído el archivo ~/.gEDA/%s [%%s]\n"
 
diff --git a/libgeda/po/nl.po b/libgeda/po/nl.po
index 28d9139..d1ad821 100644
--- a/libgeda/po/nl.po
+++ b/libgeda/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libgeda\n"
 "Report-Msgid-Bugs-To: geda-bug@xxxxxxxx\n"
-"POT-Creation-Date: 2009-06-18 11:49+0100\n"
+"POT-Creation-Date: 2009-08-07 22:55+0100\n"
 "PO-Revision-Date: 2009-01-02 08:04+0100\n"
 "Last-Translator: Bert Timmerman <bert.timmerman@xxxxxxxxx>\n"
 "Language-Team: geda-dev <geda-dev@xxxxxxxx>\n"
@@ -17,42 +17,42 @@ msgstr ""
 "X-Poedit-Language: Dutch\n"
 "X-Poedit-Country: NETHERLANDS\n"
 
-#: data/libgeda.xml.in.h:3
+#: libgeda/data/libgeda.xml.in.h:3
 msgid "gEDA circuit schematic"
 msgstr "gEDA schakeling schema"
 
-#: data/libgeda.xml.in.h:4
+#: libgeda/data/libgeda.xml.in.h:4
 msgid "gEDA schematic symbol"
 msgstr "gEDA schema symbool"
 
-#: data/libgeda.xml.in.h:5
+#: libgeda/data/libgeda.xml.in.h:5
 msgid "gEDA gsch2pcb project"
 msgstr "gEDA gsch2pcb project"
 
-#: data/x-geda-gsch2pcb-project.desktop.in.h:3
+#: libgeda/data/x-geda-gsch2pcb-project.desktop.in.h:3
 msgid "gEDA Gsch2pcb Project"
 msgstr "gEDA Gsch2pcb Project"
 
-#: data/x-geda-schematic.desktop.in.h:3
+#: libgeda/data/x-geda-schematic.desktop.in.h:3
 msgid "gEDA Circuit Schematic"
 msgstr "gEDA Schakeling Schema"
 
-#: data/x-geda-symbol.desktop.in.h:3
+#: libgeda/data/x-geda-symbol.desktop.in.h:3
 msgid "gEDA Schematic Symbol"
 msgstr "gEDA Schema Symbool"
 
 # ! \todo Misschien kunnen wij doorgaan in plaats van compleet falen? In elk geval, gracieus falen is beter dan het programma om zeep helpen, wat gewoonlijk gebeurt zou zijn...
-#: src/a_basic.c:185
+#: libgeda/src/a_basic.c:181
 #, c-format
 msgid "o_save_objects: object %p has unknown type '%c'\n"
 msgstr "o_save_objects: object %p heeft een onbekend type '%c'\n"
 
-#: src/a_basic.c:235
+#: libgeda/src/a_basic.c:231
 #, c-format
 msgid "o_save: Could not open [%s]\n"
 msgstr "o_save: Kan [%s] niet openen\n"
 
-#: src/a_basic.c:440
+#: libgeda/src/a_basic.c:436
 #, c-format
 msgid ""
 "Read unexpected embedded symbol start marker in [%s] :\n"
@@ -63,7 +63,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:469
+#: libgeda/src/a_basic.c:465
 #, c-format
 msgid ""
 "Read unexpected embedded symbol end marker in [%s] :\n"
@@ -74,7 +74,7 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/a_basic.c:498
+#: libgeda/src/a_basic.c:494
 #, c-format
 msgid ""
 "Read an old format sym/sch file!\n"
@@ -85,7 +85,7 @@ msgstr ""
 "Voer g[sym|sch]update uit op:\n"
 "[%s]\n"
 
-#: src/a_basic.c:504
+#: libgeda/src/a_basic.c:500
 #, c-format
 msgid ""
 "Read garbage in [%s] :\n"
@@ -96,17 +96,17 @@ msgstr ""
 ">>\n"
 "%s<<\n"
 
-#: src/f_basic.c:123 src/f_basic.c:136
+#: libgeda/src/f_basic.c:123 libgeda/src/f_basic.c:136
 #, c-format
 msgid "Failed to stat [%s]: %s"
 msgstr "Status niet gelukt [%s]: %s"
 
-#: src/f_basic.c:219
+#: libgeda/src/f_basic.c:219
 #, c-format
 msgid "Cannot find file %s: %s"
 msgstr "Kan bestand %s niet vinden: %s"
 
-#: src/f_basic.c:257
+#: libgeda/src/f_basic.c:257
 #, c-format
 msgid ""
 "\n"
@@ -119,11 +119,11 @@ msgstr ""
 " %s.\n"
 "\n"
 
-#: src/f_basic.c:259
+#: libgeda/src/f_basic.c:259
 msgid "I could not guess if it is newer, so you have to do it manually.\n"
 msgstr "Ik kan niet raden of het nieuwer is, je moet het dus handmatig doen.\n"
 
-#: src/f_basic.c:261
+#: libgeda/src/f_basic.c:261
 msgid ""
 "The backup copy is newer than the schematic, so it seems you should load it "
 "instead of the original file.\n"
@@ -131,7 +131,7 @@ msgstr ""
 "De reservekopie is nieuwer dan het schema, het lijkt erop dat je deze zou "
 "moeten laden in plaats van het orginele bestand.\n"
 
-#: src/f_basic.c:263
+#: libgeda/src/f_basic.c:263
 msgid ""
 "Gschem usually makes backup copies automatically, and this situation happens "
 "when it crashed or it was forced to exit abruptly.\n"
@@ -140,7 +140,7 @@ msgstr ""
 "voor wanneer er een crash is of wanneer er een abrupte gedwongen beeindiging "
 "was.\n"
 
-#: src/f_basic.c:266
+#: libgeda/src/f_basic.c:266
 msgid ""
 "\n"
 "Run gschem and correct the situation.\n"
@@ -150,237 +150,241 @@ msgstr ""
 "Voer gschem uit en corrigeer de situatie.\n"
 "\n"
 
-#: src/f_basic.c:375
+#: libgeda/src/f_basic.c:375
 #, c-format
 msgid "Can't get the real filename of %s."
 msgstr "Kan de werkelijke bestandsnaam van %s niet krijgen."
 
-#: src/f_basic.c:395
+#: libgeda/src/f_basic.c:395
 #, c-format
 msgid "Could NOT set previous backup file [%s] read-write\n"
 msgstr "Kan vorige reservekopie [%s] NIET op lezen-schrijven instellen\n"
 
-#: src/f_basic.c:401
+#: libgeda/src/f_basic.c:401
 #, c-format
 msgid "Can't save backup file: %s."
 msgstr "Kan reservekopie niet opslaan: %s."
 
-#: src/f_basic.c:411
+#: libgeda/src/f_basic.c:411
 #, c-format
 msgid "Could NOT set backup file [%s] readonly\n"
 msgstr "Kan reservekopie [%s] NIET op alleen-lezen instellen\n"
 
-#: src/f_basic.c:700
+#: libgeda/src/f_basic.c:700
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/f_print.c:117
+#: libgeda/src/f_print.c:118
 msgid "Unable to get time of day in f_print_header()\n"
 msgstr "Kan geen tijd van de dag krijgen in f_print_header()\n"
 
-#: src/f_print.c:159
+#: libgeda/src/f_print.c:160
 #, c-format
 msgid "Unable to open the prolog file `%s' for reading in f_print_header()\n"
 msgstr ""
 "Kan het prolog bestand `%s' niet openen tijdens lezen in f_print_header()\n"
 
-#: src/f_print.c:176
+#: libgeda/src/f_print.c:177
 #, c-format
 msgid "Error during reading of the prolog file `%s' in f_print_header()\n"
 msgstr "Fout tijdens het lezen van prolog bestand `%s' in f_print_header()\n"
 
-#: src/f_print.c:182
+#: libgeda/src/f_print.c:183
 msgid ""
 "Error during writing of the output postscript file in f_print_header()\n"
 msgstr ""
 "Fout tijdens het schrijven van het postscript uitvoerbestand in "
 "f_print_header()\n"
 
-#: src/f_print.c:195
+#: libgeda/src/f_print.c:196
 msgid "Giving up on printing\n"
 msgstr "Geef het afdrukken op\n"
 
-#: src/f_print.c:390
+#: libgeda/src/f_print.c:391
 #, c-format
 msgid "Could not open [%s] for printing\n"
 msgstr "Kan [%s] niet openen voor afdrukken\n"
 
-#: src/f_print.c:423
+#: libgeda/src/f_print.c:424
 #, c-format
 msgid "Could not execute command [%s] for printing\n"
 msgstr "Kan opdracht [%s] niet uitvoeren voor afdrukken\n"
 
-#: src/f_print.c:698
+#: libgeda/src/f_print.c:699
 msgid "Too many UTF-8 characters, cannot print\n"
 msgstr "Te veel UTF-8 karakters, kan niet afdrukken\n"
 
-#: src/g_basic.c:101
+#: libgeda/src/g_basic.c:101
 #, c-format
 msgid "%s:%i:%i: %s\n"
 msgstr "%s:%i:%i: %s\n"
 
-#: src/g_basic.c:108
+#: libgeda/src/g_basic.c:108
 #, c-format
 msgid "Unknown file: %s\n"
 msgstr "Onbekend bestand: %s\n"
 
 # Geen stapel, kan geen fout informatie laten zien
-#: src/g_basic.c:114
+#: libgeda/src/g_basic.c:114
 #, c-format
 msgid "Evaluation failed: %s\n"
 msgstr "Evaluatie faalt: %s\n"
 
-#: src/g_basic.c:115
+#: libgeda/src/g_basic.c:115
 msgid "Enable debugging for more detailed information\n"
 msgstr "Schakel foutzoeken in voor meer gedetaileerde informatie\n"
 
-#: src/g_basic.c:258
+#: libgeda/src/g_basic.c:258
 #, c-format
 msgid "Could not find [%s] for interpretation\n"
 msgstr "Kan [%s] niet vinden voor interpretatie\n"
 
 # We hebben deze al ingelezen.
-#: src/g_rc.c:136
+#: libgeda/src/g_rc.c:136
 #, c-format
 msgid "RC file [%s] already read in.\n"
 msgstr "RC bestand [%s] is reeds ingelezen.\n"
 
-#: src/g_rc.c:181
+#: libgeda/src/g_rc.c:181
 #, fuzzy, c-format
 msgid "Read system config file [%%s]\n"
 msgstr "Lees system-%s bestand [%%s]\n"
 
-#: src/g_rc.c:182
+#: libgeda/src/g_rc.c:182
 #, fuzzy, c-format
 msgid "Did not find required system config file [%%s]\n"
 msgstr "Benodigde system-%s bestand is niet gevonden [%%s]\n"
 
-#: src/g_rc.c:216
+#: libgeda/src/g_rc.c:216
 #, fuzzy, c-format
 msgid "Read user config file [%%s]\n"
 msgstr "Lees gespecificeerd %s bestand [%%s]\n"
 
-#: src/g_rc.c:217
+#: libgeda/src/g_rc.c:217
 #, fuzzy, c-format
 msgid "Did not find optional user config file [%%s]\n"
 msgstr "Kan geen optioneel plaatselijk %s bestand [%%s] vinden\n"
 
-#: src/g_rc.c:248
+#: libgeda/src/g_rc.c:248
 #, fuzzy, c-format
 msgid "Read local config file [%%s]\n"
 msgstr "Lees plaatselijk %s bestand [%%s]\n"
 
-#: src/g_rc.c:249
+#: libgeda/src/g_rc.c:249
 #, fuzzy, c-format
 msgid "Did not find optional local config file [%%s]\n"
 msgstr "Kan geen optioneel plaatselijk %s bestand [%%s] vinden\n"
 
-#: src/g_rc.c:286
+#: libgeda/src/g_rc.c:286
 #, c-format
 msgid "Read specified %s file [%%s]\n"
 msgstr "Lees gespecificeerd %s bestand [%%s]\n"
 
-#: src/g_rc.c:288
+#: libgeda/src/g_rc.c:288
 #, c-format
 msgid "Did not find specified %s file [%%s]\n"
 msgstr "Kan geen gespecificeerd %s bestand [%%s] vinden\n"
 
 # ! \todo deze twee zijn eigenlijk het zelfde. inefficient!
-#: src/g_rc.c:338
+#: libgeda/src/g_rc.c:338
 #, c-format
 msgid "Could not find any %s file!\n"
 msgstr "Kan geen enkel %s bestand vinden!\n"
 
-#: src/g_rc.c:984
+#: libgeda/src/g_rc.c:984
 msgid ""
 "WARNING: using a string for 'always-promote-attributes' is deprecated. Use a "
 "list of strings instead\n"
 msgstr ""
 
-#: src/o_arc_basic.c:282
+#: libgeda/src/o_arc_basic.c:275
 #, c-format
 msgid "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"
 msgstr "Boog met een straal van nul gevonden [ %c %d, %d, %d, %d, %d, %d ]\n"
 
-#: src/o_arc_basic.c:287 src/o_box_basic.c:301 src/o_bus_basic.c:188
-#: src/o_circle_basic.c:293 src/o_line_basic.c:269 src/o_net_basic.c:180
-#: src/o_path_basic.c:199 src/o_pin_basic.c:193 src/o_text_basic.c:1155
+#: libgeda/src/o_arc_basic.c:280 libgeda/src/o_box_basic.c:294
+#: libgeda/src/o_bus_basic.c:188 libgeda/src/o_circle_basic.c:286
+#: libgeda/src/o_line_basic.c:262 libgeda/src/o_net_basic.c:180
+#: libgeda/src/o_path_basic.c:192 libgeda/src/o_pin_basic.c:193
+#: libgeda/src/o_text_basic.c:1203
 #, c-format
 msgid "Found an invalid color [ %s ]\n"
 msgstr "Ongeldige kleur [ %s ] gevonden\n"
 
-#: src/o_arc_basic.c:288 src/o_box_basic.c:302 src/o_bus_basic.c:189
-#: src/o_circle_basic.c:294 src/o_line_basic.c:270 src/o_net_basic.c:181
-#: src/o_path_basic.c:200 src/o_pin_basic.c:194 src/o_text_basic.c:1156
+#: libgeda/src/o_arc_basic.c:281 libgeda/src/o_box_basic.c:295
+#: libgeda/src/o_bus_basic.c:189 libgeda/src/o_circle_basic.c:287
+#: libgeda/src/o_line_basic.c:263 libgeda/src/o_net_basic.c:181
+#: libgeda/src/o_path_basic.c:193 libgeda/src/o_pin_basic.c:194
+#: libgeda/src/o_text_basic.c:1204
 #, fuzzy
 msgid "Setting color to default color\n"
 msgstr "Stel de kleur in op WIT \n"
 
-#: src/o_attrib.c:146
+#: libgeda/src/o_attrib.c:123
 msgid "Attempt to attach non text item as an attribute!\n"
 msgstr "Probeerde een niet text item toe te voegen als een attribuut!\n"
 
-#: src/o_attrib.c:151
+#: libgeda/src/o_attrib.c:128
 #, c-format
 msgid "Attempt to attach attribute [%s] to more than one object\n"
 msgstr "Probeerde attribuut [%s] aan meer dan een object toe te voegen\n"
 
-#: src/o_attrib.c:763
+#: libgeda/src/o_attrib.c:740
 msgid "Did not find slotdef=#:#,#,#... attribute\n"
 msgstr "Kan slotdef=#:#,#,#... attribuut niet vinden\n"
 
 # Geen gebruikelijke slotdef=#:... gevonden, doe een waarschuwing in het log
-#: src/o_attrib.c:769
+#: libgeda/src/o_attrib.c:746
 msgid "Improper slotdef syntax: missing \":\".\n"
 msgstr "Ongewenst slotdef syntax: \":\" ontbreekt.\n"
 
-#: src/o_attrib.c:784
+#: libgeda/src/o_attrib.c:761
 msgid "Did not find proper slotdef=#:#,#,#... attribute\n"
 msgstr "Kan het gewenste slotdef=#:#,#,#... attribuut niet vinden\n"
 
-#: src/o_attrib.c:814
+#: libgeda/src/o_attrib.c:791
 msgid "component missing pinseq= attribute\n"
 msgstr "komponent mist het pinseq= attribuut\n"
 
-#: src/o_basic.c:199 src/o_basic.c:211
+#: libgeda/src/o_basic.c:199 libgeda/src/o_basic.c:211
 msgid "Invalid space specified, setting to 100\n"
 msgstr "Ongeldige ruimte gespecificeerd, ingesteld op 100\n"
 
-#: src/o_basic.c:207
+#: libgeda/src/o_basic.c:207
 msgid "Invalid length specified, setting to 100\n"
 msgstr "Ongeldige lengte gespecificeerd, ingesteld op 100\n"
 
-#: src/o_box_basic.c:296
+#: libgeda/src/o_box_basic.c:289
 #, c-format
 msgid "Found a zero width/height box [ %c %d %d %d %d %d ]\n"
 msgstr ""
 "Rechthoek met een breedte/hoogte van nul gevonden [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:179
+#: libgeda/src/o_bus_basic.c:179
 #, c-format
 msgid "Found a zero length bus [ %c %d %d %d %d %d ]\n"
 msgstr "Bus met een lengte van nul gevonden [ %c %d %d %d %d %d ]\n"
 
-#: src/o_bus_basic.c:194
+#: libgeda/src/o_bus_basic.c:194
 #, c-format
 msgid "Found an invalid bus ripper direction [ %s ]\n"
 msgstr "Ongeldige bus ripper richting gevonden [ %s ]\n"
 
-#: src/o_bus_basic.c:195
+#: libgeda/src/o_bus_basic.c:195
 msgid "Resetting direction to neutral (no direction)\n"
 msgstr "Neutrale richting ingesteld (geen richting)\n"
 
-#: src/o_circle_basic.c:204
+#: libgeda/src/o_circle_basic.c:197
 msgid "Null radius circles are not allowed\n"
 msgstr "Cirkels met een radius van nul zijn niet toegestaan\n"
 
-#: src/o_circle_basic.c:287
+#: libgeda/src/o_circle_basic.c:280
 #, c-format
 msgid "Found a zero radius circle [ %c %d %d %d %d ]\n"
 msgstr "Een cirkel met een radius van nul gevonden [ %c %d %d %d %d ]\n"
 
-#: src/o_complex_basic.c:457
+#: libgeda/src/o_complex_basic.c:457
 #, c-format
 msgid ""
 "Component not found:\n"
@@ -389,13 +393,13 @@ msgstr ""
 "Komponent niet gevonden:\n"
 " %s"
 
-#: src/o_complex_basic.c:671
+#: libgeda/src/o_complex_basic.c:671
 #, c-format
 msgid "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"
 msgstr ""
 "Een komponent met een ongeldige rotatie gevonden [ %c %d %d %d %d %d %s ]\n"
 
-#: src/o_complex_basic.c:683
+#: libgeda/src/o_complex_basic.c:683
 #, c-format
 msgid ""
 "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"
@@ -403,7 +407,7 @@ msgstr ""
 "Een komponent met een ongeldige spiegel vlag gevonden [ %c %d %d %d %d %d %"
 "s ]\n"
 
-#: src/o_complex_basic.c:1307
+#: libgeda/src/o_complex_basic.c:1027
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -412,7 +416,7 @@ msgstr ""
 "WAARSCHUWING: Symbool versie zoek fout bij refdes %s:\n"
 "\tKan symboolbestand niet doorzoeken symversion=%s\n"
 
-#: src/o_complex_basic.c:1311
+#: libgeda/src/o_complex_basic.c:1031
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -421,7 +425,7 @@ msgstr ""
 "WAARSCHUWING: Symbool versie zoek fout bij refdes %s:\n"
 "\tKan symboolbestand niet doorzoeken symversion=\n"
 
-#: src/o_complex_basic.c:1327
+#: libgeda/src/o_complex_basic.c:1047
 #, c-format
 msgid ""
 "WARNING: Symbol version parse error on refdes %s:\n"
@@ -430,7 +434,7 @@ msgstr ""
 "WAARSCHUWING: Symbool versie zoek fout bij refdes %s:\n"
 "\tKan bijgevoegd symboolbestand niet doorzoeken symversion=%s\n"
 
-#: src/o_complex_basic.c:1352
+#: libgeda/src/o_complex_basic.c:1072
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -441,7 +445,7 @@ msgstr ""
 "\tsymversion=%s bijgevoegd aan bedoelde symbool, maar geen symversion= in "
 "het symbool bestand\n"
 
-#: src/o_complex_basic.c:1366
+#: libgeda/src/o_complex_basic.c:1086
 #, c-format
 msgid ""
 "WARNING: Symbol version mismatch on refdes %s (%s):\n"
@@ -450,17 +454,17 @@ msgstr ""
 "WAARSCHUWING: Symbool versie fout bij refdes %s (%s):\n"
 "\tSymbool in bibliotheek is nieuwer dan bedoelde symbool\n"
 
-#: src/o_complex_basic.c:1394
+#: libgeda/src/o_complex_basic.c:1114
 #, c-format
 msgid "\tMAJOR VERSION CHANGE (file %.3f, instantiated %.3f, %s)!\n"
 msgstr "\tGROTE VERSIE VERANDERING (bestand %.3f, bedoeld %.3f, %s)!\n"
 
-#: src/o_complex_basic.c:1412
+#: libgeda/src/o_complex_basic.c:1132
 #, c-format
 msgid "\tMinor version change (file %.3f, instantiated %.3f)\n"
 msgstr "\tKleine versie verandering (bestand %.3f, bedoeld %.3f)!\n"
 
-#: src/o_complex_basic.c:1423
+#: libgeda/src/o_complex_basic.c:1143
 #, c-format
 msgid ""
 "WARNING: Symbol version oddity on refdes %s:\n"
@@ -469,13 +473,13 @@ msgstr ""
 "WAARSCHUWING: Symbool versie afwijking bij refdes %s:\n"
 "\tbedoeld symbool is nieuwer dan het symbool in de bibliotheek\n"
 
-#: src/o_embed.c:58
+#: libgeda/src/o_embed.c:56
 #, c-format
 msgid "Component [%s] has been embedded\n"
 msgstr "Komponent [%s] is ingevoegd\n"
 
 # symbool niet gevonden in de symbolenbibliotheek: signaleer een fout
-#: src/o_embed.c:98
+#: libgeda/src/o_embed.c:96
 #, c-format
 msgid ""
 "Could not find component [%s], while trying to unembed. Component is still "
@@ -484,101 +488,104 @@ msgstr ""
 "Kan komponent [%s] niet vinden, tijdens het uitvoegen. Komponent is nog "
 "steeds ingevoegd\n"
 
-#: src/o_embed.c:106
+#: libgeda/src/o_embed.c:104
 #, c-format
 msgid "Component [%s] has been successfully unembedded\n"
 msgstr "Komponent [%s] is succesvol uitgevoegd\n"
 
-#: src/o_line_basic.c:264
+#: libgeda/src/o_line_basic.c:257
 #, c-format
 msgid "Found a zero length line [ %c %d %d %d %d %d ]\n"
 msgstr "Lijn met een lengte van nul gevonden [ %c %d %d %d %d %d ]\n"
 
-#: src/o_net_basic.c:170
+#: libgeda/src/o_net_basic.c:170
 #, c-format
 msgid "Found a zero length net [ %c %d %d %d %d %d ]\n"
 msgstr "Net met een lengte van nul gevonden [ %c %d %d %d %d %d ]\n"
 
-#: src/o_picture.c:80
+#: libgeda/src/o_picture.c:75
 #, c-format
 msgid "Error reading picture definition line: %s.\n"
 msgstr "Fout bij het lezen van afbeelding definitie regel: %s.\n"
 
-#: src/o_picture.c:94
+#: libgeda/src/o_picture.c:89
 #, c-format
 msgid "Found a zero width/height picture [ %c %d %d %d %d ]\n"
 msgstr ""
 "Afbeelding met een breedte/hoogte van nul gevonden [ %c %d %d %d %d ]\n"
 
-#: src/o_picture.c:99
+#: libgeda/src/o_picture.c:94
 #, c-format
 msgid "Found a picture with a wrong 'mirrored' parameter: %c.\n"
 msgstr "Afbeelding met een verkeerde 'gespiegelde' parameter gevonden: %c.\n"
 
-#: src/o_picture.c:101
+#: libgeda/src/o_picture.c:96
 msgid "Setting mirrored to 0\n"
 msgstr "Spiegelen op 0 ingesteld\n"
 
-#: src/o_picture.c:106
+#: libgeda/src/o_picture.c:101
 #, c-format
 msgid "Found a picture with a wrong 'embedded' parameter: %c.\n"
 msgstr "Afbeelding met een verkeerd 'ingevoegde' waarde gevonden: %c.\n"
 
-#: src/o_picture.c:108
+#: libgeda/src/o_picture.c:103
 msgid "Setting embedded to 0\n"
 msgstr "Invoegen op 0 ingesteld\n"
 
-#: src/o_picture.c:120
+#: libgeda/src/o_picture.c:115
 #, c-format
 msgid "Found an unsupported picture angle [ %d ]\n"
 msgstr "Niet ondersteunde afbeelding hoek [ %d ] gevonden\n"
 
-#: src/o_picture.c:121 src/o_text_basic.c:1127
+#: libgeda/src/o_picture.c:116 libgeda/src/o_text_basic.c:1175
 msgid "Setting angle to 0\n"
 msgstr "Hoek op 0 ingesteld\n"
 
-#: src/o_picture.c:156 src/o_picture.c:167 src/o_picture.c:924
+#: libgeda/src/o_picture.c:151 libgeda/src/o_picture.c:162
+#: libgeda/src/o_picture.c:915
 #, c-format
 msgid "Failed to load image from embedded data [%s]: %s\n"
 msgstr "Laden van afbeelding uit ingesloten data faalde [%s]: %s\n"
 
-#: src/o_picture.c:157
+#: libgeda/src/o_picture.c:152
 msgid "Base64 decoding failed."
 msgstr "Base64 decodering faalde."
 
-#: src/o_picture.c:158 src/o_picture.c:169 src/o_picture.c:926
+#: libgeda/src/o_picture.c:153 libgeda/src/o_picture.c:164
+#: libgeda/src/o_picture.c:917
 msgid "Falling back to file loading. Picture unembedded.\n"
 msgstr "Val terug op het laden van bestand. Afbeelding uitgevoegd.\n"
 
-#: src/o_picture.c:180 src/o_picture.c:912 src/o_picture.c:961
+#: libgeda/src/o_picture.c:175 libgeda/src/o_picture.c:903
+#: libgeda/src/o_picture.c:952
 #, c-format
 msgid "Failed to load image from file [%s]: %s\n"
 msgstr "Laden van afbeelding uit bestand faalde [%s]: %s\n"
 
-#: src/o_picture.c:191
+#: libgeda/src/o_picture.c:186
 msgid "Loading warning picture.\n"
 msgstr "Laad de waarschuwing afbeelding.\n"
 
-#: src/o_picture.c:197
+#: libgeda/src/o_picture.c:192
 #, c-format
 msgid "Error loading picture from file: %s.\n"
 msgstr "Fout bij het laden van een afbeelding uit een bestand: %s.\n"
 
-#: src/o_picture.c:257
+#: libgeda/src/o_picture.c:252
 msgid "ERROR: o_picture_save: unable to encode the picture.\n"
 msgstr "FOUT: o_picture_save: kan de afbeelding niet coderen.\n"
 
-#: src/o_picture.c:939
+#: libgeda/src/o_picture.c:930
 #, c-format
 msgid "Picture [%s] has been embedded\n"
 msgstr "Afbeelding [%s] is ingevoegd\n"
 
-#: src/o_picture.c:979
+#: libgeda/src/o_picture.c:970
 #, c-format
 msgid "Picture [%s] has been unembedded\n"
 msgstr "Afbeelding [%s] is uitgevoegd\n"
 
-#: src/o_pin_basic.c:180
+#: libgeda/src/o_pin_basic.c:180
 msgid ""
 "Found a pin which did not have the whichone field set.\n"
 "Verify and correct manually.\n"
@@ -586,70 +593,64 @@ msgstr ""
 "Pen die geen whichone veld ingesteld heeft gevonden.\n"
 "Verifieer en corigeer handmatig.\n"
 
-#: src/o_pin_basic.c:183
+#: libgeda/src/o_pin_basic.c:183
 #, c-format
 msgid "Found an invalid whichend on a pin (reseting to zero): %d\n"
 msgstr "Pen met een ongeldige whichend gevonden (instellen op nul): %d\n"
 
-#: src/o_pin_basic.c:189
+#: libgeda/src/o_pin_basic.c:189
 #, c-format
 msgid "Found a zero length pin: [ %s ]\n"
 msgstr "Pen met een lengte van nul gevonden: [ %s ]\n"
 
-#: src/o_text_basic.c:303
+#: libgeda/src/o_text_basic.c:362
 #, c-format
 msgid "Could not find character '%s' definition.\n"
 msgstr "Kan karakter '%s' definitie niet vinden.\n"
 
-#: src/o_text_basic.c:308
-#, c-format
-msgid "Could not load question font char -- check font-directory keyword\n"
-msgstr ""
-"Kan vraag font karakter niet laden -- controleer font-map sleutelwoord\n"
-
-#: src/o_text_basic.c:1113
+#: libgeda/src/o_text_basic.c:1161
 #, c-format
 msgid "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Tekst string met een afmeting van nul gevonden [ %c %d %d %d %d %d %d %d %"
 "d ]\n"
 
-#: src/o_text_basic.c:1125
+#: libgeda/src/o_text_basic.c:1173
 #, c-format
 msgid "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr "Niet ondersteunde teksthoek gevonden [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1147
+#: libgeda/src/o_text_basic.c:1195
 #, c-format
 msgid "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"
 msgstr ""
 "Niet ondersteunde tekst uitlijning gevonden [ %c %d %d %d %d %d %d %d %d ]\n"
 
-#: src/o_text_basic.c:1149
+#: libgeda/src/o_text_basic.c:1197
 msgid "Setting alignment to LOWER_LEFT\n"
 msgstr "Uitlijning op LINKS_ONDER ingesteld\n"
 
-#: src/o_text_basic.c:1238
+#: libgeda/src/o_text_basic.c:1286
 #, c-format
 msgid "Failed to validate utf-8 character in font definition: \"%s\".\n"
 msgstr "Valideren van utf-8 karakter in font definitie: \"%s\" faalde.\n"
 
-#: src/s_clib.c:464
+#: libgeda/src/s_clib.c:464
 #, c-format
 msgid "Library command failed [%s]: %s\n"
 msgstr "Bibliotheek opdracht faalde [%s]: %s\n"
 
-#: src/s_clib.c:469
+#: libgeda/src/s_clib.c:469
 #, c-format
 msgid "Library command failed [%s]: Uncaught signal %i.\n"
 msgstr "Bibliotheek opdracht faalde [%s]: Niet opgevangen signaal %i.\n"
 
-#: src/s_clib.c:473
+#: libgeda/src/s_clib.c:473
 #, c-format
 msgid "Library command failed [%s]\n"
 msgstr "Bibliotheek opdracht faalde [%s]\n"
 
-#: src/s_clib.c:474
+#: libgeda/src/s_clib.c:474
 #, c-format
 msgid ""
 "Error output was:\n"
@@ -658,34 +659,34 @@ msgstr ""
 "Fout uitvoer was:\n"
 "%s\n"
 
-#: src/s_clib.c:560
+#: libgeda/src/s_clib.c:560
 #, c-format
 msgid "Library name [%s] already in use.  Using [%s].\n"
 msgstr "Bibliotheeknaam [%s] is al in gebruik.  Gebruik nu [%s].\n"
 
-#: src/s_clib.c:597
+#: libgeda/src/s_clib.c:597
 #, c-format
 msgid "Failed to open directory [%s]: %s\n"
 msgstr "Openen van directory faalde [%s]: %s\n"
 
-#: src/s_clib.c:732
+#: libgeda/src/s_clib.c:733
 #, c-format
 msgid "Failed to scan library [%s]: Scheme function returned non-list\n"
 msgstr ""
 "Doorzoeken van bibliotheek [%s] faalde: Scheme functie retourneerde non-"
 "list\n"
 
-#: src/s_clib.c:740
+#: libgeda/src/s_clib.c:741
 #, c-format
 msgid "Non-string symbol name while scanning library [%s]\n"
 msgstr ""
 "Niet string symboolnaam tijdens het doorzoeken van de bibliotheek [%s]\n"
 
-#: src/s_clib.c:895 src/s_clib.c:942
+#: libgeda/src/s_clib.c:900 libgeda/src/s_clib.c:947
 msgid "Cannot add library: name not specified\n"
 msgstr "Kan bibliotheek niet toevoegen: naam niet gespecificeerd\n"
 
-#: src/s_clib.c:902
+#: libgeda/src/s_clib.c:907
 #, c-format
 msgid ""
 "Cannot add library [%s]: both 'list' and 'get' commands must be specified.\n"
@@ -693,51 +694,51 @@ msgstr ""
 "Kan bibliotheek niet toevoegen [%s]: zowel 'list' en 'get' opdrachten moeten "
 "gespecificeerd zijn.\n"
 
-#: src/s_clib.c:950
+#: libgeda/src/s_clib.c:955
 #, c-format
 msgid "Cannot add Scheme-library [%s]: callbacks must be closures\n"
 msgstr ""
 "Kan scheme bibliotheek niet toevoegen [%s]: callbacks moeten afsluitingen "
 "zijn\n"
 
-#: src/s_clib.c:1077
+#: libgeda/src/s_clib.c:1082
 #, c-format
 msgid "Failed to load symbol from file [%s]: %s\n"
 msgstr "Laden van symbool uit bestand faalde [%s]: %s\n"
 
-#: src/s_clib.c:1135
+#: libgeda/src/s_clib.c:1142
 #, c-format
 msgid "Failed to load symbol data [%s] from source [%s]\n"
 msgstr "Laden van symbool gegevens [%s] uit bron [%s] faalde\n"
 
-#: src/s_clib.c:1360
+#: libgeda/src/s_clib.c:1373
 #, c-format
 msgid "Component [%s] was not found in the component library\n"
 msgstr "Komponent [%s] is niet in de komponenten bibliotheek gevonden\n"
 
 # Meer dan een symbool
-#: src/s_clib.c:1366
+#: libgeda/src/s_clib.c:1379
 #, c-format
 msgid "More than one component found with name [%s]\n"
 msgstr "Meer dan een komponent gevonden met de naam [%s]\n"
 
-#: src/s_color.c:206
+#: libgeda/src/s_color.c:206
 msgid "Color index out of range"
 msgstr ""
 
-#: src/s_color.c:261
+#: libgeda/src/s_color.c:261
 msgid "Color map entry must be a two-element list"
 msgstr ""
 
-#: src/s_color.c:269
+#: libgeda/src/s_color.c:269
 msgid "Index in color map entry must be an integer"
 msgstr ""
 
-#: src/s_color.c:295
+#: libgeda/src/s_color.c:295
 msgid "Value in color map entry must be #f or a string"
 msgstr ""
 
-#: src/s_hierarchy.c:90
+#: libgeda/src/s_hierarchy.c:90
 #, c-format
 msgid ""
 "hierarchy loop detected while visiting page:\n"
@@ -746,45 +747,49 @@ msgstr ""
 "hierarchie lus gedetecteerd tijdens het bezoeken van pagina:\n"
 "  \"%s\"\n"
 
-#: src/s_hierarchy.c:185
+#: libgeda/src/s_hierarchy.c:185
 msgid "There are no schematics above the current one!\n"
 msgstr "Er zijn geen schema's boven de huidige!\n"
 
-#: src/s_hierarchy.c:266
+#: libgeda/src/s_hierarchy.c:266
 #, c-format
 msgid "ERROR in s_hierarchy_traverse: schematic not found: %s\n"
 msgstr "FOUT in s_hierarchy_traverse: schema niet gevonden: %s\n"
 
-#: src/s_page.c:167
+#: libgeda/src/s_page.c:167
 #, c-format
 msgid "s_page_delete: Can't get the real filename of %s."
 msgstr "s_page_delete: Kan de echte bestandsnaam van %s niet krijgen."
 
-#: src/s_page.c:178
+#: libgeda/src/s_page.c:178
 #, c-format
 msgid "s_page_delete: Unable to delete backup file %s."
 msgstr "s_page_delete: Niet mogelijk om reservekopie %s te verwijderen."
 
-#: src/s_page.c:380
+#: libgeda/src/s_page.c:380
 #, c-format
 msgid "Saved [%s]\n"
 msgstr "[%s] opgeslagen\n"
 
-#: src/s_page.c:386
+#: libgeda/src/s_page.c:386
 #, c-format
 msgid "Could NOT save [%s]\n"
 msgstr "Kan [%s] NIET opslaan\n"
 
-#: src/s_slib.c:181
+#: libgeda/src/s_slib.c:181
 #, c-format
 msgid "Found [%s]\n"
 msgstr "[%s] gevonden\n"
 
-#: src/s_slib.c:191
+#: libgeda/src/s_slib.c:191
 #, c-format
 msgid "Could not find [%s] in any SourceLibrary\n"
 msgstr "Kan geen [%s] vinden in welke BronBibliotheek dan ook!\n"
 
+#~ msgid "Could not load question font char -- check font-directory keyword\n"
+#~ msgstr ""
+#~ "Kan vraag font karakter niet laden -- controleer font-map sleutelwoord\n"
+
 #~ msgid "Read ~/.gEDA/%s file [%%s]\n"
 #~ msgstr "Lees ~/.gEDA/%s bestand [%%s]\n"
 
diff --git a/libgeda/scheme/Makefile.am b/libgeda/scheme/Makefile.am
index d51e79f..1a3819e 100644
--- a/libgeda/scheme/Makefile.am
+++ b/libgeda/scheme/Makefile.am
@@ -1,8 +1,8 @@
 
-scmdatadir = @GEDADATADIR@/scheme
+scmdatadir = $(GEDADATADIR)/scheme
 dist_scmdata_DATA = geda.scm color-map.scm
 
 MOSTLYCLEANFILES = *.log *~
 CLEANFILES = *.log *~
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
+DISTCLEANFILES = *.log core FILE *~
 MAINTAINERCLEANFILES = *.log *~ Makefile.in
diff --git a/libgeda/share/Makefile.am b/libgeda/share/Makefile.am
index e479715..7a7dfee 100644
--- a/libgeda/share/Makefile.am
+++ b/libgeda/share/Makefile.am
@@ -1,7 +1,7 @@
 # $Id$
 #
 
-prologdatadir = @GEDADATADIR@
+prologdatadir = $(GEDADATADIR)
 prologdata_DATA = prolog.ps
 
 EXTRA_DIST = $(prologdata_DATA)
diff --git a/libgeda/src/Makefile.am b/libgeda/src/Makefile.am
index 7c4bf99..9b98ec9 100644
--- a/libgeda/src/Makefile.am
+++ b/libgeda/src/Makefile.am
@@ -1,15 +1,5 @@
-# $Id$
-#
-# NOTE: Don't forget that in the libtool distribution, files in this
-# directory are distributed by the demo_distfiles variable in the top
-# level Makefile.
-AUTOMAKE_OPTIONS = foreign
 
-if CCISGCC
-AM_CFLAGS = -Wall
-endif
-
-# Build a libtool library, libhello.la for installation in libdir.
+# Build a libtool library for installation in libdir.
 lib_LTLIBRARIES = libgeda.la
 
 libgeda_la_SOURCES = \
@@ -69,32 +59,20 @@ libgeda_la_SOURCES = \
 	s_undo.c \
 	u_basic.c
 
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/include/libgeda @LIBGEDA_CFLAGS@
-DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
-libgeda_la_LDFLAGS = @LIBTOOL_FLAGS@ @LIBGEDA_LDFLAGS@
+libgeda_la_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"  $(DATADIR_DEFS) \
+	-I$(srcdir)/../include -I$(srcdir)/../include/libgeda -I$(top_srcdir)
+libgeda_la_CFLAGS = \
+	$(GCC_CFLAGS) $(MINGW_CFLAGS) $(GUILE_CFLAGS) $(GLIB_CFLAGS) \
+	$(GDK_PIXBUF_CFLAGS)
+libgeda_la_LDFLAGS = --version-info $(LIBGEDA_SHLIB_VERSION) \
+	$(MINGW_LIBTOOL_FLAGS) $(MINGW_LDFLAGS) $(GUILE_LDFLAGS) \
+	$(GLIB_LIBS) $(GDK_PIXBUF_LIBS)
 LIBTOOL=@LIBTOOL@ --silent
 
-EXTRA_DIST = create_proto 
-
-src: $(libgeda_la_SOURCES)
-	@echo Finished building the C source
-
-CPROTO =	cproto
-CPROTOCFLAGS = 	$(INCLUDES) -I. -I.. -I../include
-ALES_HACK =	-D__GNUC__
-
-proto: prototype.h
-
-prototype.h: $(libgeda_la_SOURCES)
-	$(CPROTO) $(ALES_HACK) $(CPROTOCFLAGS) *.c > new_proto
-	mv new_proto ../include/prototype.h
-
-
-MOSTLYCLEANFILES = *.log core FILE *~ prototype.bak
-CLEANFILES = *.log core FILE *~ prototype.bak
-DISTCLEANFILES = *.log core FILE *~ prototype.bak
-MAINTAINERCLEANFILES = *.log core FILE *~ prototype.bak prototype.h \
-			Makefile.in configure
+MOSTLYCLEANFILES = *.log core FILE *~
+CLEANFILES = *.log core FILE *~
+DISTCLEANFILES = *.log core FILE *~
+MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in
 
 # Unfortunately, in order to test libtool thoroughly, we need access
 # to its private directory.
diff --git a/libgeda/src/a_basic.c b/libgeda/src/a_basic.c
index 01cfe62..eda38be 100644
--- a/libgeda/src/a_basic.c
+++ b/libgeda/src/a_basic.c
@@ -22,6 +22,7 @@
  *  \brief basic libgeda read and write functions
  */
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #ifdef HAVE_STRING_H
@@ -46,7 +47,8 @@ const gchar *o_file_format_header()
   static gchar *header = NULL;
 
   if (header == NULL)
-    header = g_strdup_printf("v %s %u\n", DATE_VERSION, FILEFORMAT_VERSION);
+    header = g_strdup_printf("v %s %u\n", PACKAGE_DATE_VERSION,
+                             FILEFORMAT_VERSION);
 
   return header;
 }
diff --git a/libgeda/src/create_proto b/libgeda/src/create_proto
deleted file mode 100755
index cc1abe4..0000000
--- a/libgeda/src/create_proto
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-CFLAGS="`guile-config compile` `gtk-config --cflags`"
-
-MISC_FLAGS="-I/usr/X11R6/include -I../include -I. -I.."
-
-ALES_HACK=-D__GNUC__
-
-make src
-cproto $ALES_HACK $CFLAGS $MISC_FLAGS *.c > new_proto
-
-mv -f new_proto ../include/prototype.h
diff --git a/libgeda/src/f_print.c b/libgeda/src/f_print.c
index a4befd6..e601616 100644
--- a/libgeda/src/f_print.c
+++ b/libgeda/src/f_print.c
@@ -23,6 +23,7 @@
  */
 
 #include <config.h>
+#include <version.h>
 
 #include <stdio.h>
 #include <unistd.h>
@@ -134,7 +135,7 @@ int f_print_header(TOPLEVEL *toplevel, FILE *fp,
 	  "%%%%Pages: 1\n"
 	  "%%%%Endcomments\n"
 	  "%%%%BeginProlog\n",
-	  DATE_VERSION,
+	  PACKAGE_GIT_VERSION,
 	  ctime(&current_time),
 	  toplevel->page_current->page_filename,
 #ifdef HAVE_GETLOGIN
diff --git a/libgeda/src/libgeda.c b/libgeda/src/libgeda.c
index d00345b..809a1c4 100644
--- a/libgeda/src/libgeda.c
+++ b/libgeda/src/libgeda.c
@@ -47,8 +47,8 @@
 void libgeda_init(void)
 {
   /* Initialise gettext */
-  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-  bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+  bindtextdomain (LIBGEDA_GETTEXT_DOMAIN, LOCALEDIR);
+  bind_textdomain_codeset(LIBGEDA_GETTEXT_DOMAIN, "UTF-8");
 
   /* Initialise gobject */
   g_type_init ();
diff --git a/libgeda/src/s_basic.c b/libgeda/src/s_basic.c
index 7ac3134..0512945 100644
--- a/libgeda/src/s_basic.c
+++ b/libgeda/src/s_basic.c
@@ -535,13 +535,13 @@ const char *s_path_sys_config () {
     p = g_getenv ("GEDADATARC");
   }
   if (p == NULL) {
-    if (g_strcasecmp (GEDARCDIR, "none") != 0) {
-      /* If available, use the rc directory set during configure. */
-      p = GEDARCDIR;
-    } else {
-      /* Otherwise, just use the data directory */
-      p = s_path_sys_data ();
-    }
+#ifdef GEDARCDIR
+    /* If available, use the rc directory set during configure. */
+    p = GEDARCDIR;
+#else
+    /* Otherwise, just use the data directory */
+    p = s_path_sys_data ();
+#endif
   }
   if (p != NULL) g_setenv("GEDADATARC", p, FALSE);
   return p;
diff --git a/m4/.gitignore b/m4/.gitignore
new file mode 100644
index 0000000..521e0d0
--- /dev/null
+++ b/m4/.gitignore
@@ -0,0 +1,40 @@
+
+*~
+codeset.m4
+gettext.m4
+glibc21.m4
+glibc2.m4
+iconv.m4
+intdiv0.m4
+intldir.m4
+intl.m4
+intlmacosx.m4
+intmax.m4
+inttypes_h.m4
+inttypes-pri.m4
+lcmessage.m4
+lib-ld.m4
+lib-link.m4
+lib-prefix.m4
+libtool.m4
+lock.m4
+longlong.m4
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+nls.m4
+po.m4
+printf-posix.m4
+progtest.m4
+size_max.m4
+stdint_h.m4
+uintmax_t.m4
+visibility.m4
+wchar_t.m4
+wint_t.m4
+xsize.m4
+longdouble.m4
+ulonglong.m4
diff --git a/m4/geda-assert.m4 b/m4/geda-assert.m4
new file mode 100644
index 0000000..9c7adb2
--- /dev/null
+++ b/m4/geda-assert.m4
@@ -0,0 +1,39 @@
+# geda-assert.m4                                        -*-Autoconf-*-
+# serial 1.0
+
+dnl Optionally disable assertions
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check if assertions should be disabled.
+AC_DEFUN([AX_OPTION_ASSERT],
+[
+  AC_PREREQ([2.60])dnl
+  AC_PROVIDE([AC_HEADER_ASSERT])dnl
+
+  AC_MSG_CHECKING([whether to enable assertions])
+  AC_ARG_ENABLE([assert],
+    [AS_HELP_STRING([--disable-assert], [turn off assertions])],
+    [], [enable_assert="yes"])
+
+  if test "X$enable_assert" = "Xyes"; then
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no])
+    AC_DEFINE([NDEBUG], 1, [Define to 1 if assertions should be disabled.])
+    AC_DEFINE([G_DISABLE_ASSERT], 1, [Define to 1 if GLib assertions should be disabled.])
+  fi
+])dnl AX_OPTION_ASSERT
diff --git a/m4/geda-awk.m4 b/m4/geda-awk.m4
new file mode 100644
index 0000000..b5ac48e
--- /dev/null
+++ b/m4/geda-awk.m4
@@ -0,0 +1,82 @@
+# geda-awk.m4                                           -*-Autoconf-*-
+# serial 1
+
+dnl Improved checks for awk executable path and features
+dnl Copyright (C) 2008  Dan McMahill <dan@xxxxxxxxxxxx>
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+AC_DEFUN([AX_PROG_AWK],
+[
+  AC_PREREQ([2.60])dnl
+  AC_PROVIDE([AC_PROG_AWK])dnl
+  AC_ARG_VAR([AWK], [Path to awk executable])
+  AC_PATH_PROGS([AWK], [mawk gawk nawk awk], [no])
+  if test "X$AWK" = "Xno"; then
+    AC_MSG_ERROR([The awk tool could not be found. Ensure it is installed and in your
+path.])
+  fi
+])dnl AX_PROG_AWK
+
+dnl AX_AWK_IFELSE (PROGRAM, INPUT, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+AC_DEFUN([AX_AWK_IFELSE],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AC_PROG_AWK])dnl
+  cat > conftest.awk <<EOF
+[#]line __oline__ "configure"
+[$1]
+EOF
+  cat > conftest.txt <<EOF
+[$2]
+EOF
+  if ($AWK -f conftest.awk conftest.txt >/dev/null; exit) 2>&AC_FD_CC; then
+    ifelse([$3], , :,
+           [rm -fr conftest*;
+$3])
+  else
+    echo "configure:__oline__: $AWK -f conftest.awk conftest.txt" >&AC_FD_CC
+    echo "configure:__oline__: failed program was:" >&AC_FD_CC
+    cat conftest.awk >&AC_FD_CC
+    echo "configure:__oline__: failed input file was:" >&AC_FD_CC
+    cat conftest.txt >&AC_FD_CC
+    ifelse([$4], , ,
+           [rm -fr conftest*;
+$4])
+  fi
+])dnl AX_AWK_IFELSE
+
+dnl Check for some miscellaneous Awk features used by gEDA.
+AC_DEFUN([AX_AWK_FEATURES],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AC_PROG_AWK])dnl
+
+  AC_MSG_CHECKING([whether $AWK has gsub])
+  AX_AWK_IFELSE([{gsub(/foo/,"bar");}], [foo bar],
+    [AWK_GSUB="yes"],[AWK_GSUB="no"])
+  AC_MSG_RESULT([$AWK_GSUB])
+
+  AC_MSG_CHECKING([whether $AWK has toupper])
+  AX_AWK_IFELSE([{print toupper("test")}], [foo bar],
+    [AWK_TOUPPER=yes],[AWK_TOUPPER=no])
+  AC_MSG_RESULT([$AWK_TOUPPER])
+
+  if (test "X$AWK_GSUB" = "Xno" || test "X$AWK_TOUPPER" = "Xno"); then
+    AC_MSG_ERROR([Your awk ($AWK) is missing the `gsub' and/or `toupper' functions.
+Consider installing gawk.])
+  fi
+])dnl AX_AWK_FEATURES
diff --git a/m4/geda-data-dirs.m4 b/m4/geda-data-dirs.m4
new file mode 100644
index 0000000..551814a
--- /dev/null
+++ b/m4/geda-data-dirs.m4
@@ -0,0 +1,74 @@
+# geda-data-dirs.m4                                     -*-Autoconf-*-
+# serial 1.0
+
+dnl gEDA data and configuration directories
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check where gEDA data and configuration should be stored.
+AC_DEFUN([AX_DATA_DIRS],
+[
+  AC_PREREQ([2.60])dnl
+
+  # Check where to install ordinary data files (e.g. symbols and
+  # gnetlist backends)
+  # FIXME at some point this should become "$datarootdir/geda-gaf" to
+  # match the tarball name.
+  AC_MSG_CHECKING([where to install gEDA shared data])
+  GEDADATADIR="$datarootdir/gEDA"
+  AC_MSG_RESULT([$GEDADATADIR])
+
+  # Check where to install rc files.
+  # FIXME at some point the rc directory needs to start *defaulting*
+  # to "$sysconfdir/geda-gaf" in order to comply with the GNU & Linux
+  # FHS guidelines.
+  AC_MSG_CHECKING([where to install gEDA rc files])
+  AC_ARG_WITH([rcdir],
+    AS_HELP_STRING([--with-rcdir[[[=DIR]]]],
+      [install system config in specific DIR]),
+    [ if test "X$with_rcdir" != "Xno"; then
+        if test "X$with_rcdir" = "Xyes"; then
+          GEDARCDIR="$sysconfdir/gEDA"
+        else
+          GEDARCDIR="$with_rcdir"
+        fi
+        AC_MSG_RESULT([$GEDARCDIR])
+      else
+        AC_MSG_RESULT([$GEDADATADIR])
+      fi ],
+    [ AC_MSG_RESULT([$GEDADATADIR])
+  ])
+
+  # Now define some preprocessor symbols with the *expanded* values
+  GEDADATADIR_expand=`eval "echo $GEDADATADIR" | sed -e"s:^NONE:$ac_default_prefix:"`
+  AC_DEFINE_UNQUOTED([GEDADATADIR], ["$GEDADATADIR_expand"],
+    [Define to gEDA/gaf shared data directory.
+Only libgeda should use this - apps should use s_path_sys_data()])
+
+  if test "x$GEDARCDIR" != "x"; then
+    GEDARCDIR_expand=`eval "echo $GEDARCDIR" | sed -e"s:^NONE:$ac_default_prefix:"`
+    AC_DEFINE_UNQUOTED([GEDARCDIR], ["$GEDARCDIR_expand"],
+      [Define to gEDA/gaf rc directory if different from GEDADATADIR.
+Only libgeda should use this - apps should use s_path_sys_config()])
+
+  else
+    GEDARCDIR=$GEDADATADIR
+  fi
+
+  AC_SUBST([GEDADATADIR])
+  AC_SUBST([GEDARCDIR])
+
+])dnl AX_DATA_DIRS
diff --git a/m4/geda-desktop-i18n.m4 b/m4/geda-desktop-i18n.m4
new file mode 100644
index 0000000..c48d4fd
--- /dev/null
+++ b/m4/geda-desktop-i18n.m4
@@ -0,0 +1,74 @@
+# geda-desktop-i18n.m4                                  -*-Autoconf-*-
+# serial 1
+
+dnl Carry out configuration tasks needed by desktop-i18n tool
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+AC_DEFUN([AX_DESKTOP_I18N],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AM_NLS])dnl
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  dnl Complain if desktop-i18n is missing
+  AC_REQUIRE_AUX_FILE([desktop-i18n])
+
+  # We need to check that GNU gettext is available
+  AM_PATH_PROG_WITH_TEST([GETTEXT], [gettext],
+    [$ac_dir/$ac_word --version | grep GNU > /dev/null], :)
+  if test "x$GETTEXT" = x; then
+    AC_MSG_ERROR([The GNU gettext program could not be found. Please ensure that GNU
+gettext is correctly installed, and rerun configure.])
+  fi
+  AC_SUBST([GETTEXT])
+
+  # How should desktop-i18n be run?
+  DESKTOP_I18N_SCRIPT="$am_aux_dir/desktop-i18n"
+  DESKTOP_I18N="\${SHELL} $DESKTOP_I18N_SCRIPT"
+  AC_SUBST([DESKTOP_I18N_SCRIPT])
+  AC_SUBST([DESKTOP_I18N])
+
+  # We have a private directory to temporarily install locale data
+  # into.
+  DESKTOP_I18N_LOCALE_DIR='$(top_builddir)/.desktop-i18n'
+  AC_SUBST([DESKTOP_I18N_LOCALE_DIR])
+
+  # Substitute our own evil, corrupted version of xgettext.
+  # Mwahahahaha!
+  XGETTEXT="$DESKTOP_I18N --extract --xgettext=$XGETTEXT --"
+
+  # Define some rules for substitution into Makefiles
+  DESKTOP_I18N_CREATE='$(DESKTOP_I18N) --create --gettext=$(GETTEXT) --domain=$(DOMAIN) \
+    --localedir=$(DESKTOP_I18N_LOCALE_DIR)/share/locale $(DESKTOP_I18N_LANGS)'
+  DESKTOP_I18N_LANGS_RULE='DESKTOP_I18N_LANGS = $(addprefix --lang=,$(shell cat $(DESKTOP_I18N_LOCALE_DIR)/$(DOMAIN).LINGUAS))'
+  DESKTOP_I18N_DESKTOP_RULE='%.desktop: %.desktop.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
+  DESKTOP_I18N_XML_RULE='%.xml: %.xml.in ; $(DESKTOP_I18N_CREATE) $< [$]@'
+
+  AC_SUBST([DESKTOP_I18N_CREATE])
+  _IT_SUBST([DESKTOP_I18N_LANGS_RULE])
+  _IT_SUBST([DESKTOP_I18N_DESKTOP_RULE])
+  _IT_SUBST([DESKTOP_I18N_XML_RULE])
+])dnl AX_DESKTOP_I18N
+
+# _IT_SUBST(VARIABLE)
+# -------------------
+# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+# Stolen from intltool.m4 (GPL v2)
+AC_DEFUN([_IT_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+])dnl _IT_SUBST
diff --git a/m4/geda-desktop.m4 b/m4/geda-desktop.m4
new file mode 100644
index 0000000..00b34ad
--- /dev/null
+++ b/m4/geda-desktop.m4
@@ -0,0 +1,123 @@
+# geda-desktop.m4                                       -*-Autoconf-*-
+# serial 1.0
+
+dnl MIME & desktop icon directories, and MIME database update options
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check where KDE data should be installed (needed for KDE 3)
+AC_DEFUN([AX_OPTION_KDE3_DATA],
+[
+  AC_PREREQ([2.60])dnl
+  AC_MSG_CHECKING([whether to install KDE 3 desktop files])
+
+  AC_ARG_WITH([kdedatadir],
+    AS_HELP_STRING([--with-kdedatadir[[[=DIR]]]],
+      [install KDE 3 desktop files in DIR [[DIR=DATAROOTDIR]]]),
+    # If --with-kdedatadir was specified, need to handle three cases
+    # for its argument: "yes", "no" and an explicit path.
+    [ if test "X$with_kdedatadir" != "Xno"; then
+        AC_MSG_RESULT([yes])
+        AC_MSG_CHECKING([where to install KDE 3 desktop files])
+        # If a path was given to --with-kdedatadir, use that path;
+        # otherwise, use $datadir.
+        if test "X$with_kdedatadir" = "Xyes"; then
+          KDEDATADIR="$datarootdir"
+        else
+          KDEDATADIR="$with_kdedatadir"
+        fi
+        AC_MSG_RESULT([$KDEDATADIR])
+      else
+        AC_MSG_RESULT([no])
+      fi ],
+    [ AC_MSG_RESULT([no]) ])
+
+  AM_CONDITIONAL([ENABLE_KDE_DESKTOP_DATA],
+                 test "X$KDEDATADIR" != "X")
+  AC_SUBST([KDEDATADIR])
+])dnl AX_OPTION_KDE3_DATA
+
+
+
+# Check where XDG data should be installed
+AC_DEFUN([AX_OPTION_XDG_DATA],
+[
+  AC_PREREQ([2.60])dnl
+
+  dnl Complain if icon-theme-installer is missing
+  AC_REQUIRE_AUX_FILE([icon-theme-installer])
+  ICON_THEME_INSTALLER="\${SHELL} $am_aux_dir/icon-theme-installer"
+  AC_SUBST([ICON_THEME_INSTALLER])
+
+  AC_MSG_CHECKING([where to install XDG desktop files])
+  AC_ARG_WITH([xdgdatadir],
+    AS_HELP_STRING([--with-xdgdatadir[[[=DIR]]]],
+      [install XDG desktop files in DIR [[DIR=DATAROOTDIR]]]))
+
+  if (test "X$with_xdgdatadir" = "X$yes") || (test "X$with_xdgdatadir" = "X"); then
+    with_xdgdatadir="$datarootdir"
+  fi
+  AC_MSG_RESULT([$with_xdgdatadir])
+  AC_SUBST([XDGDATADIR], [$with_xdgdatadir])
+])dnl AX_OPTION_XDG_DATA
+
+
+
+# Check if the MIME database should be updated, and if so, find the
+# update-mime-database program.
+AC_DEFUN([AX_OPTION_XDG_DB],
+[
+  AC_PREREQ([2.60])dnl
+  AC_ARG_VAR([UPDATE_MIME_DATABASE], [Path to update-mime-database executable])
+  AC_ARG_VAR([UPDATE_DESKTOP_DATABASE], [Path to update-desktop-database executable])
+
+  # Check if the user enabled updating of the MIME database
+  AC_MSG_CHECKING([whether 'make install' should update XDG databases])
+  AC_ARG_ENABLE([update-xdg-database],
+    [AS_HELP_STRING([--disable-update-xdg-database],
+      [do not update XDG database after installation])],
+    [], [enable_update_xdg_database=yes])
+
+  # If user didn't disable XDG database update, look for tools
+  if test "X$enable_update_xdg_database" = "Xyes"; then
+    AC_MSG_RESULT([yes])
+
+    # Check for update-mime-database
+    AC_CHECK_PROG([UPDATE_MIME_DATABASE], [update-mime-database],
+                  [update-mime-database], [no])
+    if test "X$UPDATE_MIME_DATABASE" = "Xno"; then
+      AC_MSG_ERROR([The update-mime-database tool could not be found. Ensure it is
+installed and in your path, or configure with
+--disable-update-xdg-database.])
+    fi
+
+    # Check for update-desktop-database
+    AC_CHECK_PROG([UPDATE_DESKTOP_DATABASE], [update-desktop-database],
+                  [update-desktop-database], [no])
+    if test "X$UPDATE_DESKTOP_DATABASE" = "Xno"; then
+      AC_MSG_ERROR([The update-desktop-database tool could not be found. Ensure it is
+installed and in your path, or configure with
+--disable-update-xdg-database.])
+    fi
+  else
+    AC_MSG_RESULT([no])
+  fi
+
+  AM_CONDITIONAL([ENABLE_UPDATE_XDG_DATABASE],
+                 test "X$enable_update_xdg_database" = "Xyes")
+  AC_SUBST([UPDATE_MIME_DATABASE])
+  AC_SUBST([UPDATE_DESKTOP_DATABASE])
+])dnl AX_OPTION_XDG_DB
diff --git a/m4/geda-doxygen.m4 b/m4/geda-doxygen.m4
new file mode 100644
index 0000000..9e4a1d4
--- /dev/null
+++ b/m4/geda-doxygen.m4
@@ -0,0 +1,64 @@
+# geda-doxygen.m4                                       -*-Autoconf-*-
+# serial 1.0
+
+dnl Optional Doxygen API documentation support
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check if doxygen documentation is requested, and if so, find doxygen program.
+AC_DEFUN([AX_OPTION_DOXYGEN],
+[
+  AC_PREREQ([2.60])dnl
+  AC_ARG_VAR([DOXYGEN], [Path to doxygen executable])
+
+  # Check if the user enabled Doxygen
+  AC_MSG_CHECKING([whether to generate API documentation])
+  AC_ARG_ENABLE([doxygen],
+    [AS_HELP_STRING([--enable-doxygen], [generate Doxygen API documentation])])
+
+  # If user enabled doxygen, find the path to the doxygen
+  # executable. Also check for other required tools.
+  if test "X$enable_doxygen" = "Xyes"; then
+    AC_MSG_RESULT([yes])
+    AC_CHECK_PROG([DOXYGEN], [doxygen], [doxygen], [no])
+    if test "X$DOXYGEN" = "Xno"; then
+      AC_MSG_ERROR([API documentation generation was requested, but doxygen was not
+found. Ensure it is installed and in your path, or configure without
+--enable-doxygen.])
+    fi
+
+    # Check for Inkscape
+    AC_CHECK_PROG([INKSCAPE], [inkscape], [inkscape], [no])
+    # Check for ImageMagick
+    AC_CHECK_PROG([CONVERT], [convert], [convert], [no])
+
+    # We need at least one way of converting SVG files to PNG files!
+    if (test "X$INKSCAPE" = "Xno") && (test "X$CONVERT" = "Xno"); then
+      AC_MSG_ERROR([API documentation generation was requested, but
+neither Inkscape nor ImageMagick were found. Ensure one of these is
+installed and in your path, or configure without --enable-doxygen.])
+    fi
+
+  else
+    AC_MSG_RESULT([no])
+  fi
+
+  AM_CONDITIONAL([ENABLE_DOXYGEN],
+                 test "X$enable_doxygen" = "Xyes")
+  AC_SUBST([DOXYGEN])
+  AC_SUBST([INKSCAPE])
+  AC_SUBST([CONVERT])
+])dnl AX_OPTION_DOXYGEN
diff --git a/m4/geda-gcc-flags.m4 b/m4/geda-gcc-flags.m4
new file mode 100644
index 0000000..6884533
--- /dev/null
+++ b/m4/geda-gcc-flags.m4
@@ -0,0 +1,32 @@
+# geda-gcc-flags.m4                                     -*-Autoconf-*-
+# serial 1.0
+
+dnl Add GCC-specific C compiler flags
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Adds the argument to GCC_CFLAGS if the compiler is GCC.
+AC_DEFUN([AX_GCC_FLAGS],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AC_PROG_CC])dnl
+
+  if test "X$GCC" = "Xyes"; then
+    GCC_CFLAGS="$1 $GCC_CFLAGS"
+  fi
+
+  AC_SUBST([GCC_CFLAGS])
+])
diff --git a/m4/geda-git-version.m4 b/m4/geda-git-version.m4
new file mode 100644
index 0000000..a0d707f
--- /dev/null
+++ b/m4/geda-git-version.m4
@@ -0,0 +1,69 @@
+# geda-git-version.m4                                   -*-Autoconf-*-
+# serial 1.0
+
+dnl Extract gEDA version parameters from a git repository, if present.
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# AX_GIT_VERSION DATE-VERSION
+# Check for a git repository. If present, sanity check the latest tag
+# name. This probably isn't strictly necessary.
+AC_DEFUN([AX_GIT_VERSION],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AX_GIT_REPO])dnl
+
+  # First split version specified with AC_INIT into dotted and date
+  # parts
+changequote(,)
+  init_sed_pattern="^\([\.0-9]*\)\.\([0-9]*\)$"
+changequote([,])
+  DOTTED_VERSION="$PACKAGE_VERSION"
+  DATE_VERSION="$1"
+
+  # If we're in a git repository, get the detailed version from git
+  # describe.
+  if test "X$HAVE_GIT_REPO" = "Xyes"; then
+    AC_MSG_CHECKING([version from git repository])
+    GIT_VERSION=`cd $srcdir && $GIT describe --always`
+    AC_MSG_RESULT([$GIT_VERSION])
+  fi
+
+  # If there's an annotated tag available, test that the git version
+  # and AC_INIT versions agree.
+  if git describe > /dev/null; then
+changequote(,)
+    git_sed_pattern="^\([^-]*\)-\([^-]*\).*"
+changequote([,])
+    GIT_DOTTED_VERSION=`echo $GIT_VERSION | sed -e"s/$git_sed_pattern/\1/"`
+    GIT_DATE_VERSION=`echo $GIT_VERSION | sed -e"s/$git_sed_pattern/\2/"`
+
+    if (test "X$GIT_DOTTED_VERSION" != "X$DOTTED_VERSION") ||
+       (test "X$GIT_DATE_VERSION" != "X$DATE_VERSION");
+    then
+
+      AC_MSG_WARN([The latest git tag name doesn't appear to match the version specified
+by the configure script.])
+    fi
+  fi
+
+  AC_SUBST([DOTTED_VERSION])
+  AC_SUBST([DATE_VERSION])
+
+  # We generate some files differently if a git repo is present
+  AM_CONDITIONAL([HAVE_GIT_REPO], test "X$HAVE_GIT_REPO" = "Xyes")
+
+])dnl AX_GIT_VERSION
diff --git a/m4/geda-git.m4 b/m4/geda-git.m4
new file mode 100644
index 0000000..3d4e1af
--- /dev/null
+++ b/m4/geda-git.m4
@@ -0,0 +1,47 @@
+# geda-git.m4                                           -*-Autoconf-*-
+# serial 1.0
+
+dnl Generic checks relating to git tools & repositories
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check if git is available, and which git to use.
+AC_DEFUN([AX_PROG_GIT],
+[
+  AC_PREREQ([2.60])dnl
+  AC_ARG_VAR([GIT], [Path to git executable])
+  AC_CHECK_PROG([GIT], [git], [git], [no])
+])dnl AX_PROG_GIT
+
+# Check if the source directory is a git repository
+AC_DEFUN([AX_GIT_REPO],
+[
+  AC_PREREQ([2.60])dnl
+  AC_REQUIRE([AX_PROG_GIT])dnl
+
+  HAVE_GIT_REPO=no
+  if test "X$GIT" != "Xno"; then
+    AC_MSG_CHECKING([if the source directory is a git repository])
+    if (cd $srcdir && $GIT describe --always > /dev/null); then
+      AC_MSG_RESULT([yes])
+      HAVE_GIT_REPO=yes
+    else
+      AC_MSG_RESULT([no])
+    fi
+  fi
+
+  AC_SUBST([HAVE_GIT_REPO])
+])dnl AX_GIT_REPO
diff --git a/m4/geda-groff.m4 b/m4/geda-groff.m4
new file mode 100644
index 0000000..8181a57
--- /dev/null
+++ b/m4/geda-groff.m4
@@ -0,0 +1,29 @@
+# geda-groff.m4                                         -*-Autoconf-*-
+# serial 1
+
+dnl Carry out configuration tasks needed by desktop-i18n tool
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+AC_DEFUN([AX_PROG_GROFF],
+[
+  AC_PREREQ([2.60])dnl
+  AC_ARG_VAR([GROFF], [Path to groff executable])
+  AC_CHECK_PROG([GROFF], [groff], [groff], [no])
+
+  AM_CONDITIONAL([ENABLE_GROFF],
+                 [test "X$groff" != Xno])
+])dnl AX_PROG_GROFF
diff --git a/m4/geda-libgeda.m4 b/m4/geda-libgeda.m4
new file mode 100644
index 0000000..45846ca
--- /dev/null
+++ b/m4/geda-libgeda.m4
@@ -0,0 +1,39 @@
+# geda-libgeda.m4                                       -*-Autoconf-*-
+# serial 1.0
+
+dnl libgeda-specific setup
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Work out the gettext domain that libgeda should use
+AC_DEFUN([AX_LIBGEDA],
+[
+  AC_PREREQ([2.60])dnl
+
+  # First argument is the shared library version to use.
+  AC_MSG_CHECKING([libgeda shared library version])
+  AC_MSG_RESULT($1)
+  AC_SUBST([LIBGEDA_SHLIB_VERSION], $1)
+
+  # Work out the gettext domain to use
+  AC_MSG_CHECKING([libgeda gettext domain])
+  so_major=`echo $LIBGEDA_SHLIB_VERSION | sed -e "s/:.*//"`
+  LIBGEDA_GETTEXT_DOMAIN="libgeda$so_major"
+  AC_MSG_RESULT([$LIBGEDA_GETTEXT_DOMAIN])
+  AC_SUBST([LIBGEDA_GETTEXT_DOMAIN])
+  AC_DEFINE_UNQUOTED([LIBGEDA_GETTEXT_DOMAIN], ["$LIBGEDA_GETTEXT_DOMAIN"],
+    "Name of libgeda's gettext domain.")
+])
diff --git a/m4/geda-stroke.m4 b/m4/geda-stroke.m4
new file mode 100644
index 0000000..cadaffa
--- /dev/null
+++ b/m4/geda-stroke.m4
@@ -0,0 +1,89 @@
+# geda-stroke.m4                                       -*-Autoconf-*-
+# serial 1.0
+
+dnl MIME & desktop icon directories, and MIME database update options
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check whether we should use libstroke, and if so if libraries are
+# available.
+AC_DEFUN([AX_OPTION_STROKE],
+[
+  AC_PREREQ([2.60])dnl
+  AC_MSG_CHECKING([whether to use libstroke])
+
+  # Check what the user wants
+  AC_ARG_WITH([libstroke],
+    AS_HELP_STRING([--with-libstroke[[[=DIR]]]],
+      [use libstroke (search in [[DIR]])]),
+    [ if test "X$with_libstroke" = "Xno"; then
+        libstroke_use=no
+      else
+        libstroke_use=yes
+        if test "X$with_libstroke" != "Xyes"; then
+          libstroke_prefix=$with_libstroke
+        fi
+      fi
+      AC_MSG_RESULT([$libstroke_use]) ],
+    [ AC_MSG_RESULT([if present])
+  ])
+
+  # Check if libstroke is actually available!
+  if test "X$libstroke_use" != "Xno"; then
+
+    # If a prefix to search was specified, then add the appropriate
+    # flags.
+    if test "X$libstroke_use" = "X"; then
+      LIBSTROKE_LDFLAGS="-L$libstroke_prefix/lib"
+      LIBSTROKE_CFLAGS="-I$libstroke_prefix/include"
+    fi
+
+    # Check that the library and header file are available. Save and
+    # restore CPPFLAGS and LDFLAGS variables.
+    save_CPPFLAGS="$CPPFLAGS"
+    save_LDFLAS="$LDFLAGS"
+    CPPFLAGS="$CPPFLAGS $LIBSTROKE_CFLAGS"
+    LDFLAGS="$LDFLAGS $LIBSTROKE_LDFLAGS"
+    HAVE_LIBSTROKE=yes
+    AC_CHECK_LIB([stroke], [stroke_init], [], [HAVE_LIBSTROKE=no])
+    AC_CHECK_HEADER([stroke.h], [], [HAVE_LIBSTROKE=no
+    CPPFLAGS="$save_CPPDFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+
+    LIBSTROKE_LDFLAGS="$LIBSTROKE_LDFLAGS -lstroke"])
+
+    # If --with-libstroke was specified, then we *must* have a usable
+    # libstroke.
+    if test "X$libstroke_use" = "Xyes" -a "X$HAVE_LIBSTROKE" = "Xno"; then
+      AC_MSG_ERROR([You specified that libstroke should be used, but libstroke could not
+be found. Ensure that all libstroke development files are installed,
+or configure without --with-libstroke.])
+    fi
+  fi
+
+  # If we don't have libstroke, clear its flags variables
+  if test "X$HAVE_LIBSTROKE" != "Xyes"; then
+    LIBSTROKE_LDFLAGS=""
+    LIBSTROKE_CFLAGS=""
+  else
+    AC_DEFINE([HAVE_LIBSTROKE], [test "X$HAVE_LIBSTROKE" = "Xyes"],
+      [Define to 1 if libstroke is available])
+  fi
+
+  AC_SUBST([LIBSTROKE_CPPFLAGS])
+  AC_SUBST([LIBSTROKE_LDFLAGS])
+
+])dnl AX_OPTION_STROKE
diff --git a/m4/pcb-data-dirs.m4 b/m4/pcb-data-dirs.m4
new file mode 100644
index 0000000..49faf17
--- /dev/null
+++ b/m4/pcb-data-dirs.m4
@@ -0,0 +1,78 @@
+# pcb-data-dirs.m4                                      -*-Autoconf-*-
+# serial 1.0
+
+dnl PCB prefix and m4 library directory (needed by gnetlist)
+dnl Copyright (C) 2009  Peter Brett <peter@xxxxxxxxxxxxx>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+# Check where to look for PCB footprints.
+# FIXME All of this should be done at runtime.
+AC_DEFUN([AX_PCB_DIRS],
+[
+  AC_PREREQ([2.60])dnl
+
+  # Check what prefix to use for PCB footprint libraries
+  AC_MSG_CHECKING([where to look for PCB footprints])
+  PCBDATADIR="${datarootdir}/pcb"
+  AC_ARG_WITH([pcb-datadir],
+    AS_HELP_STRING([--with-pcb-datadir=DIR],
+      [search for PCB libraries in DIR [[DATAROOTDIR/pcb]]]),
+    [ if (test "X$with_pcb_datadir" != "Xno" &&
+          test "X$with_pcb_datadir" != "Xyes"); then
+        PCBDATADIR="$with_pcb_datadir"
+      fi ], [])
+  AC_MSG_RESULT([$PCBDATADIR])
+  AC_SUBST([PCBDATADIR])
+
+  # m4 libraries
+  AC_MSG_CHECKING([where to look for PCB m4 footprints])
+  PCBM4DIR="${PCBDATADIR}/m4"
+  AC_ARG_WITH([pcb-m4dir],
+    AS_HELP_STRING([--with-pcb-m4dir=DIR],
+      [search for PCB m4 libraries in DIR [[PCBDATADIR/m4]]]),
+    [ if (test "X$with_pcb_m4dir" != "Xno" &&
+          test "X$with_pcb_m4dir" != "Xyes"); then
+        PCBM4DIR="$with_pcb_m4dir"
+      fi ], [])
+  AC_MSG_RESULT([$PCBM4DIR])
+  AC_SUBST([PCBM4DIR])
+
+  # newlib search path
+  AC_MSG_CHECKING([search path for PCB newlib footprints])
+  PCBLIBPATH="${PCBDATADIR}/pcblib-newlib:$PCBDATADIR/newlib"
+  AC_ARG_WITH([pcb-lib-path],
+    AS_HELP_STRING([--with-pcb-lib-path=PATH],
+      [search path for PCB newlib footprint libraries]),
+    [ if (test "X$with_pcb_lib_path" != "Xno" &&
+          test "X$with_pcb_lib_path" != "Xyes"); then
+        PCBLIBPATH="$with_pcb_lib_path"
+      fi ], [])
+  AC_MSG_RESULT([$PCBLIBPATH])
+  AC_SUBST([PCBLIBPATH])
+
+  # PCB configuration files
+  AC_MSG_CHECKING([where to look for PCB configuration])
+  PCBCONFDIR="${sysconfdir}/pcb"
+  AC_ARG_WITH([pcb-confdir],
+    AS_HELP_STRING([--with-pcb-confdir=DIR],
+      [directory where PCB site configuration files are installed [[SYSCONFDIR/pcb]]]),
+   [ if (test "X$with_pcb_confdir" != "Xno" &&
+          test "X$with_pcb_confdir" != "Xyes"); then
+        PCBCONFDIR="$with_pcb_m4dir"
+     fi ], [])
+  AC_MSG_RESULT([$PCBCONFDIR])
+  AC_SUBST([PCBCONFDIR])
+])dnl AX_PCB_DIRS
diff --git a/version.h.in b/version.h.in
new file mode 100644
index 0000000..fa1e599
--- /dev/null
+++ b/version.h.in
@@ -0,0 +1,11 @@
+/* Date part of package version string. */
+/* #undef PACKAGE_DATE_VERSION */
+
+/* Dotted part of package version string. */
+/* #undef PACKAGE_DOTTED_VERSION */
+
+/* Current git commit. */
+/* #undef PACKAGE_GIT_COMMIT */
+
+/* Current 'git describe' version string. */
+/* #undef PACKAGE_GIT_VERSION */

commit e55e9e247eb33c4a5be56687b4610c6649ef74d7
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    Remove existing build infrastructure.
    
    This simply strips out all configure, m4 and autogen scripts from the
    whole repository, including the toplevel Makefile.  This commit does
    not compile (what a surprise)!

diff --git a/Makefile b/Makefile
deleted file mode 100644
index 9d1f18b..0000000
--- a/Makefile
+++ /dev/null
@@ -1,851 +0,0 @@
-#
-# gEDA/gaf Toplevel Makefile
-#
-
-#
-# These variables hold the the master version of gEDA/gaf.
-# Change this to the real version of the distribution.   However
-# you still need to update all the configure.ac[.in] scripts; this
-# can be accomplished by running ./update-versions.sh with the correct
-# arguments.
-#
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-
-# 
-# Use this when you are building the repository version
-#
-CD_VERSION=
-DIR_PREFIX=
-
-#
-# Use this when you are building the Released version (comment out above)
-#
-#CD_VERSION=-$(DOTTED_VERSION)
-#DIR_PREFIX=geda-
-
-#
-# Set this to the location where you want to install gEDA/gaf
-#
-prefix?=$(HOME)/geda
-
-#
-# You can set any global options you want here to be passed to the 
-# individual ./configure scripts
-#
-# To disable the updating of the mime database and desktop database put the
-# following flags into opt=  
-#
-#             --disable-update-mime-database
-#             --disable-update-desktop-database
-#
-opts=${GAF_CONFIGURE_OPTS} --with-xdgdatadir=$(HOME)/.local/share --with-kdedatadir=$(HOME)/.kde/share
-
-#
-# Set this to the shell that you want the various commands to run in.
-# For most people the default should work just fine.
-#
-SHELL=/bin/sh
-
-############################################################################
-# Basic targets
-############################################################################
-
-all: notarget
-
-notarget:
-	@echo $(VERSION) $(CD_VERSION) $(DIR_PREFIX)
-	@echo "gEDA Toplevel Makefile"
-	@echo "This Makefile requires libgeda, symbols, gschem, gnetlist,"
-	@echo "gattrib, gsymcheck, utils, docs, and examples source tarball packages"
-	@echo "untarred in this: `pwd` directory"
-	@echo ""
-	@echo "Type:"
-	@echo ""
-	@echo "${MAKE} install      Installs gEDA/gaf into $(prefix)"
-	@echo "${MAKE} uninstall    Uninstall gEDA/gaf from $(prefix)"
-	@echo "${MAKE} clean        Simple clean only (remove all .o and bins)"
-	@echo "${MAKE} open         Opens up all gEDA/gaf tarballs in base directory"
-	@echo ""
-	@echo "These targets are primarily used by the developers:"
-	@echo "${MAKE} reconfig     Recreate ./configure (and all Makefiles)"
-	@echo "${MAKE} maint        Total maintenance clean"
-	@echo "${MAKE} distcheck    Create distribution (using make distcheck)"
-	@echo "${MAKE} distconfig   Create dist ./configure (and all Makefiles)"
-	@echo "${MAKE} distclean    Does a make distclean in each subdir"
-	@echo "${MAKE} config       Just do the ./configure --prefix=${prefix}"
-	@echo "${MAKE} check        Run check in all sub directories"
-	@echo "${MAKE} dist         Create distribution (using make dist)"
-	@echo "${MAKE} src          Create all *.c files from *.nw files"
-	@echo ""
-	@echo ""
-	@echo "---------------------------READ THIS---------------------------"
-	@echo "Before executing any of the above targets, set the below shell"
-	@echo "variables.  The build process _will fail_ if you do not set"
-	@echo "these variables!  You will also need to set these variables to"
-	@echo "run the programs."
-	@echo ""
-	@echo "gEDA/gaf will be installed into ${prefix}"
-	@echo ""
-	@echo "For vanilla bourne shells:"
-	@echo LD_LIBRARY_PATH=${prefix}/lib:\$$LD_LIBRARY_PATH
-	@echo "export LD_LIBRARY_PATH"
-	@echo PATH=${prefix}/bin:\$$\{PATH\}
-	@echo "export PATH"
-	@echo PKG_CONFIG_PATH=${prefix}/lib/pkgconfig:\$$PKG_CONFIG_PATH
-	@echo "export PKG_CONFIG_PATH"
-	@echo ""
-	@echo "For bash:"
-	@echo export LD_LIBRARY_PATH=${prefix}/lib:\$$LD_LIBRARY_PATH
-	@echo export PATH=${prefix}/bin:\$$\{PATH\}
-	@echo export PKG_CONFIG_PATH=${prefix}/lib/pkgconfig:\$$PKG_CONFIG_PATH
-	@echo ""
-	@echo "For csh/tcsh shell:"
-	@echo setenv LD_LIBRARY_PATH ${prefix}/lib:\$$LD_LIBRARY_PATH
-	@echo setenv PATH ${prefix}/bin:\$$PATH
-	@echo setenv PKG_CONFIG_PATH ${prefix}/lib/pkgconfig:\$$PKG_CONFIG_PATH
-	@echo ""
-	@echo "---------------------------READ THIS---------------------------"
-
-##----------------------------------------------------------------------
-##  SDB notes:  To create a gEDA distribution, do this (in this order):
-##  1. make maint
-##  2. make reconfig  <--  This is entry point when you download from CVS
-##                         (i.e. start with "make reconfig")
-##  3. make config
-##  --->  At this point you can do "make install" if you want
-##        to install gEDA on your machine.
-##  4. make dist
-##     "Make dist" will leave tarballs of the various parts of the suite in
-##     the base directory.  Note that you have to change the $VERSION
-##     of each program in the configure.ac in each directory.  In principle,
-##     you can check that "make dist" worked by doing:
-##  5. make distcheck
-##     "make distcheck" will create a set of tarballs and untar, configure,
-##     compile and run make check in each directory.
-##
-##  Note that you need to have the autotools installed; if you are not a
-##  developer or you don't know what the autotools are, you probably 
-##  shouldn't do this.  You're forewarned!
-##----------------------------------------------------------------------
-
-
-# This builds and installs all of gEDA/gaf
-install: symbols_install libgeda_install gschem_install gnetlist_install \
-	 gattrib_install gsymcheck_install \
-	 utils_install docs_install examples_install
-
-# This uninstalls all of gEDA/gaf
-uninstall: utils_uninstall gsymcheck_uninstall gattrib_uninstall \
-	   gnetlist_uninstall gschem_uninstall symbols_uninstall \
-	   libgeda_uninstall docs_uninstall examples_uninstall
-
-# This target assumes you have all .tar.gz files present in your local directory.
-# It opens them up using tar -zxvf.  Afterwards you can do
-#  "make install" to install your gEDA distribution.
-open: docs_tarball \
-      examples_tarball \
-      gattrib_tarball \
-      gnetlist_tarball \
-      gschem_tarball \
-      gsymcheck_tarball \
-      symbols_tarball \
-      utils_tarball \
-      libgeda_tarball
-
-# This does a maintainer-clean removes EVERYTHING that's config/built
-maint: libgeda_maint symbols_maint gschem_maint gnetlist_maint gattrib_maint \
-       gsymcheck_maint utils_maint docs_maint \
-       examples_maint
-
-# This does a plain clean 
-clean: libgeda_clean symbols_clean gschem_clean gnetlist_clean gattrib_clean \
-       gsymcheck_clean utils_clean docs_clean \
-       examples_clean
-
-# This does a dist clean 
-distclean: libgeda_distclean symbols_distclean gschem_distclean \
-	   gnetlist_distclean gattrib_distclean gsymcheck_distclean \
-	   utils_distclean docs_distclean examples_distclean
-
-# This just does the appropriate ./configure --prefix=...
-config: libgeda_config symbols_config gschem_config gnetlist_config \
-	gattrib_config gsymcheck_config utils_config docs_config \
-        examples_config
-
-# This recreates all ./configure scripts and Makefile.in files
-reconfig: libgeda_reconfig symbols_reconfig gschem_reconfig gnetlist_reconfig \
-	  gattrib_reconfig gsymcheck_reconfig utils_reconfig \
-	  docs_reconfig examples_reconfig
-
-# This creates all *.c files from *.nw files
-src: libgeda_src gschem_src
-
-# This recreates all ./configure scripts and Makefile.in files ready
-# for distribution (removes dependency checking)
-distconfig: libgeda_distconfig symbols_distconfig gschem_distconfig \
-            gnetlist_distconfig gattrib_distconfig gsymcheck_distconfig \
-	    utils_distconfig docs_distconfig \
-	    examples_distconfig
-
-dist: libgeda_dist symbols_dist gschem_dist \
-      gnetlist_dist gattrib_dist gsymcheck_dist utils_dist \
-      docs_dist examples_dist
-	mv -f libgeda/libgeda*.tar.gz .
-	mv -f symbols/geda-symbols*.tar.gz .
-	mv -f gschem/geda-gschem*.tar.gz .
-	mv -f gnetlist/geda-gnetlist*.tar.gz .
-	mv -f gattrib/geda-gattrib*.tar.gz .
-	mv -f gsymcheck/geda-gsymcheck*.tar.gz .
-	mv -f utils/geda-utils*.tar.gz .
-	mv -f docs/geda-docs*.tar.gz .
-	mv -f examples/geda-examples*.tar.gz .
-
-distcheck: libgeda_distcheck symbols_distcheck gschem_distcheck \
-           gnetlist_distcheck gattrib_distcheck gsymcheck_distcheck \
-	   utils_distcheck docs_distcheck examples_distcheck 
-	mv -f libgeda/libgeda*.tar.gz .
-	mv -f symbols/geda-symbols*.tar.gz .
-	mv -f gschem/geda-gschem*.tar.gz .
-	mv -f gnetlist/geda-gnetlist*.tar.gz .
-	mv -f gattrib/geda-gattrib*.tar.gz .
-	mv -f gsymcheck/geda-gsymcheck*.tar.gz .
-	mv -f utils/geda-utils*.tar.gz .
-	mv -f docs/geda-docs*.tar.gz .
-	mv -f examples/geda-examples*.tar.gz .
-
-# This runs make check in all sub directories
-check: libgeda_check gschem_check gnetlist_check gattrib_check \
-       gsymcheck_check symbols_check docs_check examples_check 
-
-############################################################################
-# Midlevel targets 
-############################################################################
-
-# Symbols 
-symbols: $(DIR_PREFIX)symbols$(CD_VERSION)/configure
-	@echo symbols Installed 
-
-symbols_maint: $(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} maintainer-clean )
-
-symbols_clean: $(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} clean )
-
-symbols_distclean: $(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} distclean )
-
-symbols_install: $(DIR_PREFIX)symbols$(CD_VERSION)/configure \
-	         $(DIR_PREFIX)symbols$(CD_VERSION)/Makefile 
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} install )
-
-symbols_uninstall: $(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} uninstall )
-
-symbols_config: $(DIR_PREFIX)symbols$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-symbols_reconfig: 
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ./autogen.sh )
-
-symbols_distconfig:
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ./autogen.sh )
-
-symbols_dist: 
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} dist )
-
-symbols_distcheck: $(DIR_PREFIX)symbols$(CD_VERSION)/configure \
-	           $(DIR_PREFIX)symbols$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} distcheck )
-
-symbols_check: $(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ${MAKE} check )
-
-# gschem
-gschem: $(DIR_PREFIX)gschem$(CD_VERSION)/configure \
-	$(DIR_PREFIX)gschem$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)gschem$(CD_VERSION)/src/gschem
-	@echo gschem Built 
-
-gschem_install: $(DIR_PREFIX)gschem$(CD_VERSION)/configure \
-		$(DIR_PREFIX)gschem$(CD_VERSION)/config.h \
-	        $(DIR_PREFIX)gschem$(CD_VERSION)/src/gschem
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} install )
-
-gschem_uninstall: $(DIR_PREFIX)gschem$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} uninstall )
-
-gschem_config: libgeda-pc-install \
-	       $(DIR_PREFIX)gschem$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-gschem_reconfig: 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ./autogen.sh )
-
-gschem_src: 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION)/src; ${MAKE} src )
-
-gschem_distconfig: 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ./autogen.sh )
-
-gschem_dist: 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} dist )
-
-gschem_distcheck: $(DIR_PREFIX)gschem$(CD_VERSION)/configure \
-		  $(DIR_PREFIX)gschem$(CD_VERSION)/config.h
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} distcheck )
-
-gschem_maint: $(DIR_PREFIX)gschem$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} maintainer-clean )
-
-gschem_clean: $(DIR_PREFIX)gschem$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} clean )
-
-gschem_distclean: $(DIR_PREFIX)gschem$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} distclean )
-
-gschem_check: $(DIR_PREFIX)gschem$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} check )
-
-# gnetlist
-gnetlist: $(DIR_PREFIX)gnetlist$(CD_VERSION)/configure \
-	$(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)gnetlist$(CD_VERSION)/src/gnetlist
-	@echo gnetlist Built
-
-gnetlist_install: $(DIR_PREFIX)gnetlist$(CD_VERSION)/configure \
-		  $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h \
-	          $(DIR_PREFIX)gnetlist$(CD_VERSION)/src/gnetlist
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} install )
-
-gnetlist_uninstall: $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} uninstall )
-
-gnetlist_maint: $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} maintainer-clean )
-
-gnetlist_clean: $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} clean )
-
-gnetlist_distclean: $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} distclean )
-
-gnetlist_check: $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} check )
-
-gnetlist_config: libgeda-pc-install \
-		 $(DIR_PREFIX)gnetlist$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-gnetlist_reconfig: 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ./autogen.sh )
-
-gnetlist_distconfig: 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ./autogen.sh )
-
-gnetlist_dist: 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} dist )
-
-gnetlist_distcheck: $(DIR_PREFIX)gnetlist$(CD_VERSION)/configure \
-		    $(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} distcheck )
-
-# gattrib
-gattrib: $(DIR_PREFIX)gattrib$(CD_VERSION)/configure \
-	$(DIR_PREFIX)gattrib$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)gattrib$(CD_VERSION)/src/gattrib
-	@echo gattrib Built
-
-gattrib_install: $(DIR_PREFIX)gattrib$(CD_VERSION)/configure \
-		  $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h \
-	          $(DIR_PREFIX)gattrib$(CD_VERSION)/src/gattrib
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} install )
-
-gattrib_uninstall: $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} uninstall )
-
-gattrib_maint: $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} maintainer-clean )
-
-gattrib_clean: $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} clean )
-
-gattrib_distclean: $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} distclean )
-
-gattrib_check: $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} check )
-
-gattrib_config: libgeda-pc-install \
-		 $(DIR_PREFIX)gattrib$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-gattrib_reconfig: 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ./autogen.sh )
-
-gattrib_distconfig: 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ./autogen.sh )
-
-gattrib_dist: 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} dist )
-
-gattrib_distcheck: $(DIR_PREFIX)gattrib$(CD_VERSION)/configure \
-		   $(DIR_PREFIX)gattrib$(CD_VERSION)/config.h
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} distcheck )
-
-# gsymcheck
-gsymcheck: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/configure \
-	$(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)gsymcheck$(CD_VERSION)/src/gsymcheck
-	@echo gsymcheck Built 
-
-gsymcheck_install: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/configure \
-		   $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h \
-		   $(DIR_PREFIX)gsymcheck$(CD_VERSION)/src/gsymcheck
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} install )
-
-gsymcheck_uninstall: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} uninstall )
-
-gsymcheck_config: libgeda-pc-install \
-		  $(DIR_PREFIX)gsymcheck$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-gsymcheck_reconfig: 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ./autogen.sh )
-
-gsymcheck_distconfig: 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ./autogen.sh )
-
-gsymcheck_dist: 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} dist )
-
-gsymcheck_distcheck: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/configure \
-		     $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} distcheck )
-
-gsymcheck_maint: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} maintainer-clean )
-
-gsymcheck_clean: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} clean )
-
-gsymcheck_distclean: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} distclean )
-
-gsymcheck_check: $(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} check )
-
-# utils
-utils: $(DIR_PREFIX)utils$(CD_VERSION)/configure \
-	$(DIR_PREFIX)utils$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)utils$(CD_VERSION)/src/gmk_sym
-	@echo utils Built 
-
-utils_install: $(DIR_PREFIX)utils$(CD_VERSION)/configure \
-	       $(DIR_PREFIX)utils$(CD_VERSION)/config.h \
-	       $(DIR_PREFIX)utils$(CD_VERSION)/src/gmk_sym
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} install )
-
-utils_uninstall: $(DIR_PREFIX)utils$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} uninstall )
-
-utils_config: libgeda-pc-install \
-	      $(DIR_PREFIX)utils$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-utils_reconfig: 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ./autogen.sh )
-
-utils_distconfig: 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ./autogen.sh )
-
-utils_dist: 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} dist )
-
-utils_distcheck: $(DIR_PREFIX)utils$(CD_VERSION)/configure \
-		 $(DIR_PREFIX)utils$(CD_VERSION)/config.h
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} distcheck )
-
-utils_maint: $(DIR_PREFIX)utils$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} maintainer-clean )
-
-utils_clean: $(DIR_PREFIX)utils$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} clean )
-
-utils_distclean: $(DIR_PREFIX)utils$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} distclean )
-
-# geda
-geda: geda$(CD_VERSION)/configure \
-	geda$(CD_VERSION)/config.h \
-	geda$(CD_VERSION)/src/geda
-	@echo geda Built 
-
-geda_install: geda$(CD_VERSION)/configure \
-	      geda$(CD_VERSION)/config.h \
-	      geda$(CD_VERSION)/src/geda
-	( cd geda$(CD_VERSION); ${MAKE} install )
-
-geda_uninstall: geda$(CD_VERSION)/config.h 
-	( cd geda$(CD_VERSION); ${MAKE} uninstall )
-
-geda_config: geda$(CD_VERSION)/configure
-	( cd geda$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-geda_reconfig: 
-	( cd geda$(CD_VERSION); ./autogen.sh )
-
-geda_distconfig: 
-	( cd geda$(CD_VERSION); ./autogen.sh )
-
-geda_dist: 
-	( cd geda$(CD_VERSION); ${MAKE} dist )
-
-geda_distcheck: geda$(CD_VERSION)/configure \
-		geda$(CD_VERSION)/config.h
-	( cd geda$(CD_VERSION); ${MAKE} distcheck )
-
-geda_maint: geda$(CD_VERSION)/config.h 
-	( cd geda$(CD_VERSION); ${MAKE} maintainer-clean )
-
-geda_clean: geda$(CD_VERSION)/config.h 
-	( cd geda$(CD_VERSION); ${MAKE} clean )
-
-geda_distclean: geda$(CD_VERSION)/config.h 
-	( cd geda$(CD_VERSION); ${MAKE} distclean )
-
-# setup
-setup: $(DIR_PREFIX)setup$(CD_VERSION)/configure \
-	$(DIR_PREFIX)setup$(CD_VERSION)/config.h \
-	$(DIR_PREFIX)setup$(CD_VERSION)/src/setup
-	@echo setup Built 
-
-# Do not install the setup program, just build it 
-setup_install: $(DIR_PREFIX)setup$(CD_VERSION)/configure \
-	       $(DIR_PREFIX)setup$(CD_VERSION)/config.h \
-	       $(DIR_PREFIX)setup$(CD_VERSION)/src/setup
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} )
-
-# No reason to do this, if you are not installing setup
-setup_uninstall: $(DIR_PREFIX)setup$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} )
-
-setup_config: $(DIR_PREFIX)setup$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-setup_reconfig: 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ./autogen.sh )
-
-setup_distconfig: 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ./autogen.sh )
-
-setup_dist: 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} dist )
-
-setup_distcheck: $(DIR_PREFIX)setup$(CD_VERSION)/configure \
-		 $(DIR_PREFIX)setup$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} distcheck )
-
-setup_maint: $(DIR_PREFIX)setup$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} maintainer-clean )
-
-setup_clean: $(DIR_PREFIX)setup$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} clean )
-
-setup_distclean: $(DIR_PREFIX)setup$(CD_VERSION)/config.h 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} distclean )
-
-# libgeda (has no $(DIR_PREFIX)
-libgeda: libgeda$(CD_VERSION)/configure \
-	 libgeda$(CD_VERSION)/config.h \
-	 libgeda$(CD_VERSION)/src/.libs/libgeda.a
-	@echo libgeda Installed 
-
-libgeda_maint: libgeda$(CD_VERSION)/config.h
-	( cd libgeda$(CD_VERSION); ${MAKE} maintainer-clean )
-
-libgeda_clean: libgeda$(CD_VERSION)/config.h
-	( cd libgeda$(CD_VERSION); ${MAKE} clean )
-
-libgeda_distclean: libgeda$(CD_VERSION)/config.h
-	( cd libgeda$(CD_VERSION); ${MAKE} distclean )
-
-libgeda_check: libgeda$(CD_VERSION)/config.h
-	( cd libgeda$(CD_VERSION); ${MAKE} check )
-
-libgeda_config: libgeda$(CD_VERSION)/configure
-	( cd libgeda$(CD_VERSION); ./configure --prefix=$(prefix) $(opts) )
-
-libgeda_reconfig: 
-	( cd libgeda$(CD_VERSION); ./autogen.sh )
-
-libgeda_src: 
-	( cd libgeda$(CD_VERSION)/src; ${MAKE} src )
-
-libgeda_distconfig: 
-	( cd libgeda$(CD_VERSION); ./autogen.sh )
-
-libgeda_dist: 
-	( cd libgeda$(CD_VERSION); ${MAKE} dist )
-
-libgeda_distcheck: libgeda$(CD_VERSION)/configure \
-		   libgeda$(CD_VERSION)/config.h
-	( cd libgeda$(CD_VERSION); ${MAKE} distcheck )
-
-libgeda_uninstall: libgeda$(CD_VERSION)/config.h 
-	( cd libgeda$(CD_VERSION); ${MAKE} uninstall )
-
-libgeda_install: libgeda$(CD_VERSION)/configure \
-		 libgeda$(CD_VERSION)/config.h 
-	( cd libgeda$(CD_VERSION); ${MAKE} install )
-
-# docs
-docs: $(DIR_PREFIX)docs$(CD_VERSION)/configure \
-	$(DIR_PREFIX)docs$(CD_VERSION)/Makefile \
-	$(DIR_PREFIX)docs$(CD_VERSION)/attributes/attributes.pdf
-	@echo docs Built 
-
-docs_install: $(DIR_PREFIX)docs$(CD_VERSION)/configure \
-	      $(DIR_PREFIX)docs$(CD_VERSION)/Makefile \
-	      $(DIR_PREFIX)docs$(CD_VERSION)/attributes/attributes.pdf
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} install )
-
-docs_uninstall: $(DIR_PREFIX)docs$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} uninstall )
-
-docs_config: $(DIR_PREFIX)docs$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-docs_reconfig: 
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ./autogen.sh )
-
-docs_distconfig: 
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ./autogen.sh )
-
-docs_dist: 
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} dist )
-
-docs_distcheck: $(DIR_PREFIX)docs$(CD_VERSION)/configure \
-		$(DIR_PREFIX)docs$(CD_VERSION)/Makefile 
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} distcheck )
-
-docs_maint: $(DIR_PREFIX)docs$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} maintainer-clean )
-
-docs_clean: $(DIR_PREFIX)docs$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} clean )
-
-docs_distclean: $(DIR_PREFIX)docs$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} distclean )
-
-docs_check: $(DIR_PREFIX)docs$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} check )
-
-# examples
-examples: $(DIR_PREFIX)examples$(CD_VERSION)/configure \
-	$(DIR_PREFIX)examples$(CD_VERSION)/Makefile 
-	@echo examples Built 
-
-examples_install: $(DIR_PREFIX)examples$(CD_VERSION)/configure \
-	      $(DIR_PREFIX)examples$(CD_VERSION)/Makefile 
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} install )
-
-examples_uninstall: $(DIR_PREFIX)examples$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} uninstall )
-
-examples_config: $(DIR_PREFIX)examples$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); \
-          ./configure --prefix=$(prefix) $(opts) )
-
-examples_reconfig: 
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ./autogen.sh )
-examples_distconfig: 
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ./autogen.sh )
-
-examples_dist: 
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} dist )
-
-examples_distcheck: $(DIR_PREFIX)examples$(CD_VERSION)/configure \
-		    $(DIR_PREFIX)examples$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} distcheck )
-
-examples_maint: $(DIR_PREFIX)examples$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} maintainer-clean )
-
-examples_clean: $(DIR_PREFIX)examples$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} clean )
-
-examples_distclean: $(DIR_PREFIX)examples$(CD_VERSION)/Makefile
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} distclean )
-
-examples_check:  $(DIR_PREFIX)examples$(CD_VERSION)/configure
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ${MAKE} check )
-
-############################################################################
-# Configure related targets 
-############################################################################
-
-libgeda$(CD_VERSION)/config.h:
-	( cd libgeda$(CD_VERSION); ./configure --prefix=$(prefix) $(opts) )
-
-libgeda$(CD_VERSION)/configure:
-	( cd libgeda$(CD_VERSION); ./autogen.sh)
-
-$(DIR_PREFIX)gschem$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)gschem$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)gsymcheck$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)gsymcheck$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)utils$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)utils$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ./autogen.sh )
-
-geda$(CD_VERSION)/config.h:
-	( cd geda$(CD_VERSION); ./configure --prefix=$(prefix) $(opts) )
-
-geda$(CD_VERSION)/configure: 
-	( cd geda$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)setup$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)setup$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)gnetlist$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)gnetlist$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)gattrib$(CD_VERSION)/config.h:
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)gattrib$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)symbols$(CD_VERSION)/geda-font.scm:
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)symbols$(CD_VERSION)/Makefile: 
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)symbols$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)symbols$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)docs$(CD_VERSION)/Makefile:
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)docs$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ./autogen.sh )
-
-$(DIR_PREFIX)examples$(CD_VERSION)/Makefile:
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); \
-	  ./configure --prefix=$(prefix) $(opts) )
-
-$(DIR_PREFIX)examples$(CD_VERSION)/configure: 
-	( cd $(DIR_PREFIX)examples$(CD_VERSION); ./autogen.sh )
-
-############################################################################
-# Executable related related targets 
-############################################################################
-
-$(DIR_PREFIX)gschem$(CD_VERSION)/src/gschem:
-	( cd $(DIR_PREFIX)gschem$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)gsymcheck$(CD_VERSION)/src/gsymcheck:
-	( cd $(DIR_PREFIX)gsymcheck$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)gnetlist$(CD_VERSION)/src/gnetlist:
-	( cd $(DIR_PREFIX)gnetlist$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)gattrib$(CD_VERSION)/src/gattrib:
-	( cd $(DIR_PREFIX)gattrib$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)utils$(CD_VERSION)/src/gmk_sym:
-	( cd $(DIR_PREFIX)utils$(CD_VERSION); ${MAKE} )
-
-geda$(CD_VERSION)/src/geda:
-	( cd geda$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)setup$(CD_VERSION)/src/setup:
-	( cd $(DIR_PREFIX)setup$(CD_VERSION); ${MAKE} )
-
-$(DIR_PREFIX)docs$(CD_VERSION)/attributes/attributes.pdf:
-	( cd $(DIR_PREFIX)docs$(CD_VERSION); ${MAKE} )
-
-libgeda$(CD_VERSION)/src/.libs/libgeda.a:
-	( cd libgeda$(CD_VERSION); ${MAKE} install )
-
-############################################################################
-# Script related related targets 
-############################################################################
-
-libgeda-pc-install:
-	( cd libgeda$(CD_VERSION); ${MAKE} libgeda-pc-install )
-
-
-############################################################################
-# Targets for opening up the tarballs
-############################################################################
-
-geda_tarball: geda$(CD_VERSION).tar.gz
-	tar -zxvf geda$(CD_VERSION).tar.gz
-
-docs_tarball: $(DIR_PREFIX)docs$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)docs$(CD_VERSION).tar.gz
-
-examples_tarball: $(DIR_PREFIX)examples$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)examples$(CD_VERSION).tar.gz
-
-gattrib_tarball: $(DIR_PREFIX)gattrib$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)gattrib$(CD_VERSION).tar.gz
-
-gnetlist_tarball: $(DIR_PREFIX)gnetlist$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)gnetlist$(CD_VERSION).tar.gz
-
-gschem_tarball: $(DIR_PREFIX)gschem$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)gschem$(CD_VERSION).tar.gz
-
-gsymcheck_tarball: $(DIR_PREFIX)gsymcheck$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)gsymcheck$(CD_VERSION).tar.gz
-
-setup_tarball: $(DIR_PREFIX)setup$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)setup$(CD_VERSION).tar.gz
-
-symbols_tarball: $(DIR_PREFIX)symbols$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)symbols$(CD_VERSION).tar.gz
-
-utils_tarball: $(DIR_PREFIX)utils$(CD_VERSION).tar.gz
-	tar -zxvf $(DIR_PREFIX)utils$(CD_VERSION).tar.gz
-
-libgeda_tarball: libgeda$(CD_VERSION).tar.gz
-	tar -zxvf libgeda$(CD_VERSION).tar.gz
diff --git a/docs/autogen.sh b/docs/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/docs/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/docs/configure.ac b/docs/configure.ac
deleted file mode 100644
index e1008ac..0000000
--- a/docs/configure.ac
+++ /dev/null
@@ -1,78 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([wiki/index.html])
-AC_PREREQ(2.54)
-
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-PACKAGE=geda-docs
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Init automake
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-
-# Check for programs.
-
-# Checks for libraries.
-
-# Checks for header files.
-
-# Checks for typedefs, structures, and compiler characteristics.
-
-# Checks for library functions.
-
-
-# Other variables
-#
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-	gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-AC_SUBST(GEDADOCDIR)
-
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-
-AC_CONFIG_FILES([Makefile 
-		 toplevel/Makefile 
-		 toplevel/gedadocs.html 
-                 scripts/Makefile 
-                 wiki/Makefile 
-		 wiki/_detail/Makefile
- 		 wiki/_media/Makefile
-		 wiki/lib/exe/Makefile
-		 wiki/lib/images/interwiki/Makefile
-		 wiki/lib/images/fileicons/Makefile
-		 wiki/lib/images/smileys/Makefile
-		 wiki/lib/images/Makefile
-		 wiki/lib/tpl/geda/images/Makefile
-		 wiki/lib/tpl/geda/Makefile
-		 wiki/lib/tpl/Makefile
-		 wiki/lib/plugins/note/images/Makefile
-		 wiki/lib/plugins/note/Makefile
-		 wiki/lib/plugins/definitionlist/images/Makefile
-		 wiki/lib/plugins/definitionlist/Makefile
-	 	 wiki/lib/plugins/Makefile
-		 wiki/lib/Makefile ])
-AC_OUTPUT
-
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION:
-
-   documentation directory:          $expandedGEDADOCDIR
-])
-
diff --git a/examples/autogen.sh b/examples/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/examples/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/examples/configure.ac b/examples/configure.ac
deleted file mode 100644
index 90f61e5..0000000
--- a/examples/configure.ac
+++ /dev/null
@@ -1,52 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([gTAG/gTAG.sch])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-examples
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake 
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-	gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-AC_SUBST(GEDADOCDIR)
-
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-
-AC_CONFIG_FILES([ 
-        Makefile 
-        gTAG/Makefile 
-        lightning_detector/Makefile 
-        lightning_detector/sym/Makefile 
-        RF_Amp/Makefile 
-        RF_Amp/model/Makefile 
-        RF_Amp/sym/Makefile 
-        TwoStageAmp/Makefile 
-        TwoStageAmp/models/Makefile 
-        TwoStageAmp/sym/Makefile ])
-
-AC_OUTPUT 
-
-AC_MSG_RESULT([
-** Configuration complete for $PACKAGE $DOTTED_VERSION.$DATE_VERSION
-])
-
diff --git a/gattrib/autogen.sh b/gattrib/autogen.sh
deleted file mode 100755
index ec247af..0000000
--- a/gattrib/autogen.sh
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(grep "^AX_DESKTOP_I18N" $srcdir/$configure_script >/dev/null) && {
-  (test -x $srcdir/desktop-i18n) || {
-    echo
-    echo
-    echo "**Error**: The desktop-i18n program is missing."
-    echo "Ensure that your tarballs are intact or that your git"
-    echo "checkout is up-to-date."
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS -I m4"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^AX_DESKTOP_I18N" $configure_script >/dev/null; then
-        echo "autogen.sh running: desktop-i18n ..."
-        ./desktop-i18n --setup
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/gattrib/configure.ac b/gattrib/configure.ac
deleted file mode 100644
index 39c66a6..0000000
--- a/gattrib/configure.ac
+++ /dev/null
@@ -1,436 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/gattrib.c])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-gattrib
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-# Create option to debug
-AC_ARG_ENABLE(debug,
-[ --enable-debug  Sets the DEBUG flag which causes lots of debug spew to be generated],
-[ AC_DEFINE(DEBUG, 1, DEBUG) ]
-)
-
-
-#########################################################################
-# Command line flags start
-# 
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# Change default location for XDG files (.desktop and icons)
-AC_ARG_WITH(xdgdatadir, [  --with-xdgdatadir=path  Change where the .desktop file and theme icons are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
-
-# 
-# Command line flags end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")	
-AC_PROG_MAKE_SET
-AC_PATH_PROGS(AWK, nawk gawk mawk awk, )
-
-############################################################################
-# Update desktop database utility start
-#
-
-AC_ARG_ENABLE(update-desktop-database,
-   AC_HELP_STRING([--disable-update-desktop-database],
-                   [do not update desktop file database after installation]),,
-                   enable_update_desktop_database=yes)
-
-AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE,
-               test x$enable_update_desktop_database = xyes)
-
-if test x$enable_update_desktop_database = xyes ; then
-  AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
-  if test $UPDATE_DESKTOP_DATABASE = no; then
-     AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
-  fi
-fi
-
-#
-# Update desktop database utility end
-############################################################################
-
-# Set up internationalisation
-AM_NLS
-AM_GNU_GETTEXT_VERSION([0.16])
-AX_DESKTOP_I18N
-
-#########################################################################
-# 
-#  Misc win32 / mingw checks and variables start
-#  Win32 stuff currently unsupported by SDB.
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-   MINGW_CFLAGS="-mms-bitfields -mwindows"
-else
-   # Unix host
-   MINGW="no"
-   MINGW_CFLAGS=
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-############################################################################
-# Check for guile start
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-   AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-   # Find about the installed guile
-   GUILE_FLAGS
-   GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for misc things. . . .
-# 
-# Checking for rint in math library
-AC_CHECK_LIB(m, rint, AC_DEFINE(HAS_RINT, 1, [If your math library has rint in it, define this]), no_RINT="yes")
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-############################################################################
-
-
-############################################################################
-##  This is looks for GTK
-#                                                                                      
-# Search for gtk+ 2.8.x
-PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.10.0], GTK="yes", no_GTK="yes")
-
-# This next bit of code figures out what gtk we need to use.
-if test "$GTK" = "yes"
-then
-   GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
-
-   # Search for glib
-   PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-   if test "$GLIB" != "yes"
-   then
-       AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-   fi
-   GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-##   GTKITEMENTRY_SOURCE=gtkitementry_2_2.c gtkitementry_2_2.h
-
-   # Search for gthread
-   PKG_CHECK_MODULES(GTHREAD, [gthread-2.0], GTHREAD="yes", no_GTHREAD="yes")
-   if test "$GTHREAD" = "yes"
-   then
-       AC_DEFINE(HAVE_GTHREAD, 1, [If gthread support is installed, define this])
-   fi
-
-else
-   GTK_VERSION=""
-fi
-
-if test "$GTK_VERSION" = ""
-then
-   AC_MSG_ERROR([Cannot find gtk+ 2.10.0 or later, please install it and rerun ./configure.])
-fi
-
-#
-# Check for gtk+ end
-############################################################################
-
-
-############################################################################
-# Check for libgeda start
-# 
-PKG_CHECK_MODULES(LIBGEDA, [libgeda >= $DATE_VERSION], LIBGEDA="yes", 
-                  no_LIBGEDA="yes")
-
-if test "$LIBGEDA" = "yes" 
-then
-   LIBGEDA_VERSION=`$PKG_CONFIG libgeda --modversion`
-else
-   AC_MSG_ERROR([libgeda detection error: $LIBGEDA_PKG_ERRORS])
-fi
-
-# 
-# Check for libgeda end
-############################################################################
-
-############################################################################
-# Check for doxygen start
-#
-
-# Doxygen is a utility for generating html and latex documentation
-# from c source code files.
-
-# search for Doxygen
-AC_PATH_PROG(DOXYGEN, doxygen, no, ${PATH})
-
-if test "$DOXYGEN" = "no"; then
-   # doxygen is not available on the system
-   echo "** Cannot find Doxygen! **"
-   echo "**   Documentation creation disabled    **"
-   DOXYGEN=echo
-
-   # prevent from creating html and latex documents.
-   # but does not prevent from processing gschemdoc
-   builddoc=false
-else
-   # doxygen is available on the system.
-   # now checking if the tools for Texinfo files processing
-   # is installed.
-   # The docs can be either processed to produce dvi, html or info
-   # with texi2dvi, texi2html or makeinfo respectively
-   # Note : these tests on makeinfo and texi2dvi are no more
-   #        needed as automake makes them for us
-
-   # enable the creation of html and latex documents.
-   builddoc=true
-fi
-
-# depending on variable builddoc, weaving is performed or not
-# using conditionnal in docs/Makefile.in
-AM_CONDITIONAL(BUILDDOC, test x$builddoc = xtrue)
-
-#
-# Check for doxygen end
-#########################################################################
-
-
-#########################################################################
-# Checks for header files start
-# 
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h stdlib.h \
-                 stdarg.h assert.h fcntl.h errno.h \
-		 dirent.h sys/param.h getopt.h)
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(getopt_long)
-
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-
-if test $optarg_found = yes; then
-    AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# 
-# Checks for header files end
-#########################################################################
-
-#########################################################################
-#
-
-# ------------- dmalloc -------------------
-dnl dmalloc checks
-with_dmalloc="no"
-AC_MSG_CHECKING([if dmalloc debugging should be enabled])
-AC_ARG_ENABLE([dmalloc],
-[  --enable-dmalloc        Compile and link with dmalloc for malloc debugging [[default=no]]],
-[
-if test "X$enable_dmalloc" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_HEADER(dmalloc.h,,
-                AC_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
-        AC_CHECK_LIB(dmalloc,main,,
-                AC_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
-        DMALLOC_LIBS="-ldmalloc"
-        with_dmalloc="yes"
-else
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-fi
-],
-[
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-])
-
-# ------------- ElectricFence -------------------
-dnl ElectricFence checks
-with_efence="no"
-AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
-AC_ARG_ENABLE([efence],
-[  --enable-efence         Link with ElectricFence for malloc debugging [[default=no]]],
-[
-if test "X$enable_efence" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-	if test "X$with_dmalloc" = "Xyes" ; then
-		AC_ERROR([You have requested both dmalloc and Electric Fence, however only 1 is allowed.])
-	fi
-        AC_CHECK_LIB(efence,main,,
-                AC_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
-        with_efence="yes"
-else
-        AC_MSG_RESULT([no])
-fi
-],
-[
-AC_MSG_RESULT([no])
-])
-
-#
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specify setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path not was specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-if test x$opt_xdgdatadir = x; then
-        # path was not specified with --with-xdgdatadir
-        XDGDATADIR='${datadir}'
-else
-        # path WAS specified with --with-xdgdatadir
-        XDGDATADIR="$opt_xdgdatadir"
-fi
-AC_SUBST(XDGDATADIR)
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-GATTRIB_CFLAGS="$MINGW_CFLAGS $GTK_CFLAGS $GLIB_CFLAGS $LIBGEDA_CFLAGS $GTHREAD_CFLAGS $GUILE_CFLAGS"
-GATTRIB_LDFLAGS="$GTK_LIBS $GLIB_LIBS $LIBGEDA_LIBS $GTHREAD_LIBS $GUILE_LIBS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GATTRIB_CFLAGS)
-AC_SUBST(GATTRIB_LDFLAGS)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(GEDADATADIR)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile 
-		 src/Makefile
-		 lib/Makefile 
-		 docs/Makefile
-		 design/Makefile
-		 include/Makefile 
-		 data/Makefile
-		 po/Makefile.in
-		 po/Makefile
-		 lib/system-gattribrc
-		])
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
-
-AC_MSG_RESULT([
-***** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION *****
-
-== libgeda library version:          $LIBGEDA_VERSION
-== data directory:                   $expandedGEDADATADIR
-== rc directory:                     $expandedGEDARCDIR
-== xdg directory:                    $expandedXDGDATADIR
-== compiler flags:                   $GATTRIB_CFLAGS
-== linker flags:                     $GATTRIB_LDFLAGS
-== glib compiler flags:              $GLIB_CFLAGS
-== glib linker libs:                 $GLIB_LIBS
-== glib library version:             $GLIB_VERSION
-== gtk compiler flags:               $GTK_CFLAGS
-== gtk linker libs:                  $GTK_LIBS
-== gtk library version:              $GTK_VERSION
-== dmalloc debugging:                $with_dmalloc
-== Electric Fence debugging:         $with_efence
-
-************************************************************
-])
-
diff --git a/gnetlist/acinclude.m4 b/gnetlist/acinclude.m4
deleted file mode 100644
index 66be5b7..0000000
--- a/gnetlist/acinclude.m4
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-#-------------------------------------------------------------------------- 
-#
-# Various awk checks
-#
-
-dnl This is just like the AC_PROG_AWK that comes with autoconf
-dnl except it gets the path as well.  Note that we go ahead and
-dnl say that we provide AC_PROG_AWK since we did one better.
-AC_DEFUN([AC_PATH_AWK],
-  [AC_PATH_PROGS(AWK, mawk gawk nawk awk, )
-  AC_PROVIDE([AC_PROG_AWK])dnl
-])
-
-dnl Now for various awk checks.
-dnl
-
-dnl AC_TRY_AWK(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
-AC_DEFUN([AC_TRY_AWK],
-[AC_REQUIRE([AC_PROG_AWK])dnl
-cat > conftest.awk <<EOF
-[#]line __oline__ "configure"
-[$1]
-EOF
-cat > conftest.txt <<EOF
-foo bar
-EOF
-if ($AWK -f conftest.awk conftest.txt >/dev/null; exit) 2>&AC_FD_CC
-then
-dnl
-  AC_MSG_RESULT(yes)
-  ifelse([$2], , :, [$2])
-else
-  AC_MSG_RESULT(no)
-  echo "configure:__oline__: $AWK -f conftest.awk conftest.txt" >&AC_FD_CC
-  echo "configure:__oline__: failed program was:" >&AC_FD_CC
-  cat conftest.awk >&AC_FD_CC
-  echo "configure:__oline__: failed input file was:" >&AC_FD_CC
-  cat conftest.txt >&AC_FD_CC
-ifelse([$3], , , [  rm -fr conftest*
-  $3
-])dnl
-fi
-rm -fr conftest*])
-
-# see if AWK has the 'gensub' function
-# AC_AWK_GENSUB(ACTION-IF-TRUE [, ACTION-IF-FALSE])
-#
-AC_DEFUN([AC_AWK_GENSUB],
-[AC_MSG_CHECKING([whether awk ($AWK) has gensub])
-AC_TRY_AWK([{gensub(/foo/,"bar","g");}] ,[$1] ,[$2])
-])dnl
-
-# see if AWK has the 'gsub' function
-# AC_AWK_GSUB(ACTION-IF-TRUE [, ACTION-IF-FALSE])
-#
-AC_DEFUN([AC_AWK_GSUB],
-[AC_MSG_CHECKING([whether awk ($AWK) has gsub])
-AC_TRY_AWK([{gsub(/foo/,"bar");}] ,[$1] ,[$2])
-])dnl
-
-# see if AWK has the 'strftime' function
-# AC_AWK_STRFTIME(ACTION-IF-TRUE [, ACTION-IF-FALSE])
-#
-AC_DEFUN([AC_AWK_STRFTIME],
-[AC_MSG_CHECKING([whether awk ($AWK) has strftime])
-AC_TRY_AWK([{print strftime()}] ,[$1] ,[$2])
-])dnl
-
-# see if AWK has the 'toupper' function
-# AC_AWK_TOUPPER(ACTION-IF-TRUE [, ACTION-IF-FALSE])
-#
-AC_DEFUN([AC_AWK_TOUPPER],
-[AC_MSG_CHECKING([whether awk ($AWK) has toupper])
-AC_TRY_AWK([{print toupper("test")}] ,[$1] ,[$2])
-])dnl
-
-
-#
-#-------------------------------------------------------------------------- 
-
-
diff --git a/gnetlist/autogen.sh b/gnetlist/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/gnetlist/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/gnetlist/configure.ac b/gnetlist/configure.ac
deleted file mode 100644
index 17cd24a..0000000
--- a/gnetlist/configure.ac
+++ /dev/null
@@ -1,437 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/gnetlist.c])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-gnetlist
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake 
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-#########################################################################
-# Command line flags start
-# 
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-AC_MSG_CHECKING([For the default pcb installation data directory])
-AC_ARG_WITH(pcb-datadir,
-	[  --with-pcb-datadir=path
-                          Change the default location for an installed pcb.  This is used
-                          to set the default search path for pcb newlib libraries.
-                          [[default=${datadir}]]],
-        [PCBDATADIR=$withval],
-        [PCBDATADIR="${datadir}"]
-)
-AC_MSG_RESULT([${PCBDATADIR}])
-AC_SUBST(PCBDATADIR)
-
-# Change default location for pcb's m4 library directory
-AC_MSG_CHECKING([For the default pcb m4 directory])
-AC_ARG_WITH(pcbm4dir,
-	[  --with-pcbm4dir=path     Change where the PCB m4 files are installed [[default=${PCBDATADIR}/pcb/m4]]],
-        [PCBM4DIR=$withval],
-	[PCBM4DIR="${PCBDATADIR}/pcb/m4"]
-)
-AC_MSG_RESULT([${PCBM4DIR}])
-AC_SUBST(PCBM4DIR)
- default location for pcb's newlib library directory
-AC_ARG_WITH(pcb-newlib-path,
-	[  --with-pcb-newlib-path=path   Change the default search path for PCB newlib libraries [[default=${datadir}/pcb/pcblib-newlib:${datadir}/pcb/newlib:]]],
-        [PCBLIBPATH=$withval],
-	[PCBLIBPATH="${datadir}/pcb/pcblib-newlib:${datadir}/pcb/newlib"]
-)
-AC_SUBST(PCBLIBPATH)
-
-# Change default location for pcb's m4 site configuration directory
-AC_ARG_WITH(pcbconfdir,
-	[  --with-pcbconfdir=path     Change where the PCB site config files are installed [[default=${sysconfdir}/pcb]]],
-        [PCBCONFDIR=$withval],
-	[PCBCONFDIR="${sysconfdir}/pcb"]
-)
-AC_SUBST(PCBCONFDIR)
-
-## Added by SDB 3.3.2006
-# Check for getopt_long
-dnl check GNU getopt() - thanks libcmml!
-HAVE_GETOPT_LONG="no"
-GETOPT_LONG_LIBS=""
-AC_CHECK_FUNC([getopt_long], [HAVE_GETOPT_LONG="yes"])
-if test "x$HAVE_GETOPT_LONG" != xyes ; then
-        dnl FreeBSD has a gnugetopt library
-        AC_CHECK_LIB([gnugetopt], [getopt_long], [HAVE_GETOPT_LONG="yes"])
-        if test "x$HAVE_GETOPT_LONG" = xyes ; then
-                GETOPT_LONG_LIBS="-lgnugetopt"
-        fi
-fi
-if test "x$HAVE_GETOPT_LONG" = xyes ; then
-	AC_DEFINE(HAVE_GETOPT_LONG, [], [Define to 1 if you have the 'getopt_long' function])
-fi
-AC_SUBST(GETOPT_LONG_LIBS)
-AC_SUBST(HAVE_GETOPT_LONG)
-
-# 
-# Command line flags end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")    
-AC_PROG_CPP
-AC_PROG_MAKE_SET
-AC_PATH_AWK
-AC_AWK_GSUB([], [AC_MSG_ERROR([We require an awk implementation that provides gsub().  Consider installing gawk.])])
-AC_AWK_TOUPPER([], [AC_MSG_ERROR([We require an awk implementation that provides toupper().  Consider installing gawk.])])
-AC_PATH_PROGS(M4, gm4 m4, m4)
-
-##############################################################3
-# Test for __func__
-#
-
-AC_MSG_CHECKING([For a working C99 __func__])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-        [[const char *foo = __func__;]])],
-   [ac_cv_cpp_func=yes],
-   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-                [[const char *foo = __FUNCTION__;]])],
-                [ac_cv_cpp_func=__FUNCTION__],
-                [ac_cv_cpp_func="\"no\""])]
-)
-
-if test "X$ac_cv_cpp_func" = "X__FUNCTION__"; then
-        AC_MSG_RESULT([__FUNCTION__])
-elif test "x$ac_cv_cpp_func" = "xyes" ; then
-        AC_MSG_RESULT([__func__])
-else
-        AC_MSG_RESULT([no])
-fi
-if test "X$ac_cv_cpp_func" != "Xyes" ; then
-	AC_DEFINE_UNQUOTED([__func__], [$ac_cv_cpp_func], [Define to be a __func__ replacement])
-fi
-
-#
-##############################################################3
-
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-else
-   # Unix host
-   MINGW="no"
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-
-############################################################################
-# Check for guile start
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-   AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-   # Find about the installed guile
-   GUILE_FLAGS
-   GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for mics things start
-# 
-# Checking for rint in math library
-AC_CHECK_LIB(m, rint, AC_DEFINE(HAS_RINT, 1, [If your math library has rint in it, define this]), no_RINT="yes")
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-# Check for mics things start
-############################################################################
-
-############################################################################
-# Check for libgeda start
-# 
-PKG_CHECK_MODULES(LIBGEDA, [libgeda >= $DATE_VERSION], LIBGEDA="yes", 
-                  no_LIBGEDA="yes")
-
-if test "$LIBGEDA" = "yes" 
-then
-   LIBGEDA_VERSION=`$PKG_CONFIG libgeda --modversion`
-else
-   AC_MSG_ERROR([libgeda detection error: $LIBGEDA_PKG_ERRORS])
-fi
-
-# 
-# Check for libgeda end
-############################################################################
-
-############################################################################
-# Check for glib start
-#
-
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-
-# This next bit of code figures out what glib we need to use.
-if test "$GLIB" != "yes"
-then
-   AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-fi
-GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-#
-# Check for glib end
-############################################################################
-
-#########################################################################
-# Checks for header files start
-# 
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h strings.h stdlib.h \
-                 stdarg.h assert.h fcntl.h errno.h getopt.h)
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(strstr)
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-
-if test $optarg_found = yes; then
-    AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# 
-# Checks for header files start
-#########################################################################
-
-#########################################################################
-#
-
-# ------------- dmalloc -------------------
-dnl dmalloc checks
-with_dmalloc="no"
-AC_MSG_CHECKING([if dmalloc debugging should be enabled])
-AC_ARG_ENABLE([dmalloc],
-[  --enable-dmalloc        Compile and link with dmalloc for malloc debugging [[default=no]]],
-[
-if test "X$enable_dmalloc" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_HEADER(dmalloc.h,,
-                AC_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
-        AC_CHECK_LIB(dmalloc,main,,
-                AC_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
-        DMALLOC_LIBS="-ldmalloc"
-        with_dmalloc="yes"
-else
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-fi
-],
-[
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-])
-
-# ------------- ElectricFence -------------------
-dnl ElectricFence checks
-with_efence="no"
-AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
-AC_ARG_ENABLE([efence],
-[  --enable-efence         Link with ElectricFence for malloc debugging [[default=no]]],
-[
-if test "X$enable_efence" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_LIB(efence,main,,
-                AC_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
-        with_efence="yes"
-else
-        AC_MSG_RESULT([no])
-fi
-],
-[
-AC_MSG_RESULT([no])
-])
-
-#
-#########################################################################
-#########################################################################
-# Check for groff start
-#
-
-# search for groff
-AC_PATH_PROG(GROFF, groff, no, ${PATH})
-if test $GROFF = "no"; then
-        echo "Cannot find groff, some documentation will not be created."
-fi
-
-# 
-# Check for groff end
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specify setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path not was specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-        gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-AC_SUBST(GEDADOCDIR)
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-GNETLIST_CFLAGS="$GLIB_CFLAGS $LIBGEDA_CFLAGS $GUILE_CFLAGS"
-GNETLIST_LDFLAGS="$GLIB_LIBS $LIBGEDA_LIBS $DMALLOC_LIBS $GUILE_LIBS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GNETLIST_CFLAGS)
-AC_SUBST(GNETLIST_LDFLAGS)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(GEDADATADIR)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile 
-		 src/Makefile 
-		 include/Makefile 
-		 scheme/Makefile 
-		 examples/Makefile 
-		 tests/Makefile 
-		 tests/hierarchy/Makefile 
-		 tests/hierarchy2/Makefile 
-		 tests/drc2/Makefile
-		 tests/common/Makefile
-		 docs/Makefile 
-		 docs/vams/Makefile 
-		 examples/vams/Makefile 
-		 examples/vams/vhdl/Makefile 
-		 examples/vams/vhdl/basic-vhdl/Makefile 
-		 examples/vams/vhdl/new-vhdl/Makefile 
-		 examples/switcap/Makefile 
-		 lib/Makefile 
-		 utils/Makefile 
-		 scripts/Makefile
-		 scripts/annotate.sh
-		 scripts/bom_xref.sh
-		 scripts/bompp.sh
-		 scripts/sw2asc 
-		 lib/system-gnetlistrc ])
-AC_CONFIG_COMMANDS([annotate-chmod],[[chmod +x scripts/annotate.sh]],[[]])
-AC_CONFIG_COMMANDS([bom_xref-chmod],[[chmod +x scripts/bom_xref.sh]],[[]])
-AC_CONFIG_COMMANDS([bompp-chmod],[[chmod +x scripts/bompp.sh]],[[]])
-AC_CONFIG_COMMANDS([sw2asc-chmod],[[chmod +x scripts/sw2asc]],[[]])
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-expandedPCBM4DIR=`eval "echo $PCBM4DIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION:
-
-   libgeda library version:          $LIBGEDA_VERSION
-   mingw build:                      $MINGW
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   documentation directory:          $expandedGEDADOCDIR
-   default PCB m4 directory:         $expandedPCBM4DIR
-   dmalloc debugging:                $with_dmalloc
-   Electric Fence debugging:         $with_efence
-])
-
diff --git a/gschem/autogen.sh b/gschem/autogen.sh
deleted file mode 100755
index a987ad5..0000000
--- a/gschem/autogen.sh
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-# Automake required version
-AM_1=1  # Major number
-AM_2=6
-AM_3=0  # Minor number
-
-# Possible names for libtool/libtoolize
-libtoolize_candidates="libtoolize glibtoolize"
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  LIBTOOLIZE=`which $libtoolize_candidates 2>/dev/null | head -n1`
-  (! test -z "$LIBTOOLIZE") || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(grep "^AX_DESKTOP_I18N" $srcdir/$configure_script >/dev/null) && {
-  (test -x $srcdir/desktop-i18n) || {
-    echo
-    echo
-    echo "**Error**: The desktop-i18n program is missing."
-    echo "Ensure that your tarballs are intact or that your git"
-    echo "checkout is up-to-date."
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-# check automake version. Test came from gpsd version 2.34. cnieves 2007-02-10
-if [ -z "$NO_AUTOMAKE" ]; then
-  AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.*\([0-9]*\).*$#\1 \2 \3#p'`
-  AM_V1=`echo $AM_VERSION | awk '{print $1}'`
-  AM_V2=`echo $AM_VERSION | awk '{print $2}'`
-  AM_V3=`echo $AM_VERSION | awk '{print $3}'`
-
-  if [ "$AM_1" -gt "$AM_V1" ]; then
-    AM_ERROR=1 
-  else
-    if [ "$AM_1" -eq "$AM_V1" ]; then
-      if [ "$AM_2" -gt "$AM_V2" ]; then
-        AM_ERROR=1 
-      else
-        if [ "$AM_2" -eq "$AM_V2" ]; then
-          if [ -n "$AM_V3" -a "$AM_3" -gt "$AM_V3" ]; then
-            AM_ERROR=1 
-          fi
-        fi
-      fi
-    fi
-  fi
-
-  if [ -n "$AM_ERROR" ]; then
-    echo
-    echo "**Error**: Found automake version $AM_V1.$AM_V2.$AM_V3"
-    echo "You must have \`automake' version $AM_1.$AM_2.$AM_3 or greater installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  fi 
-fi
-
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS -I m4"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-        echo "autogen.sh running: autopoint ..."
-        echo "no" | autopoint --force
-      fi
-      if grep "^AX_DESKTOP_I18N" $configure_script >/dev/null; then
-        echo "autogen.sh running: desktop-i18n ..."
-        ./desktop-i18n --setup
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-          echo "autogen.sh running: libtoolize ..."
-          $LIBTOOLIZE --force --copy
-      fi
-
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      status=$?
-      if test ! "$status" = 0; then
-        echo autogen.sh exiting...
-        exit $status
-      fi
-
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/gschem/configure.ac b/gschem/configure.ac
deleted file mode 100644
index 36b786f..0000000
--- a/gschem/configure.ac
+++ /dev/null
@@ -1,532 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/gschem.c])
-AC_CONFIG_MACRO_DIR([m4])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-gschem
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake 
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-# Call this to make autoconf and friends happy
-AC_GNU_SOURCE
-
-#########################################################################
-# Command line flags start
-# 
-# --disable-stroke : turn off stroke support
-AC_ARG_ENABLE(stroke,
-    [  --disable-stroke       Disable stroke support (don't use LibStroke at all)], [ if test $enableval = "no"; then
-	 no_stroke=yes
-        fi ])
-
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# Change default location for XDG files (.desktop and icons)
-AC_ARG_WITH(xdgdatadir, [  --with-xdgdatadir=path  Change where the .desktop file and theme icons are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
-
-# Allow the user to specify where there libstroke library lives
-AC_ARG_WITH(stroke, [  --with-stroke=DIR       Tell configure where to find libstroke], [opt_stroke=$withval])
-
-# 
-# Command line flags end
-#########################################################################
-
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-   MINGW_CFLAGS="-mms-bitfields -mwindows"
-else
-   # Unix host
-   MINGW="no"
-   MINGW_CFLAGS=
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")    
-AC_PROG_CPP
-AC_PROG_MAKE_SET
-
-
-############################################################################
-# Update desktop database utility start
-#
-
-AC_ARG_ENABLE(update-desktop-database,
-   AC_HELP_STRING([--disable-update-desktop-database],
-                   [do not update desktop file database after installation]),,
-                   enable_update_desktop_database=yes)
-
-AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE,
-               test x$enable_update_desktop_database = xyes)
-
-if test x$enable_update_desktop_database = xyes ; then
-  AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
-  if test $UPDATE_DESKTOP_DATABASE = no; then
-     AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
-  fi
-fi
-
-#
-# Update desktop database utility end
-############################################################################
-
-############################################################################
-# Check for guile start
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-   AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-   # Find about the installed guile
-   GUILE_FLAGS
-   GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for mics things start
-# 
-# Checking for rint in math library
-AC_CHECK_LIB(m, rint, AC_DEFINE(HAS_RINT, 1, [If your math library has rint in it, define this]), no_RINT="yes")
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-# Check for mics things start
-############################################################################
-
-############################################################################
-# Check for gtk+ start
-# 
-
-PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.10.0], GTK="yes", no_GTK="yes")
-
-# This next bit of code figures out what gtk we need to use.
-if test "$GTK" = "yes"
-then
-   GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
-
-   # Search for glib
-   PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-   if test "$GLIB" != "yes"
-   then
-       AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-   fi
-   GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-   # Search for gthread
-   PKG_CHECK_MODULES(GTHREAD, [gthread-2.0], GTHREAD="yes", no_GTHREAD="yes")
-   if test "$GTHREAD" = "yes"
-   then
-       AC_DEFINE(HAVE_GTHREAD, 1, [If gthread support is installed, define this])
-   fi
-
-else
-   GTK_VERSION=""
-fi
-
-if test "$GTK_VERSION" = ""
-then
-   AC_MSG_ERROR([Cannot find gtk+ 2.10.0 or later, please install it and rerun ./configure.])
-fi
-
-# 
-# Check for gtk+ end
-############################################################################
-
-############################################################################
-# Check for cairo start
-#
-
-PKG_CHECK_MODULES(CAIRO, [cairo >= 1.2.0], CAIRO="yes", no_CAIRO="yes")
-
-if test "$CAIRO" = "yes"
-then
-   CAIRO_VERSION=`$PKG_CONFIG cairo --modversion`
-else
-   AC_MSG_ERROR([Cannot find cairo 1.2.0 or later, please install or configure with --disable-cairo])
-fi
-
-#
-# Check for cairo end
-############################################################################
-
-############################################################################
-# Check for libgeda start
-# 
-PKG_CHECK_MODULES(LIBGEDA, [libgeda >= $DATE_VERSION], LIBGEDA="yes", 
-                  no_LIBGEDA="yes")
-
-if test "$LIBGEDA" = "yes" 
-then
-   LIBGEDA_VERSION=`$PKG_CONFIG libgeda --modversion`
-else
-   AC_MSG_ERROR([libgeda detection error: $LIBGEDA_PKG_ERRORS])
-fi
-
-# 
-# Check for libgeda end
-############################################################################
-
-############################################################################
-# Check for libstroke start
-#
-
-# user specified --with-stroke
-if eval "test x$opt_stroke != x"; then
-   LIBSTROKE_LIBS="-L$opt_stroke/lib"
-   LIBSTROKE_CFLAGS="-I$opt_stroke/include"
-fi
-
-# only check if the user has not disable strokes
-if test "$no_stroke" != "yes"; then
-   save_cppflags="$CPPFLAGS"
-   save_ldflags="$LDFLAGS"
-   CPPFLAGS="$CPPFLAGS $LIBSTROKE_CFLAGS"
-   LDFLAGS="$LDFLAGS $LIBSTROKE_LIBS"
-   AC_CHECK_LIB(stroke, stroke_init, LIBSTROKE="yes", LIBSTROKE="no")
-   CPPFLAGS="$save_cppflags"
-   LDFLAGS="$save_ldflags"
-fi
-
-if test "$LIBSTROKE" = "yes"; then
-   AC_DEFINE(HAS_LIBSTROKE, 1, [Define if you have libstroke installed])
-   if eval "test x$opt_stroke = x"; then
-       LIBSTROKE_LIBS="-lstroke"
-       LIBSTROKE_CFLAGS=""
-   else
-       LIBSTROKE_LIBS="$LIBSTROKE_LIBS -lstroke"
-       # LIBSTROKE_CFLAGS set above
-   fi
-fi
-
-if test "$no_stroke" = "yes"; then
-   echo "**                                **"
-   echo "** Disabling libstroke by request **"
-   echo "**                                **"
-   LIBSTROKE_LIB=""
-   LIBSTROKE_CFLAGS=""
-   LIBSTROKE="no"
-fi
-
-#
-# Check for libstroke end
-############################################################################
-
-############################################################################
-# Check for doxygen start
-# 
-# Doxygen is a utility for generating html and latex documentation
-# from c source code files.
-
-# search for Doxygen
-AC_PATH_PROG(DOXYGEN, doxygen, no, ${PATH})
-
-if test "$DOXYGEN" = "no"; then 
-   # doxygen is not available on the system
-   echo "** Cannot find Doxygen! **"
-   echo "**   Documentation creation disabled    **"
-   DOXYGEN=echo
-
-   # prevent from weaving the nw files
-   # but does not prevent from processing gschemdoc
-   builddoc=false
-else 
-   # doxygen is available on the system.
-   # now checking if the tools for Texinfo files processing
-   # is installed.
-   # The docs can be either processed to produce dvi, html or info
-   # with texi2dvi, texi2html or makeinfo respectively
-   # Note : these tests on makeinfo and texi2dvi are no more 
-   #        needed as automake makes them for us
-
-   # enable the creation of html and latex documents.
-   builddoc=true
-fi
-
-# depending on variable builddoc, weaving is performed or not
-# using conditionnal in docs/Makefile.in
-AM_CONDITIONAL(BUILDDOC, test x$builddoc = xtrue)
-
-# 
-# Check for doxygen end
-#########################################################################
-
-#########################################################################
-# Check for groff start
-# 
-
-# search for groff
-AC_PATH_PROG(GROFF, groff, no, ${PATH})
-if test $GROFF = "no"; then
-        echo "Cannot find groff, some documentation will not be created."
-fi
-
-# 
-# Check for groff end
-#########################################################################
-
-#########################################################################
-# Checks for header files start
-# 
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h stdlib.h \
-                 stdarg.h assert.h fcntl.h errno.h sys/param.h)
-
-# Check for locale.h
-
-# Set USE_NLS
-AM_NLS
-AC_CHECK_HEADER([locale.h],
-                [AC_DEFINE([HAVE_LOCALE_H], 1, [Define if you have locale.h])],
-                [
-                  if test "$USE_NLS" = "yes"; then
-                    AC_MSG_ERROR([Cannot find useful locale.h, and nls support is enabled. Try compiling with --disable-nls])
-                  fi
-                ])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(strstr getuid getgid)
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-
-if test $optarg_found = yes; then
-    AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# 
-# Checks for header files end
-#########################################################################
-
-#########################################################################
-#
-
-# ------------- dmalloc -------------------
-dnl dmalloc checks
-with_dmalloc="no"
-AC_MSG_CHECKING([if dmalloc debugging should be enabled])
-AC_ARG_ENABLE([dmalloc],
-[  --enable-dmalloc        Compile and link with dmalloc for malloc debugging [[default=no]]],
-[
-if test "X$enable_dmalloc" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_HEADER(dmalloc.h,,
-                AC_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
-        AC_CHECK_LIB(dmalloc,main,,
-                AC_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
-        DMALLOC_LIBS="-ldmalloc"
-        with_dmalloc="yes"
-else
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-fi
-],
-[
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-])
-
-# ------------- ElectricFence -------------------
-dnl ElectricFence checks
-with_efence="no"
-AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
-AC_ARG_ENABLE([efence],
-[  --enable-efence         Link with ElectricFence for malloc debugging [[default=no]]],
-[
-if test "X$enable_efence" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_LIB(efence,main,,
-                AC_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
-        with_efence="yes"
-else
-        AC_MSG_RESULT([no])
-fi
-],
-[
-AC_MSG_RESULT([no])
-])
-
-#
-#########################################################################
-#########################################################################
-# gEDA/gaf specific setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path was not specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-if test x$opt_xdgdatadir = x; then
-        # path was not specified with --with-xdgdatadir
-        XDGDATADIR='${datadir}'
-else
-        # path WAS specified with --with-xdgdatadir
-        XDGDATADIR="$opt_xdgdatadir"
-fi
-AC_SUBST(XDGDATADIR)
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-        gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-AC_SUBST(GEDADOCDIR)
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-# Initialized gettext 
-AM_GNU_GETTEXT
-AM_GNU_GETTEXT_VERSION([0.16])
-
-AX_DESKTOP_I18N
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-GSCHEM_CFLAGS="$MINGW_CFLAGS $LIBSTROKE_CFLAGS $LIBGEDA_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $GTHREAD_CFLAGS $GUILE_CFLAGS"
-GSCHEM_LDFLAGS="$LIBSTROKE_LIBS $LIBGEDA_LIBS $GLIB_LIBS $GTK_LIBS $DMALLOC_LIBS $GTHREAD_LIBS $GUILE_LIBS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GSCHEM_CFLAGS)
-AC_SUBST(GSCHEM_LDFLAGS)
-AC_SUBST(GEDADATADIR)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(GUILEINTERP)
-AC_SUBST(INDENT)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile 
-                po/Makefile.in 
-                intl/Makefile 
-		src/Makefile
-		include/Makefile
-		scheme/Makefile
-		bitmap/Makefile
-		scripts/Makefile
-		scripts/config.sh
-		examples/Makefile
-		docs/Makefile
-		lib/Makefile
-		tests/Makefile
-		data/Makefile
-		lib/system-gschemrc ])
-
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION:
-
-   GTK+ library version:             $GTK_VERSION
-   CAIRO library version:            $CAIRO_VERSION
-   GUILE library version:            $GUILE_VERSION
-   libgeda library version:          $LIBGEDA_VERSION
-   libstroke library:                $LIBSTROKE
-   mingw build:                      $MINGW
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   xdg directory:                    $expandedXDGDATADIR
-   documentation directory:          $expandedGEDADOCDIR
-   dmalloc debugging:                $with_dmalloc
-   ElectricFence debugging:          $with_efence
-])
diff --git a/gsymcheck/autogen.sh b/gsymcheck/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/gsymcheck/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/gsymcheck/configure.ac b/gsymcheck/configure.ac
deleted file mode 100644
index f35eff4..0000000
--- a/gsymcheck/configure.ac
+++ /dev/null
@@ -1,274 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/gsymcheck.c])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-gsymcheck
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake 
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-#########################################################################
-# Command line flags start
-# 
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# 
-# Command line flags end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")    
-AC_PROG_CPP
-AC_PROG_MAKE_SET
-
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-else
-   # Unix host
-   MINGW="no"
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-############################################################################
-# Check for guile start
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-   AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-   # Find about the installed guile
-   GUILE_FLAGS
-   GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for mics things start
-# 
-# Checking for rint in math library
-AC_CHECK_LIB(m, rint, AC_DEFINE(HAS_RINT, 1, [If your math library has rint in it, define this]), no_RINT="yes")
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-# Check for mics things start
-############################################################################
-
-############################################################################
-# Check for libgeda start
-# 
-PKG_CHECK_MODULES(LIBGEDA, [libgeda >= $DATE_VERSION], LIBGEDA="yes", 
-                  no_LIBGEDA="yes")
-
-if test "$LIBGEDA" = "yes" 
-then
-   LIBGEDA_VERSION=`$PKG_CONFIG libgeda --modversion`
-else
-   AC_MSG_ERROR([libgeda detection error: $LIBGEDA_PKG_ERRORS])
-fi
-
-# 
-# Check for libgeda end
-############################################################################
-
-############################################################################
-# Check for glib start
-#
-
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-
-# This next bit of code figures out what glib we need to use.
-if test "$GLIB" != "yes"
-then
-   AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-fi
-GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-#
-# Check for glib end
-############################################################################
-
-#########################################################################
-# Checks for header files start
-# 
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h stdlib.h \
-                 stdarg.h assert.h fcntl.h errno.h)
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(strstr)
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-
-if test $optarg_found = yes; then
-    AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# 
-# Checks for header files start
-#########################################################################
-
-#########################################################################
-# Check for groff start
-# 
-
-# search for groff
-AC_PATH_PROG(GROFF, groff, no, ${PATH})
-if test $GROFF = "no"; then
-        echo "Cannot find groff, some documentation will not be created."
-fi
-
-# 
-# Check for groff end
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specify setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path not was specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-        gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-AC_SUBST(GEDADOCDIR)
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-GSYMCHECK_CFLAGS="$GLIB_CFLAGS $LIBGEDA_CFLAGS $GUILE_CFLAGS"
-GSYMCHECK_LDFLAGS="$GLIB_LIBS $LIBGEDA_LIBS $GUILE_LIBS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GSYMCHECK_CFLAGS)
-AC_SUBST(GSYMCHECK_LDFLAGS)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(GEDADATADIR)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile 
-		 src/Makefile 
-		 include/Makefile 
-		 scheme/Makefile 
-		 examples/Makefile 
-		 lib/Makefile 
-		 docs/Makefile
-		 tests/Makefile
-		 lib/system-gsymcheckrc ])
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION:
-
-   libgeda library version:          $LIBGEDA_VERSION
-   mingw build:                      $MINGW
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   documentation directory:          $expandedGEDADOCDIR
-])
-
diff --git a/libgeda/acinclude.m4 b/libgeda/acinclude.m4
deleted file mode 100644
index df6b582..0000000
--- a/libgeda/acinclude.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-
-dnl This macro checks that a m4 macro is define.  The primary use of
-dnl this macro is to inform users that they haven't installed required
-dnl -devel packages at autogen.sh time.  This macro is based on a 
-dnl prototype macro created by Peter Brett.
-
-AC_DEFUN([AC_GEDA_MACRO_CHECK], 
-[
-  ifdef(  [$1], 
-          true,   dnl NOP
-          [
-            AC_FATAL(
-                      [m4 macro `$1' is not defined.  Ensure that `$2' is installed in your aclocal search path.  Maybe you are missing a -dev package?], 
-                    )
-          ]
-       )
-])
-
diff --git a/libgeda/autogen.sh b/libgeda/autogen.sh
deleted file mode 100755
index 0c54e28..0000000
--- a/libgeda/autogen.sh
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-# Automake required version
-AM_1=1  # Major number
-AM_2=6
-AM_3=0  # Minor number
-
-# Possible names for libtool/libtoolize
-libtoolize_candidates="libtoolize glibtoolize"
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  LIBTOOLIZE=`which $libtoolize_candidates 2>/dev/null | head -n1`
-  (! test -z "$LIBTOOLIZE") || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(grep "^AX_DESKTOP_I18N" $srcdir/$configure_script >/dev/null) && {
-  (test -x $srcdir/desktop-i18n) || {
-    echo
-    echo
-    echo "**Error**: The desktop-i18n program is missing."
-    echo "Ensure that your tarballs are intact or that your git"
-    echo "checkout is up-to-date."
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-# check automake version. Test came from gpsd version 2.34. cnieves 2007-02-10
-if [ -z "$NO_AUTOMAKE" ]; then
-  AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.*\([0-9]*\).*$#\1 \2 \3#p'`
-  AM_V1=`echo $AM_VERSION | awk '{print $1}'`
-  AM_V2=`echo $AM_VERSION | awk '{print $2}'`
-  AM_V3=`echo $AM_VERSION | awk '{print $3}'`
-
-  if [ "$AM_1" -gt "$AM_V1" ]; then
-    AM_ERROR=1 
-  else
-    if [ "$AM_1" -eq "$AM_V1" ]; then
-      if [ "$AM_2" -gt "$AM_V2" ]; then
-        AM_ERROR=1 
-      else
-        if [ "$AM_2" -eq "$AM_V2" ]; then
-          if [ -n "$AM_V3" -a "$AM_3" -gt "$AM_V3" ]; then
-            AM_ERROR=1 
-          fi
-        fi
-      fi
-    fi
-  fi
-
-  if [ -n "$AM_ERROR" ]; then
-    echo
-    echo "**Error**: Found automake version $AM_V1.$AM_V2.$AM_V3"
-    echo "You must have \`automake' version $AM_1.$AM_2.$AM_3 or greater installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  fi 
-fi
-
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS -I m4"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-        echo "autogen.sh running: autopoint ..." 
-        echo "no" | autopoint --force 
-      fi
-      if grep "^AX_DESKTOP_I18N" $configure_script >/dev/null; then
-        echo "autogen.sh running: desktop-i18n ..."
-        ./desktop-i18n --setup
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-        echo "autogen.sh running: libtoolize ..."
-        $LIBTOOLIZE --force --copy
-      fi
-
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      status=$?
-      if test ! "$status" = 0; then
-        echo autogen.sh exiting...
-        exit $status
-      fi
-
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/libgeda/configure.ac b/libgeda/configure.ac
deleted file mode 100644
index 1d6e0a5..0000000
--- a/libgeda/configure.ac
+++ /dev/null
@@ -1,471 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/libgeda.c])
-AC_CONFIG_MACRO_DIR([m4])
-AC_PREREQ(2.54)
-
-PACKAGE=libgeda
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-SHARED_LIBRARY_VERSION=36:0:0
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Init automake
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-# Call this to make autoconf and friends happy
-AC_GNU_SOURCE
-
-# Init libtool
-AC_LIBTOOL_WIN32_DLL
-AM_PROG_LIBTOOL
-
-#########################################################################
-# Command line flags start
-# 
-
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# Change default location for XDG files (MIME and Icons)
-AC_ARG_WITH(xdgdatadir, [  --with-xdgdatadir=path  Change where the theme icons and mime registrations are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
-
-# Change default location for KDE data files (KDE MIME registrations)
-AC_ARG_WITH(kdedatadir, [  --with-kdedatadir=path  Change where the KDE mime registrations are installed [[DATADIR]]], [opt_kdedatadir=$withval])
-
-# 
-# Command line flags end
-#########################################################################
-
-# Checks for libraries.
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW_LIBTOOL_FLAGS="-no-undefined"
-   MINGW_CFLAGS="-mms-bitfields"
-   MINGW="yes"
-else
-   # Unix host
-   MINGW_LIBTOOL_FLAGS=
-   MINGW_CFLAGS=
-   MINGW="no"
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")
-AC_PROG_CPP
-AC_PROG_MAKE_SET
-
-############################################################################
-# Internationalisation start
-#
-# Set USE_NLS
-AC_GEDA_MACRO_CHECK([AM_NLS], [nls.m4])
-AM_NLS
-
-# Set package name for translations
-so_major=`echo "$SHARED_LIBRARY_VERSION" | sed 's/:.*//'`
-GETTEXT_PACKAGE=$PACKAGE$so_major
-AH_TEMPLATE([GETTEXT_PACKAGE], [Name of this program's gettext domain])
-AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"])
-AC_SUBST(GETTEXT_PACKAGE)
-
-# Initialise gettext
-AC_GEDA_MACRO_CHECK([AM_GNU_GETTEXT], [gettext.m4])
-AM_GNU_GETTEXT
-AM_GNU_GETTEXT_VERSION([0.16])
-
-# Setup desktop-i18n
-AX_DESKTOP_I18N
-
-# 
-# Internationalisation end
-#########################################################################
-
-############################################################################
-# Check for pkg-config start
-#
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-    AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-#
-# Check for pkg-config end
-############################################################################
-
-############################################################################
-# Check for guile start
-#
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_LDFLAGS=$GUILE_LIBS
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-   # Find about the installed guile
-   AC_GEDA_MACRO_CHECK([GUILE_FLAGS], [guile.m4])
-   GUILE_FLAGS
-   GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for mics things start
-# 
-# Checking for lrint in math library
-AC_CHECK_LIB([m], [lrint],
-             AC_DEFINE([HAVE_LRINT], 1,
-                       [If your math library has lrint in it, define this]))
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-# Check for mics things start
-############################################################################
-
-############################################################################
-# Check for glib start
-#
-
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-
-# This next bit of code figures out what glib we need to use.
-if test "$GLIB" != "yes"
-then
-   AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-fi
-GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-#
-# Check for glib end
-############################################################################
-
-############################################################################
-# Check for gdk-pixbuf 
-# 
-
-PKG_CHECK_MODULES(GDK_PIXBUF, [gdk-pixbuf-2.0 >= 0.15.0], GDK_PIXBUF="yes", no_GDK_PIXBUF="yes")
-
-# This next bit of code figures out what gtk we need to use.
-if test "$GDK_PIXBUF" = "yes" 
-then
-
-   AC_DEFINE(HAS_GDK_PIXBUF, 1, [If gdk-pixbuf has been installed, define this])
-   GDK_PIXBUF_CFLAGS=$GDK_PIXBUF_CFLAGS
-   GDK_PIXBUF_LIBS=$GDK_PIXBUF_LIBS
-   GDK_PIXBUF_VERSION=`$PKG_CONFIG gdk-pixbuf-2.0 --modversion`
-
-fi
-
-if test "$GDK_PIXBUF_VERSION" = ""
-then
-   AC_MSG_ERROR([Cannot find gdk-pixbuf, please make sure it is installed.])
-fi
-
-# 
-# Check for gdk-pixbuf end
-############################################################################
-
-
-
-############################################################################
-# Check for doxygen start
-# 
-
-# Doxygen is a utility for generating html and latex documentation
-# from c source code files.
-
-# search for Doxygen 
-AC_PATH_PROG(DOXYGEN, doxygen, no, ${PATH})
-
-if test "$DOXYGEN" = "no"; then 
-   # doxygen is not available on the system
-   echo "** Cannot find Doxygen! **"
-   echo "**   Documentation creation disabled    **"
-   DOXYGEN=echo
-
-   # prevent from creating html and latex documents.
-   # but does not prevent from processing gschemdoc
-   builddoc=false
-else 
-   # doxygen is available on the system.
-   # now checking if the tools for Texinfo files processing
-   # is installed.
-   # The docs can be either processed to produce dvi, html or info
-   # with texi2dvi, texi2html or makeinfo respectively
-   # Note : these tests on makeinfo and texi2dvi are no more 
-   #        needed as automake makes them for us
-
-   # enable the creation of html and latex documents.
-   builddoc=true
-fi
-
-# depending on variable builddoc, weaving is performed or not
-# using conditionnal in docs/Makefile.in
-AM_CONDITIONAL(BUILDDOC, test x$builddoc = xtrue)
-
-# 
-# Check for doxygen end
-#########################################################################
-
-#########################################################################
-# Checks for header files start
-# 
-
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h stdlib.h assert.h fcntl.h errno.h)
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-if test $optarg_found = yes; then
-   AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(strstr chown getlogin)
-
-# 
-# Checks for header files end
-#########################################################################
-
-#########################################################################
-#
-
-# ------------- dmalloc -------------------
-dnl dmalloc checks
-with_dmalloc="no"
-AC_MSG_CHECKING([if dmalloc debugging should be enabled])
-AC_ARG_ENABLE([dmalloc],
-[  --enable-dmalloc        Compile and link with dmalloc for malloc debugging [[default=no]]],
-[
-if test "X$enable_dmalloc" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_HEADER(dmalloc.h,,
-                AC_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
-        AC_CHECK_LIB(dmalloc,main,,
-                AC_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
-        DMALLOC_LIBS="-ldmalloc"
-        with_dmalloc="yes"
-else
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-fi
-],
-[
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-])
-
-# ------------- ElectricFence -------------------
-dnl ElectricFence checks
-with_efence="no"
-AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
-AC_ARG_ENABLE([efence],
-[  --enable-efence         Link with ElectricFence for malloc debugging [[default=no]]],
-[
-if test "X$enable_efence" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_LIB(efence,main,,
-                AC_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
-        with_efence="yes"
-else
-        AC_MSG_RESULT([no])
-fi
-],
-[
-AC_MSG_RESULT([no])
-])
-
-#
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specific setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path was not specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-if test x$opt_xdgdatadir = x; then
-        # path was not specified with --with-xdgdatadir
-        XDGDATADIR='${datadir}'
-else
-        # path WAS specified with --with-xdgdatadir
-        XDGDATADIR="$opt_xdgdatadir"
-fi
-AC_SUBST(XDGDATADIR)
-
-if test x$opt_kdedatadir = x; then
-        # path was not specified with --with-kdedatadir
-        KDEDATADIR='${datadir}'
-else
-        # path WAS specified with --with-kdedatadir
-        KDEDATADIR="$opt_kdedatadir"
-fi
-AC_SUBST(KDEDATADIR)
-
-# Defs for libary symbol files
-#
-# Expand the prefix variable
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-#########################################################################
-# Update mime database utility start
-#
-# Adapted from gnome-control-center.
-#
-
-AC_ARG_ENABLE(update-mime-database,
-   AC_HELP_STRING([--disable-update-mime-database],
-                   [do not update mime database after installation]),,
-                   enable_update_mime_database=yes)
-
-AM_CONDITIONAL(ENABLE_UPDATE_MIME_DATABASE,
-               test x$enable_update_mime_database = xyes)
-
-if test x$enable_update_mime_database = xyes ; then
-  AC_PATH_PROG(UPDATE_MIME_DATABASE, [update-mime-database], no)
-  if test $UPDATE_MIME_DATABASE = no; then
-     AC_MSG_ERROR([Cannot find update-mime-database, make sure it is installed and in your PATH, or configure with --disable-update-mime-database])
-  fi
-fi
-
-#
-# Update mime database utility end
-#########################################################################
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-LIBGEDA_CFLAGS="$MINGW_CFLAGS $GUILE_CFLAGS $GLIB_CFLAGS $X_CFLAGS $GDK_PIXBUF_CFLAGS"
-LIBGEDA_LDFLAGS="$MINGW_LDFLAGS $GUILE_LDFLAGS $GLIB_LIBS $DMALLOC_LIBS $GDK_PIXBUF_LIBS"
-LIBTOOL_FLAGS="-version-info $SHARED_LIBRARY_VERSION $MINGW_LIBTOOL_FLAGS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(LIBGEDA_CFLAGS)
-AC_SUBST(LIBGEDA_LDFLAGS)
-AC_SUBST(LIBTOOL_FLAGS)
-AC_SUBST(GEDADATADIR)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(PATHSEP)
-AC_SUBST(OTHERPATHSEP)
-AC_SUBST(GUILEINTERP)
-AC_SUBST(INDENT)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile
-                 src/Makefile
-                 include/Makefile
-                 docs/Makefile
-                 data/Makefile
-                 intl/Makefile
-                 po/domain.mak
-                 po/Makefile.in
-	         libgeda.pc
-		 share/Makefile
-		 lib/Makefile
-		 scheme/Makefile ])
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
-expandedKDEDATADIR=`eval "echo $KDEDATADIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION
-
-   GLIB library version:             $GLIB_VERSION
-   GDK-PIXBUF (png output):          $GDK_PIXBUF_VERSION
-   GUILE library version:            $GUILE_VERSION
-   mingw build:                      $MINGW
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   xdg data directory:               $expandedXDGDATADIR
-   KDE data directory:               $expandedKDEDATADIR
-   LIBGEDA .so version:              $SHARED_LIBRARY_VERSION
-   dmalloc debugging:                $with_dmalloc
-   ElectricFence debugging:          $with_efence
-])
-
diff --git a/symbols/autogen.sh b/symbols/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/symbols/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/symbols/configure.ac b/symbols/configure.ac
deleted file mode 100644
index 8aedf15..0000000
--- a/symbols/configure.ac
+++ /dev/null
@@ -1,125 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([74/7400-1.sym])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-symbols
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake stuff
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-
-#########################################################################
-# Command line flags start
-# 
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# --with-docdir : tells where to store documentation if not default
-# defined below 
-# 
-# Command line flags end
-#########################################################################
-
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-else
-   # Unix host
-   MINGW="no"
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-#########################################################################
-# Check for fig2dev, groff, ps2pdf start
-# 
-# search for fig2dev
-AC_PATH_PROG(FIG2DEV, fig2dev, no, ${PATH})
-if test $FIG2DEV = "no"; then
-	echo "Cannot find fig2dev (transfig), some documentation will not be created."
-fi
-
-# search for groff
-AC_PATH_PROG(GROFF, groff, no, ${PATH})
-if test $GROFF = "no"; then
-	echo "Cannot find groff, some documentation will not be created."
-fi
-
-# search for ps2pdf
-AC_PATH_PROG(PS2PDF, ps2pdf, no, ${PATH})
-if test $PS2PDF = "no"; then
-	echo "Cannot find ps2pdf, some documentation will not be created."
-fi
-
-# 
-# Check for fig2dev, groff, ps2pdf end
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specify setup start
-#
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path not was specified with --with-rcdir
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-	GEDARCDIR="$opt_rcdir"
-fi
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedadocdir=$dprefix/share/doc/geda-doc
-AC_ARG_WITH(docdir, [  --with-docdir          Where to store documentation if not default.], gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-#
-# gEDA/gaf specify setup end
-#########################################################################
-
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GEDADATADIR)
-AC_SUBST(GEDADOCDIR)
-AC_SUBST(GEDARCDIR)
-
-AC_CONFIG_FILES([Makefile
-                 documentation/Makefile])
-
-AC_OUTPUT 
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION: 
-
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   documentation directory:          $expandedGEDADOCDIR
-   mingw build:                      $MINGW
-])
-
diff --git a/utils/autogen.sh b/utils/autogen.sh
deleted file mode 100755
index d5f6367..0000000
--- a/utils/autogen.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-# This file came from glade-2.0.0 with modifications for gEDA/gaf.  
-# Ales Hvezda 11/09/2003 
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-configure_script=configure.ac
-
-DIE=0
-
-(test -f $srcdir/$configure_script) || {
-    echo -n "**Error**: Directory [ $srcdir ] does not look like the"
-    echo " top-level package directory"
-    exit 1
-}
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed."
-    echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-    DIE=1
-  }
-}
-
-(grep "^AM_GNU_GETTEXT" $srcdir/$configure_script >/dev/null) && {
-  (grep "sed.*POTFILES" $srcdir/$configure_script) > /dev/null || \
-  (autopoint --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`gettext' installed."
-    echo "You can get it from: http://www.gnu.org/software/gettext";
-    DIE=1
-  }
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed."
-  echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/";
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-# Don't run configure automatically.
-#if test -z "$*"; then
-#  echo "**Warning**: I am going to run \`configure' with no arguments."
-#  echo "If you wish to pass any to it, please specify them on the"
-#  echo \`$0\'" command line."
-#  echo
-#fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in $srcdir/$configure_script
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    ( cd $dr
-
-      aclocalinclude="$ACLOCAL_FLAGS"
-
-      if grep "^AM_GNU_GETTEXT" $configure_script >/dev/null; then
-	echo "autogen.sh running: autopoint ..." 
-	echo "no" | autopoint --force 
-	#echo "Creating $dr/po/Makevars ..."
-        #mv -f $dr/po/Makevars.template $dr/po/Makevars
-      fi
-      if grep "^IT_PROG_INTLTOOL" $configure_script >/dev/null; then
-	echo "autogen.sh running: intltoolize ..."
-	echo "no" | intltoolize --force --copy --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "autogen.sh running: aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude
-      if grep "^AC_CONFIG_HEADER" $configure_script >/dev/null; then
-	echo "autogen.sh running: autoheader ..."
-	autoheader
-      fi
-      echo "autogen.sh running: automake $am_opt ..."
-      automake --copy --add-missing --gnu $am_opt
-      echo "autogen.sh running: autoconf ..."
-      autoconf 
-    )
-  fi
-done
-
-
-# Don't run configure.
-#conf_flags="--enable-maintainer-mode"
-#
-#if test x$NOCONFIGURE = x; then
-#  echo Running $srcdir/configure $conf_flags "$@" ...
-#  $srcdir/configure $conf_flags "$@" \
-#  && echo Now type \`make\' to compile. || exit 1
-#else
-#  echo Skipping configure process.
-#fi
diff --git a/utils/configure.ac b/utils/configure.ac
deleted file mode 100644
index 97910e3..0000000
--- a/utils/configure.ac
+++ /dev/null
@@ -1,430 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT
-AC_CONFIG_SRCDIR([src/gmk_sym.c])
-AC_PREREQ(2.54)
-
-PACKAGE=geda-utils
-DOTTED_VERSION=1.5.2
-DATE_VERSION=20090328
-echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
-
-# Initialize automake 
-AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
-AC_CONFIG_HEADER([config.h])
-
-#########################################################################
-# Command line flags start
-# 
-# Change default location for rc files
-AC_ARG_WITH(rcdir, [  --with-rcdir=path       Change where the system-*rc files are installed], [opt_rcdir=$withval])
-
-# --with-docdir : tells where to store documentation if not default
-# defined below 
-# 
-# Command line flags end
-#########################################################################
-
-# Checks for programs.
-AC_PROG_CC
-AM_PROG_CC_C_O
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")
-AC_PROG_CPP
-AC_PROG_MAKE_SET
-AM_PROG_LEX
-
-AC_PATH_PROG(PERL, perl, [notfound])
-AM_CONDITIONAL(MISSING_PERL, test x$PERL = xnotfound)
-
-##############################################################3
-# Test for __func__
-#
-
-AC_MSG_CHECKING([For a working C99 __func__])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-        [[const char *foo = __func__;]])],
-   [ac_cv_cpp_func=yes],
-   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-                [[const char *foo = __FUNCTION__;]])],
-                [ac_cv_cpp_func=__FUNCTION__],
-                [ac_cv_cpp_func="\"no\""])]
-)
-
-if test "X$ac_cv_cpp_func" = "X__FUNCTION__"; then
-        AC_MSG_RESULT([__FUNCTION__])
-elif test "x$ac_cv_cpp_func" = "xyes" ; then
-        AC_MSG_RESULT([__func__])
-else
-        AC_MSG_RESULT([no])
-fi
-if test "X$ac_cv_cpp_func" != "Xyes" ; then
-        AC_DEFINE_UNQUOTED([__func__], [$ac_cv_cpp_func], [Define to be a __func__ replacement])
-fi
-
-#
-##############################################################3
-
-#########################################################################
-# 
-# Misc win32 / mingw checks and variables start
-AC_CANONICAL_HOST
-
-# Figure out if we are building on win32 and what environment.
-case $host_os in
-  *mingw32* ) echo "Configuring for mingw"; MINGW=yes ;;
-esac
-
-if ! test "$MINGW" = "no" -o "$MINGW"x = x; then
-   MINGW="yes"
-else
-   # Unix host
-   MINGW="no"
-fi
-
-# 
-# Misc win32 / mingw checks and variables end
-#########################################################################
-
-############################################################################
-# Check for guile start
-
-# Check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test $PKG_CONFIG = no; then
-   AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
-fi
-
-PKG_CHECK_MODULES(GUILE, [guile-1.8], GUILE_PC="yes", no_GUILE_PC="yes")
-
-if test "$GUILE_PC" = "yes" 
-then
-
-   GUILE_VERSION=`$PKG_CONFIG guile-1.8 --modversion`
-
-else
-
-  # Find about the installed guile
-  GUILE_FLAGS
-  GUILE_VERSION=`$GUILE_CONFIG info guileversion`
-
-fi
-
-# Check Guile version
-guile_need_major=1
-guile_need_minor=8
-guile_need_version="$guile_need_major[].$guile_need_minor.0"
-
-AC_MSG_CHECKING([Guile version >= $guile_need_version])
-
-guile_major=`echo "$GUILE_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'`
-guile_minor=`echo "$GUILE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-AC_MSG_RESULT($GUILE_VERSION)
-
-if test "$guile_need_major" -gt "$guile_major" \
-   || (test "$guile_need_major" -eq "$guile_major" \
-       && test "$guile_need_minor" -gt "$guile_minor"); then
-  AC_MSG_ERROR([Guile version >= $guile_need_version is required.])
-fi
-
-#
-# Check for guile end
-############################################################################
-
-############################################################################
-# Check for mics things start
-# 
-# Checking for rint in math library
-AC_CHECK_LIB(m, rint, AC_DEFINE(HAS_RINT, 1, [If your math library has rint in it, define this]), no_RINT="yes")
-
-# Checking for dynamic lib
-AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", DL_LIB="")
-#
-# Check for mics things start
-############################################################################
-
-############################################################################
-# Check for libgeda start
-# 
-PKG_CHECK_MODULES(LIBGEDA, [libgeda >= $DATE_VERSION], LIBGEDA="yes", 
-                  no_LIBGEDA="yes")
-
-if test "$LIBGEDA" = "yes" 
-then
-   LIBGEDA_VERSION=`$PKG_CONFIG libgeda --modversion`
-else
-   AC_MSG_ERROR([libgeda detection error: $LIBGEDA_PKG_ERRORS])
-fi
-
-# 
-# Check for libgeda end
-############################################################################
-
-############################################################################
-# Check for glib start
-# 
-
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0], GLIB="yes", no_GLIB="yes")
-
-# This next bit of code figures out what glib we need to use.
-if test "$GLIB" != "yes"
-then
-   AC_MSG_ERROR([Cannot find glib 2.12.0 or later, please install it and rerun ./configure.])
-fi
-GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
-
-#
-# Check for glib end
-############################################################################
-
-#########################################################################
-# Checks for header files start
-# 
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(unistd.h string.h stdlib.h \
-                 stdarg.h assert.h fcntl.h errno.h \
-                 getopt.h)
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-# Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(strstr snprintf getopt_long)
-AC_CHECK_FUNCS(strcasecmp strncasecmp stricmp strnicmp)
-
-AC_MSG_CHECKING([for optarg in unistd.h])
-AC_TRY_COMPILE(
-[#include <unistd.h>],
-[ char *string = optarg; int i = optind; ],
-optarg_found=yes,
-optarg_found=no)
-AC_MSG_RESULT($optarg_found)
-
-if test $optarg_found = yes; then
-    AC_DEFINE(OPTARG_IN_UNISTD, 1, [Define if you have optarg in unistd.h])
-fi
-
-# 
-# Checks for header files start
-#########################################################################
-
-#########################################################################
-#
-
-# ------------- dmalloc -------------------
-dnl dmalloc checks
-with_dmalloc="no"
-AC_MSG_CHECKING([if dmalloc debugging should be enabled])
-AC_ARG_ENABLE([dmalloc],
-[  --enable-dmalloc        Compile and link with dmalloc for malloc debugging [[default=no]]],
-[
-if test "X$enable_dmalloc" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-        AC_CHECK_HEADER(dmalloc.h,,
-                AC_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
-        AC_CHECK_LIB(dmalloc,main,,
-                AC_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
-        DMALLOC_LIBS="-ldmalloc"
-        with_dmalloc="yes"
-else
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-fi
-],
-[
-        AC_MSG_RESULT([no])
-        DMALLOC_LIBS=""
-])
-
-# ------------- ElectricFence -------------------
-dnl ElectricFence checks
-with_efence="no"
-AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
-AC_ARG_ENABLE([efence],
-[  --enable-efence         Link with ElectricFence for malloc debugging [[default=no]]],
-[
-if test "X$enable_efence" != "Xno" ; then
-        AC_MSG_RESULT([yes])
-	if test "X$with_dmalloc" = "Xyes" ; then
-		AC_ERROR([You have requested both dmalloc and Electric Fence, however only 1 is allowed.])
-	fi
-        AC_CHECK_LIB(efence,main,,
-                AC_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
-        with_efence="yes"
-else
-        AC_MSG_RESULT([no])
-fi
-],
-[
-AC_MSG_RESULT([no])
-])
-
-#
-#########################################################################
-
-#########################################################################
-#
-# Change default location for pcb's newlib library directory
-#
-# Used by gsch2pcb
-
-AC_MSG_CHECKING([For the default pcb installation data directory])
-AC_ARG_WITH(pcb-datadir,
-	[  --with-pcb-datadir=path
-                          Change the default location for an installed pcb.  This is used
-                          to set the default search path for pcb newlib libraries.
-                          [[default=${datadir}]]],
-	[PCBDATADIR=$withval],
-	[PCBDATADIR="${datadir}"]
-)
-AC_MSG_RESULT([${PCBDATADIR}])
-CPPFLAGS="$CPPFLAGS -DPCBDATADIR=\\\"${PCBDATADIR}\\\""
-
-AC_MSG_CHECKING([For the default pcb newlib search path])
-AC_ARG_WITH(pcb-newlib-path,
-	[  --with-pcb-newlib-path=path
-                          Change the default search path for PCB newlib libraries
-                          [[default=${datadir}/pcb/pcblib-newlib:${datadir}/pcb/newlib]]],
-	[PCBLIBPATH=$withval],
-	[PCBLIBPATH="${PCBDATADIR}/pcb/pcblib-newlib:${PCBDATADIR}/pcb/newlib"]
-)
-AC_MSG_RESULT([${PCBLIBPATH}])
-CPPFLAGS="$CPPFLAGS -DPCBLIBPATH=\\\"${PCBLIBPATH}\\\""
-
-#
-#########################################################################
-
-#########################################################################
-# Check for groff start
-#
-
-# search for groff
-AC_PATH_PROG(GROFF, groff, no, ${PATH})
-if test $GROFF = "no"; then
-        echo "Cannot find groff, some documentation will not be created."
-fi
-
-# 
-# Check for groff end
-#########################################################################
-
-#########################################################################
-# gEDA/gaf specify setup start
-#
-
-DATADIR=gEDA
-GEDADATADIR=$datadir/$DATADIR
-
-if eval "test x$opt_rcdir = x"; then
-	# path not was specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "none", [gEDA/gaf's rc directory])
-	GEDARCDIR=$GEDADATADIR
-else
-	# path WAS specified with --with-rcdir
-        AC_DEFINE_UNQUOTED(GEDARCDIR, "$opt_rcdir", [gEDA/gaf's rc directory])
-	GEDARCDIR="$opt_rcdir"
-fi
-
-# Expand the prefix variable
-# I don't like the way this is done, but it works (I hope).
-if eval "test x$prefix = xNONE"; then
- dprefix=$ac_default_prefix
-else
- dprefix=$prefix
-fi
-
-gedatopdir=$dprefix/share/$DATADIR
-expandgedadatadir=`echo $gedatopdir`
-
-gedadocdir=$dprefix/share/doc/geda-doc
-# --with-docdir : tells where to store documentation if not default
-AC_ARG_WITH(docdir,
-    [  --with-docdir      Where to store documentation if not default.],
-	gedadocdir=$withval)
-expandgedadocdir=`echo $gedadocdir`
-GEDADOCDIR=$expandgedadocdir
-
-# this has to be expanded ( no ${prefix} ) --
-AC_DEFINE_UNQUOTED(GEDADATADIR, "$gedatopdir", [gEDA/gaf's data directory])
-AC_DEFINE_UNQUOTED(DATE_VERSION, "$DATE_VERSION", [Currently running date version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(DOTTED_VERSION, "$DOTTED_VERSION", [Currently running dotted version of gEDA/gaf])
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this program's package])
-
-#
-# gEDA/gaf specify things which need to setup
-#########################################################################
-
-# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
-GSCHLAS_CFLAGS="$GLIB_CFLAGS $LIBGEDA_CFLAGS $GUILE_CFLAGS"
-GSCHLAS_LDFLAGS="$GLIB_LIBS $LIBGEDA_LIBS $GUILE_LIBS"
-CONVERT_SYM_CFLAGS="$LIBGEDA_CFLAGS"
-SARLACC_SCHEM_CFLAGS="$GLIB_CFLAGS $LIBGEDA_CFLAGS"
-SARLACC_SCHEM_LIBS="$GLIB_LIBS $LIBGEDA_CFLAGS"
-GMK_SYM_CFLASG=""
-SMASH_MEGAFILE_CFLAGS=""
-OLIB_CFLAGS=""
-GSCH2PCB_CFLAGS="$GLIB_CFLAGS"
-GSCH2PCB_LDFLAGS="$GLIB_LIBS"
-
-# Makefile.in variable substitution
-AC_SUBST(DATE_VERSION)
-AC_SUBST(DOTTED_VERSION)
-AC_SUBST(GSCHLAS_CFLAGS)
-AC_SUBST(GSCHLAS_LDFLAGS)
-AC_SUBST(CONVERT_SYM_CFLAGS)
-AC_SUBST(SARLACC_SCHEM_CFLAGS)
-AC_SUBST(SARLACC_SCHEM_LDFLAGS)
-AC_SUBST(GMK_SYM_CFLAGS)
-AC_SUBST(GMK_SYM_LDFLAGS)
-AC_SUBST(GSCH2PCB_CFLAGS)
-AC_SUBST(GSCH2PCB_LDFLAGS)
-AC_SUBST(GEDARCDIR)
-AC_SUBST(GEDADATADIR)
-AC_SUBST(GEDADOCDIR)
-
-# Create all the necessary derived files
-AC_CONFIG_FILES([Makefile 
-                 examples/Makefile 
-                 examples/gmk_sym/Makefile 
-                 examples/tragesym/Makefile 
-                 examples/gsch2pcb/Makefile 
-		 gxyrs/Makefile
-                 include/Makefile 
-                 scripts/Makefile 
-                 docs/Makefile 
-                 man/Makefile 
-                 lib/Makefile 
-                 lib/system-gschlasrc 
-                 gschlas/Makefile 
-                 src/Makefile
-                 tests/Makefile
-                 tests/refdes_renum/Makefile
-                 tests/refdes_renum/inputs/Makefile
-                 tests/refdes_renum/outputs/Makefile
-                 tests/gxyrs/Makefile
-                 tests/gxyrs/inputs/Makefile
-                 tests/gxyrs/outputs/Makefile
-])
-
-AC_OUTPUT
-
-expandedGEDADATADIR=`eval "echo $GEDADATADIR"`
-expandedGEDARCDIR=`eval "echo $GEDARCDIR"`
-expandedGEDADOCDIR=`eval "echo $GEDADOCDIR"`
-expandedPCBLIBPATH=`eval "echo $PCBLIBPATH"`
-
-AC_MSG_RESULT([
-** Configuration summary for $PACKAGE $DOTTED_VERSION.$DATE_VERSION:
-
-   GLIB library version:             $GLIB_VERSION
-   libgeda library version:          $LIBGEDA_VERSION
-   mingw build:                      $MINGW
-   data directory:                   $expandedGEDADATADIR
-   rc directory:                     $expandedGEDARCDIR
-   documentation directory:          $expandedGEDADOCDIR
-   default pcb newlib path:          $expandedPCBLIBPATH
-   dmalloc debugging:                $with_dmalloc
-   Electric Fence debugging:         $with_efence
-])
-

commit 50854a890f67baa5194b470b14f7ee17051d0393
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Use sane (but uninformative) defaults for config variables.
    
    This stops gnetlist from complaining and calling exit(-1) if
    system-gnetlistrc wasn't loaded.  The defaults used are the same as
    the default settings in system-gnetlistrc, according to the principle
    of least surprise.

diff --git a/gnetlist/src/i_vars.c b/gnetlist/src/i_vars.c
index 2d2b6b8..26d58e8 100644
--- a/gnetlist/src/i_vars.c
+++ b/gnetlist/src/i_vars.c
@@ -39,6 +39,11 @@
 #define DEFAULT_SCHEME_DIRECTORY "./"
 #define DEFAULT_FONT_DIRECTORY   "../lib/sym/font"
 #define DEFAULT_BITMAP_DIRECTORY   "non-existant"
+#define DEFAULT_HIERARCHY_NETNAME_SEPARATOR "/"
+#define DEFAULT_HIERARCHY_NETATTRIB_SEPARATOR "/"
+#define DEFAULT_HIERARCHY_UREF_SEPARATOR "/"
+#define DEFAULT_UNNAMED_NETNAME "unnamed_net"
+#define DEFAULT_UNNAMED_BUSNAME "unnamed_bus"
 
 #define INIT_STR(w, name, str) {                            \
     g_free((w)->name);                                      \
@@ -83,17 +88,28 @@ void i_vars_set(TOPLEVEL * pr_current)
 	    pr_current->hierarchy_uref_separator = g_strdup("/");
 	}
     }
-    
-    if (!default_hierarchy_netname_separator ||
-        !default_hierarchy_netattrib_separator ||
-        !default_hierarchy_uref_separator ||
-        !default_unnamed_netname ||
-        !default_unnamed_busname) {
-      fprintf(stderr, "Some rc variables are not set!\n");
-      fprintf(stderr, "Check log and make sure the system-gnetlistrc file was found! (exiting)\n");
-      exit(-1);
+
+    if (!default_hierarchy_netname_separator) {
+      default_hierarchy_netname_separator =
+        g_strdup (DEFAULT_HIERARCHY_NETNAME_SEPARATOR);
+    }
+    if (!default_hierarchy_netattrib_separator) {
+      default_hierarchy_netattrib_separator =
+        g_strdup (DEFAULT_HIERARCHY_NETATTRIB_SEPARATOR);
+    }
+    if (!default_hierarchy_uref_separator) {
+      default_hierarchy_uref_separator =
+        g_strdup (DEFAULT_HIERARCHY_UREF_SEPARATOR);
     }
-    
+    if (!default_unnamed_netname) {
+      default_unnamed_netname =
+        g_strdup (DEFAULT_UNNAMED_NETNAME);
+    }
+    if (!default_unnamed_busname) {
+      default_unnamed_busname =
+        g_strdup (DEFAULT_UNNAMED_BUSNAME);
+    }
+
     INIT_STR(pr_current, hierarchy_netname_separator,
              default_hierarchy_netname_separator);
     INIT_STR(pr_current, hierarchy_netattrib_separator,

commit 3a4df8fece7656480ebacfa32a08886b0638c826
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gxyrs: Reduce length of test filenames.
    
    The `tar' file format (as specified by POSIX) can only handle embedded
    paths up to 99 characters in length.

diff --git a/utils/tests/gxyrs/outputs/Makefile.am b/utils/tests/gxyrs/outputs/Makefile.am
index a22d567..eec91a1 100644
--- a/utils/tests/gxyrs/outputs/Makefile.am
+++ b/utils/tests/gxyrs/outputs/Makefile.am
@@ -4,52 +4,52 @@
 # dir | sort | awk '{printf("\t%s \\\n", $0)}' |grep -v Makefile >> Makefile.am
 
 EXTRA_DIST= \
-	change_units_done_notitle-protel_example1_mil.txt \
-	change_units_done_notitle-protel_example1_mil.txt-error \
-	change_units_already_done-protel_example1_mil.txt \
-	change_units_already_done-protel_example1_mil.txt-error \
-	change_units_bad_column_number1-pcb_example1.xy \
-	change_units_bad_column_number1-pcb_example1.xy-error \
-	change_units_bad_column_number2-pcb_example1.xy \
-	change_units_bad_column_number2-pcb_example1.xy-error \
-	change_units_column_number_too_high-pcb_example1.xy \
-	change_units_column_number_too_high-pcb_example1.xy-error \
-	change_units_negative_column_number-pcb_example1.xy \
-	change_units_negative_column_number-pcb_example1.xy-error \
-	change_units_no_units-pcb_example1.xy \
-	change_units_no_units-pcb_example1.xy-error \
-	change_units_to_mil_2cols-protel_example1_mm.txt \
-	change_units_to_mil_2cols-protel_example1_mm.txt-error \
-	change_units_to_mil-protel_example1_mm.txt \
-	change_units_to_mil-protel_example1_mm.txt-error \
-	change_units_to_mm_2cols-protel_example1_mil.txt \
-	change_units_to_mm_2cols-protel_example1_mil.txt-error \
-	change_units_2mm_6col_tab_notit-protel_example1_mil.txt \
-	change_units_2mm_6col_tab_notit-protel_example1_mil.txt-error \
-	change_units_to_mm_6col_tab-protel_example1_mil.txt \
-	change_units_to_mm_6col_tab-protel_example1_mil.txt-error \
-	change_units_to_mm_no_title-protel_example1_mil.txt \
-	change_units_to_mm_no_title-protel_example1_mil.txt-error \
-	change_units_to_mm-protel_example1_mil.txt \
-	change_units_to_mm-protel_example1_mil.txt-error \
-	change_units_units_not_supported-protel_example1_mil.txt \
-	change_units_units_not_supported-protel_example1_mil.txt-error \
-	del_case_insensitive1-pcb_example1.xy \
-	del_case_insensitive1-pcb_example1.xy-error \
-	del_case_insensitive2-pcb_example2.xy \
-	del_case_insensitive2-pcb_example2.xy-error \
-	del_case_sensitive1-pcb_example1.xy \
-	del_case_sensitive1-pcb_example1.xy-error \
-	del_case_sensitive2-pcb_example2.xy \
-	del_case_sensitive2-pcb_example2.xy-error \
-	del_case_sensitive3-pcb_example1.xy \
-	del_case_sensitive3-pcb_example1.xy-error \
-	del_case_sensitive4-pcb_example2.xy \
-	del_case_sensitive4-pcb_example2.xy-error \
-	del_check_columns_no_match-pcb_example1.xy \
-	del_check_columns_no_match-pcb_example1.xy-error \
-	del_check_columns_return_minus1-pcb_example1.xy \
-	del_check_columns_return_minus1-pcb_example1.xy-error \
+	chunits_2mm_6col_tab_notit-protel_example1_mil.txt \
+	chunits_2mm_6col_tab_notit-protel_example1_mil.txt-error \
+	chunits_already_done-protel_example1_mil.txt \
+	chunits_already_done-protel_example1_mil.txt-error \
+	chunits_bad_col_num1-pcb_example1.xy \
+	chunits_bad_col_num1-pcb_example1.xy-error \
+	chunits_bad_col_num2-pcb_example1.xy \
+	chunits_bad_col_num2-pcb_example1.xy-error \
+	chunits_col_num_too_high-pcb_example1.xy \
+	chunits_col_num_too_high-pcb_example1.xy-error \
+	chunits_done_notitle-protel_example1_mil.txt \
+	chunits_done_notitle-protel_example1_mil.txt-error \
+	chunits_negative_col_num-pcb_example1.xy \
+	chunits_negative_col_num-pcb_example1.xy-error \
+	chunits_no_units-pcb_example1.xy \
+	chunits_no_units-pcb_example1.xy-error \
+	chunits_to_mil_2cols-protel_example1_mm.txt \
+	chunits_to_mil_2cols-protel_example1_mm.txt-error \
+	chunits_to_mil-protel_example1_mm.txt \
+	chunits_to_mil-protel_example1_mm.txt-error \
+	chunits_to_mm_2cols-protel_example1_mil.txt \
+	chunits_to_mm_2cols-protel_example1_mil.txt-error \
+	chunits_to_mm_6col_tab-protel_example1_mil.txt \
+	chunits_to_mm_6col_tab-protel_example1_mil.txt-error \
+	chunits_to_mm_no_title-protel_example1_mil.txt \
+	chunits_to_mm_no_title-protel_example1_mil.txt-error \
+	chunits_to_mm-protel_example1_mil.txt \
+	chunits_to_mm-protel_example1_mil.txt-error \
+	chunits_units_not_supported-protel_example1_mil.txt \
+	chunits_units_not_supported-protel_example1_mil.txt-error \
+	del_case_insens1-pcb_example1.xy \
+	del_case_insens1-pcb_example1.xy-error \
+	del_case_insens2-pcb_example2.xy \
+	del_case_insens2-pcb_example2.xy-error \
+	del_case_sens1-pcb_example1.xy \
+	del_case_sens1-pcb_example1.xy-error \
+	del_case_sens2-pcb_example2.xy \
+	del_case_sens2-pcb_example2.xy-error \
+	del_case_sens3-pcb_example1.xy \
+	del_case_sens3-pcb_example1.xy-error \
+	del_case_sens4-pcb_example2.xy \
+	del_case_sens4-pcb_example2.xy-error \
+	del_check_cols_no_match-pcb_example1.xy \
+	del_check_cols_no_match-pcb_example1.xy-error \
+	del_check_cols_return_minus1-pcb_example1.xy \
+	del_check_cols_return_minus1-pcb_example1.xy-error \
 	do_nothing-pcb_example1.xy \
 	do_nothing-pcb_example1.xy-error \
 	do_nothing_tabulated-pcb_example1.xy \
@@ -60,56 +60,56 @@ EXTRA_DIST= \
 	footprint_protel1-protel_example1_mil.txt-error \
 	footprint_report1-report1.txt \
 	footprint_report1-report1.txt-error \
-	insert_column_bad_column_number1-pcb_example1.xy \
-	insert_column_bad_column_number1-pcb_example1.xy-error \
-	insert_column_bad_column_number2-pcb_example1.xy \
-	insert_column_bad_column_number2-pcb_example1.xy-error \
-	insert_column_column_number_too_high-pcb_example1.xy \
-	insert_column_column_number_too_high-pcb_example1.xy-error \
-	insert_column_first_pos-pcb_example1.xy \
-	insert_column_first_pos-pcb_example1.xy-error \
-	insert_column_negative_column_number-pcb_example1.xy \
-	insert_column_negative_column_number-pcb_example1.xy-error \
-	insert_column_second_pos-pcb_example1.xy \
-	insert_column_second_pos-pcb_example1.xy-error \
-	match_column_insensitive1-pcb_example2.xy \
-	match_column_insensitive1-pcb_example2.xy-error \
-	match_column_insensitive2-pcb_example2.xy \
-	match_column_insensitive2-pcb_example2.xy-error \
-	match_column_insensitive3-pcb_example1.xy \
-	match_column_insensitive3-pcb_example1.xy-error \
-	match_column_insensitive4-pcb_example1.xy \
-	match_column_insensitive4-pcb_example1.xy-error \
-	match_column_is_negative-pcb_example1.xy \
-	match_column_is_negative-pcb_example1.xy-error \
-	match_column_is_not_number2-pcb_example1.xy \
-	match_column_is_not_number2-pcb_example1.xy-error \
-	match_column_is_not_number-pcb_example1.xy \
-	match_column_is_not_number-pcb_example1.xy-error \
-	match_column_is_real-pcb_example1.xy \
-	match_column_is_real-pcb_example1.xy-error \
-	match_column_is_too_high-pcb_example1.xy \
-	match_column_is_too_high-pcb_example1.xy-error \
-	match_column_sensitive1-pcb_example1.xy \
-	match_column_sensitive1-pcb_example1.xy-error \
-	match_column_sensitive2-pcb_example1.xy \
-	match_column_sensitive2-pcb_example1.xy-error \
-	match_column_sensitive3-pcb_example2.xy \
-	match_column_sensitive3-pcb_example2.xy-error \
-	match_column_sensitive4-pcb_example2.xy \
-	match_column_sensitive4-pcb_example2.xy-error \
+	insert_col_bad_col_num1-pcb_example1.xy \
+	insert_col_bad_col_num1-pcb_example1.xy-error \
+	insert_col_bad_col_num2-pcb_example1.xy \
+	insert_col_bad_col_num2-pcb_example1.xy-error \
+	insert_col_col_num_too_high-pcb_example1.xy \
+	insert_col_col_num_too_high-pcb_example1.xy-error \
+	insert_col_first_pos-pcb_example1.xy \
+	insert_col_first_pos-pcb_example1.xy-error \
+	insert_col_negative_col_num-pcb_example1.xy \
+	insert_col_negative_col_num-pcb_example1.xy-error \
+	insert_col_second_pos-pcb_example1.xy \
+	insert_col_second_pos-pcb_example1.xy-error \
+	match_col_insens1-pcb_example2.xy \
+	match_col_insens1-pcb_example2.xy-error \
+	match_col_insens2-pcb_example2.xy \
+	match_col_insens2-pcb_example2.xy-error \
+	match_col_insens3-pcb_example1.xy \
+	match_col_insens3-pcb_example1.xy-error \
+	match_col_insens4-pcb_example1.xy \
+	match_col_insens4-pcb_example1.xy-error \
+	match_col_is_negative-pcb_example1.xy \
+	match_col_is_negative-pcb_example1.xy-error \
+	match_col_is_not_num2-pcb_example1.xy \
+	match_col_is_not_num2-pcb_example1.xy-error \
+	match_col_is_not_num-pcb_example1.xy \
+	match_col_is_not_num-pcb_example1.xy-error \
+	match_col_is_real-pcb_example1.xy \
+	match_col_is_real-pcb_example1.xy-error \
+	match_col_is_too_high-pcb_example1.xy \
+	match_col_is_too_high-pcb_example1.xy-error \
+	match_col_sens1-pcb_example1.xy \
+	match_col_sens1-pcb_example1.xy-error \
+	match_col_sens2-pcb_example1.xy \
+	match_col_sens2-pcb_example1.xy-error \
+	match_col_sens3-pcb_example2.xy \
+	match_col_sens3-pcb_example2.xy-error \
+	match_col_sens4-pcb_example2.xy \
+	match_col_sens4-pcb_example2.xy-error \
 	match_no_args-pcb_example1.xy \
 	match_no_args-pcb_example1.xy-error \
-	multiply_bad_column_number1-pcb_example1.xy \
-	multiply_bad_column_number1-pcb_example1.xy-error \
-	multiply_bad_column_number2-pcb_example1.xy \
-	multiply_bad_column_number2-pcb_example1.xy-error \
-	multiply_column_number_too_high-pcb_example1.xy \
-	multiply_column_number_too_high-pcb_example1.xy-error \
+	multiply_bad_col_num1-pcb_example1.xy \
+	multiply_bad_col_num1-pcb_example1.xy-error \
+	multiply_bad_col_num2-pcb_example1.xy \
+	multiply_bad_col_num2-pcb_example1.xy-error \
+	multiply_col_num_too_high-pcb_example1.xy \
+	multiply_col_num_too_high-pcb_example1.xy-error \
 	multiply_integer_factor-pcb_example1.xy \
 	multiply_integer_factor-pcb_example1.xy-error \
-	multiply_negative_column_number-pcb_example1.xy \
-	multiply_negative_column_number-pcb_example1.xy-error \
+	multiply_negative_col_num-pcb_example1.xy \
+	multiply_negative_col_num-pcb_example1.xy-error \
 	multiply_negative_integer_factor-pcb_example1.xy \
 	multiply_negative_integer_factor-pcb_example1.xy-error \
 	multiply_negative_real_factor-pcb_example1.xy \
@@ -118,18 +118,18 @@ EXTRA_DIST= \
 	multiply_real_factor-pcb_example1.xy-error \
 	multiply_with_checklist-pcb_example1.xy \
 	multiply_with_checklist-pcb_example1.xy-error \
-	offset_bad_column_number1-pcb_example1.xy \
-	offset_bad_column_number1-pcb_example1.xy-error \
-	offset_bad_column_number2-pcb_example1.xy \
-	offset_bad_column_number2-pcb_example1.xy-error \
-	offset_check_columns_match-pcb_example1.xy \
-	offset_check_columns_match-pcb_example1.xy-error \
-	offset_check_columns_no_match-pcb_example1.xy \
-	offset_check_columns_no_match-pcb_example1.xy-error \
-	offset_check_columns_return_minus1-pcb_example1.xy \
-	offset_check_columns_return_minus1-pcb_example1.xy-error \
-	offset_column_number_too_high-pcb_example1.xy \
-	offset_column_number_too_high-pcb_example1.xy-error \
+	offset_bad_col_num1-pcb_example1.xy \
+	offset_bad_col_num1-pcb_example1.xy-error \
+	offset_bad_col_num2-pcb_example1.xy \
+	offset_bad_col_num2-pcb_example1.xy-error \
+	offset_check_cols_match-pcb_example1.xy \
+	offset_check_cols_match-pcb_example1.xy-error \
+	offset_check_cols_no_match-pcb_example1.xy \
+	offset_check_cols_no_match-pcb_example1.xy-error \
+	offset_check_cols_return_minus1-pcb_example1.xy \
+	offset_check_cols_return_minus1-pcb_example1.xy-error \
+	offset_col_num_too_high-pcb_example1.xy \
+	offset_col_num_too_high-pcb_example1.xy-error \
 	offset_match_negative_offset-pcb_example1.xy \
 	offset_match_negative_offset-pcb_example1.xy-error \
 	offset_match_negative_real_offset-pcb_example1.xy \
@@ -138,111 +138,111 @@ EXTRA_DIST= \
 	offset_match_no_units_in_file-pcb_example1.xy-error \
 	offset_match_real_offset-pcb_example1.xy \
 	offset_match_real_offset-pcb_example1.xy-error \
-	offset_negative_column_number-pcb_example1.xy \
-	offset_negative_column_number-pcb_example1.xy-error \
+	offset_negative_col_num-pcb_example1.xy \
+	offset_negative_col_num-pcb_example1.xy-error \
 	output_delimiter-pcb_example1.xy \
 	output_delimiter-pcb_example1.xy-error \
-	panelize_bad_ref_column_number1-pcb_example1.xy \
-	panelize_bad_ref_column_number1-pcb_example1.xy-error \
-	panelize_bad_ref_column_number2-pcb_example1.xy \
-	panelize_bad_ref_column_number2-pcb_example1.xy-error \
-	panelize_bad_x_column_number1-pcb_example1.xy \
-	panelize_bad_x_column_number1-pcb_example1.xy-error \
-	panelize_bad_x_column_number2-pcb_example1.xy \
-	panelize_bad_x_column_number2-pcb_example1.xy-error \
-	panelize_bad_y_column_number1-pcb_example1.xy \
-	panelize_bad_y_column_number1-pcb_example1.xy-error \
-	panelize_bad_y_column_number2-pcb_example1.xy \
-	panelize_bad_y_column_number2-pcb_example1.xy-error \
-	panelize_negative_ref_column_number-pcb_example1.xy \
-	panelize_negative_ref_column_number-pcb_example1.xy-error \
-	panelize_negative_x_column_number-pcb_example1.xy \
-	panelize_negative_x_column_number-pcb_example1.xy-error \
-	panelize_negative_y_column_number-pcb_example1.xy \
-	panelize_negative_y_column_number-pcb_example1.xy-error \
-	panelize_ref_column_number_too_high-pcb_example1.xy \
-	panelize_ref_column_number_too_high-pcb_example1.xy-error \
+	panelize_bad_ref_col_num1-pcb_example1.xy \
+	panelize_bad_ref_col_num1-pcb_example1.xy-error \
+	panelize_bad_ref_col_num2-pcb_example1.xy \
+	panelize_bad_ref_col_num2-pcb_example1.xy-error \
+	panelize_bad_x_col_num1-pcb_example1.xy \
+	panelize_bad_x_col_num1-pcb_example1.xy-error \
+	panelize_bad_x_col_num2-pcb_example1.xy \
+	panelize_bad_x_col_num2-pcb_example1.xy-error \
+	panelize_bad_y_col_num1-pcb_example1.xy \
+	panelize_bad_y_col_num1-pcb_example1.xy-error \
+	panelize_bad_y_col_num2-pcb_example1.xy \
+	panelize_bad_y_col_num2-pcb_example1.xy-error \
+	panelize_negative_ref_col_num-pcb_example1.xy \
+	panelize_negative_ref_col_num-pcb_example1.xy-error \
+	panelize_negative_x_col_num-pcb_example1.xy \
+	panelize_negative_x_col_num-pcb_example1.xy-error \
+	panelize_negative_y_col_num-pcb_example1.xy \
+	panelize_negative_y_col_num-pcb_example1.xy-error \
+	panelize_ref_col_num_too_high-pcb_example1.xy \
+	panelize_ref_col_num_too_high-pcb_example1.xy-error \
 	panelize_tabulate-pcb_example1.xy \
 	panelize_tabulate-pcb_example1.xy-error \
-	panelize_x_column_number_too_high-pcb_example1.xy \
-	panelize_x_column_number_too_high-pcb_example1.xy-error \
-	panelize_y_column_number_too_high-pcb_example1.xy \
-	panelize_y_column_number_too_high-pcb_example1.xy-error \
+	panelize_x_col_num_too_high-pcb_example1.xy \
+	panelize_x_col_num_too_high-pcb_example1.xy-error \
+	panelize_y_col_num_too_high-pcb_example1.xy \
+	panelize_y_col_num_too_high-pcb_example1.xy-error \
 	process_comment-pcb_example1.xy \
 	process_comment-pcb_example1.xy-error \
-	rotate_bad_column_number1-pcb_example1.xy \
-	rotate_bad_column_number1-pcb_example1.xy-error \
-	rotate_bad_column_number2-pcb_example1.xy \
-	rotate_bad_column_number2-pcb_example1.xy-error \
-	rotate_case_insensitive-pcb_example1.xy \
-	rotate_case_insensitive-pcb_example1.xy-error \
-	rotate_case_sensitive-pcb_example1.xy \
-	rotate_case_sensitive-pcb_example1.xy-error \
-	rotate_check_columns_no_match-pcb_example1.xy \
-	rotate_check_columns_no_match-pcb_example1.xy-error \
-	rotate_check_columns_return_minus1-pcb_example1.xy \
-	rotate_check_columns_return_minus1-pcb_example1.xy-error \
-	rotate_column_number_too_high-pcb_example1.xy \
-	rotate_column_number_too_high-pcb_example1.xy-error \
+	rotate_bad_col_num1-pcb_example1.xy \
+	rotate_bad_col_num1-pcb_example1.xy-error \
+	rotate_bad_col_num2-pcb_example1.xy \
+	rotate_bad_col_num2-pcb_example1.xy-error \
+	rotate_case_insens-pcb_example1.xy \
+	rotate_case_insens-pcb_example1.xy-error \
+	rotate_case_sens-pcb_example1.xy \
+	rotate_case_sens-pcb_example1.xy-error \
+	rotate_check_cols_no_match-pcb_example1.xy \
+	rotate_check_cols_no_match-pcb_example1.xy-error \
+	rotate_check_cols_return_minus1-pcb_example1.xy \
+	rotate_check_cols_return_minus1-pcb_example1.xy-error \
+	rotate_col_num_too_high-pcb_example1.xy \
+	rotate_col_num_too_high-pcb_example1.xy-error \
 	rotate_negative_angle-pcb_example1.xy \
 	rotate_negative_angle-pcb_example1.xy-error \
-	rotate_negative_column_number-pcb_example1.xy \
-	rotate_negative_column_number-pcb_example1.xy-error \
+	rotate_negative_col_num-pcb_example1.xy \
+	rotate_negative_col_num-pcb_example1.xy-error \
 	rotate_negative_real_angle-pcb_example1.xy \
 	rotate_negative_real_angle-pcb_example1.xy-error \
 	rotate_real_angle-pcb_example1.xy \
 	rotate_real_angle-pcb_example1.xy-error \
-	subst_bad_column_number1-pcb_example1.xy \
-	subst_bad_column_number1-pcb_example1.xy-error \
-	subst_bad_column_number2-pcb_example1.xy \
-	subst_bad_column_number2-pcb_example1.xy-error \
-	subst_check_columns_match-pcb_example1.xy \
-	subst_check_columns_match-pcb_example1.xy-error \
-	subst_check_columns_no_match-pcb_example1.xy \
-	subst_check_columns_no_match-pcb_example1.xy-error \
-	subst_check_columns_return_minus1-pcb_example1.xy \
-	subst_check_columns_return_minus1-pcb_example1.xy-error \
-	subst_column_number_too_high-pcb_example1.xy \
-	subst_column_number_too_high-pcb_example1.xy-error \
-	subst_negative_column_number-pcb_example1.xy \
-	subst_negative_column_number-pcb_example1.xy-error \
-	swap_columns_bad_column1_number1-pcb_example1.xy \
-	swap_columns_bad_column1_number1-pcb_example1.xy-error \
-	swap_columns_bad_column1_number2-pcb_example1.xy \
-	swap_columns_bad_column1_number2-pcb_example1.xy-error \
-	swap_columns_bad_column2_number1-pcb_example1.xy \
-	swap_columns_bad_column2_number1-pcb_example1.xy-error \
-	swap_columns_bad_column2_number2-pcb_example1.xy \
-	swap_columns_bad_column2_number2-pcb_example1.xy-error \
-	swap_columns_column1_number_too_high-pcb_example1.xy \
-	swap_columns_column1_number_too_high-pcb_example1.xy-error \
-	swap_columns_column2_number_too_high-pcb_example1.xy \
-	swap_columns_column2_number_too_high-pcb_example1.xy-error \
-	swap_columns_negative_column1_number-pcb_example1.xy \
-	swap_columns_negative_column1_number-pcb_example1.xy-error \
-	swap_columns_negative_column2_number-pcb_example1.xy \
-	swap_columns_negative_column2_number-pcb_example1.xy-error \
-	swap_columns_no_matchlist-pcb_example1.xy \
-	swap_columns_no_matchlist-pcb_example1.xy-error \
-	swap_columns_no_match-pcb_example1.xy \
-	swap_columns_no_match-pcb_example1.xy-error \
-	swap_columns_with_match-pcb_example1.xy \
-	swap_columns_with_match-pcb_example1.xy-error \
-	translate_bad_column_number1-pcb_example1.xy \
-	translate_bad_column_number1-pcb_example1.xy-error \
-	translate_bad_column_number2-pcb_example1.xy \
-	translate_bad_column_number2-pcb_example1.xy-error \
-	translate_column_change_all_value_plus_k-pcb_example1.xy \
-	translate_column_change_all_value_plus_k-pcb_example1.xy-error \
-	translate_col_R10_value_case_insensitive-pcb_example1.xy \
-	translate_col_R10_value_case_insensitive-pcb_example1.xy-error \
-	translate_column_change_R10_value-pcb_example1.xy \
-	translate_column_change_R10_value-pcb_example1.xy-error \
-	translate_column_no_match1-pcb_example1.xy \
-	translate_column_no_match1-pcb_example1.xy-error \
-	translate_column_no_match2-pcb_example1.xy \
-	translate_column_no_match2-pcb_example1.xy-error \
-	translate_column_number_too_high-pcb_example1.xy \
-	translate_column_number_too_high-pcb_example1.xy-error \
-	translate_negative_column_number-pcb_example1.xy \
-	translate_negative_column_number-pcb_example1.xy-error
+	subst_bad_col_num1-pcb_example1.xy \
+	subst_bad_col_num1-pcb_example1.xy-error \
+	subst_bad_col_num2-pcb_example1.xy \
+	subst_bad_col_num2-pcb_example1.xy-error \
+	subst_check_cols_match-pcb_example1.xy \
+	subst_check_cols_match-pcb_example1.xy-error \
+	subst_check_cols_no_match-pcb_example1.xy \
+	subst_check_cols_no_match-pcb_example1.xy-error \
+	subst_check_cols_return_minus1-pcb_example1.xy \
+	subst_check_cols_return_minus1-pcb_example1.xy-error \
+	subst_col_num_too_high-pcb_example1.xy \
+	subst_col_num_too_high-pcb_example1.xy-error \
+	subst_negative_col_num-pcb_example1.xy \
+	subst_negative_col_num-pcb_example1.xy-error \
+	swap_cols_bad_col1_num1-pcb_example1.xy \
+	swap_cols_bad_col1_num1-pcb_example1.xy-error \
+	swap_cols_bad_col1_num2-pcb_example1.xy \
+	swap_cols_bad_col1_num2-pcb_example1.xy-error \
+	swap_cols_bad_col2_num1-pcb_example1.xy \
+	swap_cols_bad_col2_num1-pcb_example1.xy-error \
+	swap_cols_bad_col2_num2-pcb_example1.xy \
+	swap_cols_bad_col2_num2-pcb_example1.xy-error \
+	swap_cols_col1_num_too_high-pcb_example1.xy \
+	swap_cols_col1_num_too_high-pcb_example1.xy-error \
+	swap_cols_col2_num_too_high-pcb_example1.xy \
+	swap_cols_col2_num_too_high-pcb_example1.xy-error \
+	swap_cols_negative_col1_num-pcb_example1.xy \
+	swap_cols_negative_col1_num-pcb_example1.xy-error \
+	swap_cols_negative_col2_num-pcb_example1.xy \
+	swap_cols_negative_col2_num-pcb_example1.xy-error \
+	swap_cols_no_matchlist-pcb_example1.xy \
+	swap_cols_no_matchlist-pcb_example1.xy-error \
+	swap_cols_no_match-pcb_example1.xy \
+	swap_cols_no_match-pcb_example1.xy-error \
+	swap_cols_with_match-pcb_example1.xy \
+	swap_cols_with_match-pcb_example1.xy-error \
+	translate_bad_col_num1-pcb_example1.xy \
+	translate_bad_col_num1-pcb_example1.xy-error \
+	translate_bad_col_num2-pcb_example1.xy \
+	translate_bad_col_num2-pcb_example1.xy-error \
+	translate_col_change_all_value_plus_k-pcb_example1.xy \
+	translate_col_change_all_value_plus_k-pcb_example1.xy-error \
+	translate_col_change_R10_value-pcb_example1.xy \
+	translate_col_change_R10_value-pcb_example1.xy-error \
+	translate_col_no_match1-pcb_example1.xy \
+	translate_col_no_match1-pcb_example1.xy-error \
+	translate_col_no_match2-pcb_example1.xy \
+	translate_col_no_match2-pcb_example1.xy-error \
+	translate_col_num_too_high-pcb_example1.xy \
+	translate_col_num_too_high-pcb_example1.xy-error \
+	translate_col_R10_value_case_insens-pcb_example1.xy \
+	translate_col_R10_value_case_insens-pcb_example1.xy-error \
+	translate_negative_col_num-pcb_example1.xy \
+	translate_negative_col_num-pcb_example1.xy-error
diff --git a/utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt
deleted file mode 100644
index 725a003..0000000
--- a/utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint     Mid X       Mid Y       Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4      CONNECTOR-3-1 50.8mm      92.71mm     0mm   0mm   0mm   0mm   T  90.00    unknown
-R6         ACY1000       81.915mm    108.585mm   0mm   0mm   0mm   0mm   T  180.00   unknown
-R5         ACY1000       81.915mm    102.87mm    0mm   0mm   0mm   0mm   T  180.00   unknown
-R8         ACY1000       81.915mm    97.155mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-R7         ACY1000       81.915mm    91.44mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-C1         1206          24.13mm     95.885mm    0mm   0mm   0mm   0mm   B  0.00     unknown
-C14        1206          31.115mm    91.44mm     0mm   0mm   0mm   0mm   B  90.00    unknown
-D6         1206          28.575mm    98.425mm    0mm   0mm   0mm   0mm   B  180.00   unknown
-C13        1206          41.04513mm  94.950026mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-CONN3      CONNECTOR-4-1 56.515mm    91.44mm     0mm   0mm   0mm   0mm   T  270.00   unknown
-C12        1206          36.530026mm 97.38487mm  0mm   0mm   0mm   0mm   B  270.00   unknown
-U2         TO220         34.0995mm   106.045mm   0mm   0mm   0mm   0mm   T  90.00    unknown
-D7         1206          45.085mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
-D5         1206          28.575mm    95.885mm    0mm   0mm   0mm   0mm   B  180.00   unknown
-R4         1206          12.805156mm 89.605104mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-C15        1206          31.115mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    unknown
-U1         TO220         10.3505mm   106.172mm   0mm   0mm   0mm   0mm   T  90.00    unknown
-R9         1206          47.625mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    1k     
-R10        1206          39.37mm     83.82mm     0mm   0mm   0mm   0mm   B  0.00     1k     
-U3         SO8           27.305mm    89.535mm    0mm   0mm   0mm   0mm   B  270.00   unknown
-R11        1206          34.925mm    83.82mm     0mm   0mm   0mm   0mm   B  180.00   10k    
-D2         CONNECTOR-2-1 12.7mm      97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-C2         1206          23.495mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
-R2         1206          12.87526mm  95.285052mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-CONN1      CONNECTOR-2-1 6.985mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-D4         CONNECTOR-2-1 12.7mm      92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-R1         1206          10.795mm    85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
-C11        1206          33.954974mm 97.38487mm  0mm   0mm   0mm   0mm   B  90.00    unknown
-CONN2      CONNECTOR-2-1 19.05mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-S2         CONNECTOR-2-1 19.05mm     97.79mm     0mm   0mm   0mm   0mm   T  180.00   unknown
-S1         CONNECTOR-2-1 6.985mm     97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-D3         CONNECTOR-2-1 19.05mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-U4         SO16          38.1mm      89.535mm    0mm   0mm   0mm   0mm   B  90.00    unknown
-D1         CONNECTOR-2-1 6.985mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-R3         1206          15.24mm     85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_2mm_6col_tab_notit-protel_example1_mil.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt
deleted file mode 100644
index 54b8075..0000000
--- a/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt-error
deleted file mode 100644
index 08dd3df..0000000
--- a/utils/tests/gxyrs/outputs/change_units_already_done-protel_example1_mil.txt-error
+++ /dev/null
@@ -1,4 +0,0 @@
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
diff --git a/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index 5192ce9..0000000
--- a/utils/tests/gxyrs/outputs/change_units_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
-Error: change_col_units: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index ae540a9..0000000
--- a/utils/tests/gxyrs/outputs/change_units_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
-Error: change_col_units: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 1de09fb..0000000
--- a/utils/tests/gxyrs/outputs/change_units_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
-Error: change_col_units: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt
deleted file mode 100644
index 54b8075..0000000
--- a/utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_done_notitle-protel_example1_mil.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index f894d41..0000000
--- a/utils/tests/gxyrs/outputs/change_units_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
-Error: change_col_units: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy b/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy-error
deleted file mode 100644
index f2a1cf3..0000000
--- a/utils/tests/gxyrs/outputs/change_units_no_units-pcb_example1.xy-error
+++ /dev/null
@@ -1,140 +0,0 @@
-Warning: change_text_units: Text 2000.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 950.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1615.95 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 2225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1438.19 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1342.50 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1775.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 504.14 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 407.50 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1875.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1550.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1075.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1375.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 925.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 506.90 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 425.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1336.81 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 600.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 2000.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 950.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1615.95 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 2225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1438.19 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1342.50 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1775.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 504.14 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 407.50 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1875.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1550.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1075.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1375.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 925.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 506.90 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 425.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1336.81 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 1500.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
-Warning at column 4
-Warning: change_text_units: Text 600.00 has no units. Leaving it as is.
-Warning at column 4
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt b/utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt
deleted file mode 100644
index b88c61f..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 2000mil 92.71mm 0mm 0mm 0mm 0mm T 90.00 unknown
-R6 ACY1000 3225mil 108.585mm 0mm 0mm 0mm 0mm T 180.00 unknown
-R5 ACY1000 3225mil 102.87mm 0mm 0mm 0mm 0mm T 180.00 unknown
-R8 ACY1000 3225mil 97.155mm 0mm 0mm 0mm 0mm T 0.00 unknown
-R7 ACY1000 3225mil 91.44mm 0mm 0mm 0mm 0mm T 0.00 unknown
-C1 1206 950mil 95.885mm 0mm 0mm 0mm 0mm B 0.00 unknown
-C14 1206 1225mil 91.44mm 0mm 0mm 0mm 0mm B 90.00 unknown
-D6 1206 1125mil 98.425mm 0mm 0mm 0mm 0mm B 180.00 unknown
-C13 1206 1615.95mil 94.950026mm 0mm 0mm 0mm 0mm B 180.00 unknown
-CONN3 CONNECTOR-4-1 2225mil 91.44mm 0mm 0mm 0mm 0mm T 270.00 unknown
-C12 1206 1438.19mil 97.38487mm 0mm 0mm 0mm 0mm B 270.00 unknown
-U2 TO220 1342.5mil 106.045mm 0mm 0mm 0mm 0mm T 90.00 unknown
-D7 1206 1775mil 85.09mm 0mm 0mm 0mm 0mm B 270.00 unknown
-D5 1206 1125mil 95.885mm 0mm 0mm 0mm 0mm B 180.00 unknown
-R4 1206 504.14mil 89.605104mm 0mm 0mm 0mm 0mm B 180.00 unknown
-C15 1206 1225mil 85.09mm 0mm 0mm 0mm 0mm B 90.00 unknown
-U1 TO220 407.5mil 106.172mm 0mm 0mm 0mm 0mm T 90.00 unknown
-R9 1206 1875mil 85.09mm 0mm 0mm 0mm 0mm B 90.00 1k
-R10 1206 1550mil 83.82mm 0mm 0mm 0mm 0mm B 0.00 1k
-U3 SO8 1075mil 89.535mm 0mm 0mm 0mm 0mm B 270.00 unknown
-R11 1206 1375mil 83.82mm 0mm 0mm 0mm 0mm B 180.00 10k
-D2 CONNECTOR-2-1 500mil 97.79mm 0mm 0mm 0mm 0mm T 0.00 unknown
-C2 1206 925mil 85.09mm 0mm 0mm 0mm 0mm B 270.00 unknown
-R2 1206 506.9mil 95.285052mm 0mm 0mm 0mm 0mm B 180.00 unknown
-CONN1 CONNECTOR-2-1 275mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
-D4 CONNECTOR-2-1 500mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
-R1 1206 425mil 85.725mm 0mm 0mm 0mm 0mm B 90.00 unknown
-C11 1206 1336.81mil 97.38487mm 0mm 0mm 0mm 0mm B 90.00 unknown
-CONN2 CONNECTOR-2-1 750mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
-S2 CONNECTOR-2-1 750mil 97.79mm 0mm 0mm 0mm 0mm T 180.00 unknown
-S1 CONNECTOR-2-1 275mil 97.79mm 0mm 0mm 0mm 0mm T 0.00 unknown
-D3 CONNECTOR-2-1 750mil 85.09mm 0mm 0mm 0mm 0mm T 0.00 unknown
-U4 SO16 1500mil 89.535mm 0mm 0mm 0mm 0mm B 90.00 unknown
-D1 CONNECTOR-2-1 275mil 85.09mm 0mm 0mm 0mm 0mm T 0.00 unknown
-R3 1206 600mil 85.725mm 0mm 0mm 0mm 0mm B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mil-protel_example1_mm.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt b/utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt
deleted file mode 100644
index fd3c5ad..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 2000mil 3650mil 0mm 0mm 0mm 0mm T 90.00 unknown
-R6 ACY1000 3225mil 4275mil 0mm 0mm 0mm 0mm T 180.00 unknown
-R5 ACY1000 3225mil 4050mil 0mm 0mm 0mm 0mm T 180.00 unknown
-R8 ACY1000 3225mil 3825mil 0mm 0mm 0mm 0mm T 0.00 unknown
-R7 ACY1000 3225mil 3600mil 0mm 0mm 0mm 0mm T 0.00 unknown
-C1 1206 950mil 3775mil 0mm 0mm 0mm 0mm B 0.00 unknown
-C14 1206 1225mil 3600mil 0mm 0mm 0mm 0mm B 90.00 unknown
-D6 1206 1125mil 3875mil 0mm 0mm 0mm 0mm B 180.00 unknown
-C13 1206 1615.95mil 3738.19mil 0mm 0mm 0mm 0mm B 180.00 unknown
-CONN3 CONNECTOR-4-1 2225mil 3600mil 0mm 0mm 0mm 0mm T 270.00 unknown
-C12 1206 1438.19mil 3834.05mil 0mm 0mm 0mm 0mm B 270.00 unknown
-U2 TO220 1342.5mil 4175mil 0mm 0mm 0mm 0mm T 90.00 unknown
-D7 1206 1775mil 3350mil 0mm 0mm 0mm 0mm B 270.00 unknown
-D5 1206 1125mil 3775mil 0mm 0mm 0mm 0mm B 180.00 unknown
-R4 1206 504.14mil 3527.76mil 0mm 0mm 0mm 0mm B 180.00 unknown
-C15 1206 1225mil 3350mil 0mm 0mm 0mm 0mm B 90.00 unknown
-U1 TO220 407.5mil 4180mil 0mm 0mm 0mm 0mm T 90.00 unknown
-R9 1206 1875mil 3350mil 0mm 0mm 0mm 0mm B 90.00 1k
-R10 1206 1550mil 3300mil 0mm 0mm 0mm 0mm B 0.00 1k
-U3 SO8 1075mil 3525mil 0mm 0mm 0mm 0mm B 270.00 unknown
-R11 1206 1375mil 3300mil 0mm 0mm 0mm 0mm B 180.00 10k
-D2 CONNECTOR-2-1 500mil 3850mil 0mm 0mm 0mm 0mm T 0.00 unknown
-C2 1206 925mil 3350mil 0mm 0mm 0mm 0mm B 270.00 unknown
-R2 1206 506.9mil 3751.38mil 0mm 0mm 0mm 0mm B 180.00 unknown
-CONN1 CONNECTOR-2-1 275mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
-D4 CONNECTOR-2-1 500mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
-R1 1206 425mil 3375mil 0mm 0mm 0mm 0mm B 90.00 unknown
-C11 1206 1336.81mil 3834.05mil 0mm 0mm 0mm 0mm B 90.00 unknown
-CONN2 CONNECTOR-2-1 750mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
-S2 CONNECTOR-2-1 750mil 3850mil 0mm 0mm 0mm 0mm T 180.00 unknown
-S1 CONNECTOR-2-1 275mil 3850mil 0mm 0mm 0mm 0mm T 0.00 unknown
-D3 CONNECTOR-2-1 750mil 3350mil 0mm 0mm 0mm 0mm T 0.00 unknown
-U4 SO16 1500mil 3525mil 0mm 0mm 0mm 0mm B 90.00 unknown
-D1 CONNECTOR-2-1 275mil 3350mil 0mm 0mm 0mm 0mm T 0.00 unknown
-R3 1206 600mil 3375mil 0mm 0mm 0mm 0mm B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mil_2cols-protel_example1_mm.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt
deleted file mode 100644
index 4368356..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 50.8mm 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 81.915mm 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 81.915mm 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 81.915mm 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 81.915mm 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 24.13mm 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 31.115mm 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 28.575mm 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 41.04513mm 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 56.515mm 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 36.530026mm 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 34.0995mm 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 45.085mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 28.575mm 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 12.805156mm 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 31.115mm 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 10.3505mm 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 47.625mm 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 39.37mm 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 27.305mm 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 34.925mm 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 12.7mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 23.495mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 12.87526mm 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 6.985mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 12.7mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 10.795mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 33.954974mm 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 19.05mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 19.05mm 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 6.985mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 19.05mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 38.1mm 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 6.985mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 15.24mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt-error
deleted file mode 100644
index 08dd3df..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm-protel_example1_mil.txt-error
+++ /dev/null
@@ -1,4 +0,0 @@
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt
deleted file mode 100644
index f726e12..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 50.8mm 92.71mm 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 81.915mm 108.585mm 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 81.915mm 102.87mm 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 81.915mm 97.155mm 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 81.915mm 91.44mm 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 24.13mm 95.885mm 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 31.115mm 91.44mm 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 28.575mm 98.425mm 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 41.04513mm 94.950026mm 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 56.515mm 91.44mm 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 36.530026mm 97.38487mm 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 34.0995mm 106.045mm 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 45.085mm 85.09mm 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 28.575mm 95.885mm 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 12.805156mm 89.605104mm 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 31.115mm 85.09mm 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 10.3505mm 106.172mm 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 47.625mm 85.09mm 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 39.37mm 83.82mm 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 27.305mm 89.535mm 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 34.925mm 83.82mm 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 12.7mm 97.79mm 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 23.495mm 85.09mm 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 12.87526mm 95.285052mm 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 6.985mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 12.7mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 10.795mm 85.725mm 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 33.954974mm 97.38487mm 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 19.05mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 19.05mm 97.79mm 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 6.985mm 97.79mm 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 19.05mm 85.09mm 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 38.1mm 89.535mm 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 6.985mm 85.09mm 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 15.24mm 85.725mm 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mm_2cols-protel_example1_mil.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt
deleted file mode 100644
index 725a003..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint     Mid X       Mid Y       Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4      CONNECTOR-3-1 50.8mm      92.71mm     0mm   0mm   0mm   0mm   T  90.00    unknown
-R6         ACY1000       81.915mm    108.585mm   0mm   0mm   0mm   0mm   T  180.00   unknown
-R5         ACY1000       81.915mm    102.87mm    0mm   0mm   0mm   0mm   T  180.00   unknown
-R8         ACY1000       81.915mm    97.155mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-R7         ACY1000       81.915mm    91.44mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-C1         1206          24.13mm     95.885mm    0mm   0mm   0mm   0mm   B  0.00     unknown
-C14        1206          31.115mm    91.44mm     0mm   0mm   0mm   0mm   B  90.00    unknown
-D6         1206          28.575mm    98.425mm    0mm   0mm   0mm   0mm   B  180.00   unknown
-C13        1206          41.04513mm  94.950026mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-CONN3      CONNECTOR-4-1 56.515mm    91.44mm     0mm   0mm   0mm   0mm   T  270.00   unknown
-C12        1206          36.530026mm 97.38487mm  0mm   0mm   0mm   0mm   B  270.00   unknown
-U2         TO220         34.0995mm   106.045mm   0mm   0mm   0mm   0mm   T  90.00    unknown
-D7         1206          45.085mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
-D5         1206          28.575mm    95.885mm    0mm   0mm   0mm   0mm   B  180.00   unknown
-R4         1206          12.805156mm 89.605104mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-C15        1206          31.115mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    unknown
-U1         TO220         10.3505mm   106.172mm   0mm   0mm   0mm   0mm   T  90.00    unknown
-R9         1206          47.625mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    1k     
-R10        1206          39.37mm     83.82mm     0mm   0mm   0mm   0mm   B  0.00     1k     
-U3         SO8           27.305mm    89.535mm    0mm   0mm   0mm   0mm   B  270.00   unknown
-R11        1206          34.925mm    83.82mm     0mm   0mm   0mm   0mm   B  180.00   10k    
-D2         CONNECTOR-2-1 12.7mm      97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-C2         1206          23.495mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
-R2         1206          12.87526mm  95.285052mm 0mm   0mm   0mm   0mm   B  180.00   unknown
-CONN1      CONNECTOR-2-1 6.985mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-D4         CONNECTOR-2-1 12.7mm      92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-R1         1206          10.795mm    85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
-C11        1206          33.954974mm 97.38487mm  0mm   0mm   0mm   0mm   B  90.00    unknown
-CONN2      CONNECTOR-2-1 19.05mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
-S2         CONNECTOR-2-1 19.05mm     97.79mm     0mm   0mm   0mm   0mm   T  180.00   unknown
-S1         CONNECTOR-2-1 6.985mm     97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-D3         CONNECTOR-2-1 19.05mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-U4         SO16          38.1mm      89.535mm    0mm   0mm   0mm   0mm   B  90.00    unknown
-D1         CONNECTOR-2-1 6.985mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
-R3         1206          15.24mm     85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt-error
deleted file mode 100644
index cdaacb1..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm_6col_tab-protel_example1_mil.txt-error
+++ /dev/null
@@ -1,24 +0,0 @@
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Warning: change_text_units: Text Mid Y has no numbers!
-Warning at column 4
-Warning: change_text_units: Text Ref X has no numbers!
-Warning at column 5
-Warning: change_text_units: Text Ref Y has no numbers!
-Warning at column 6
-Warning: change_text_units: Text Pad X has no numbers!
-Warning at column 7
-Warning: change_text_units: Text Pad Y has no numbers!
-Warning at column 8
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Warning: change_text_units: Text Mid Y has no numbers!
-Warning at column 4
-Warning: change_text_units: Text Ref X has no numbers!
-Warning at column 5
-Warning: change_text_units: Text Ref Y has no numbers!
-Warning at column 6
-Warning: change_text_units: Text Pad X has no numbers!
-Warning at column 7
-Warning: change_text_units: Text Pad Y has no numbers!
-Warning at column 8
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt
deleted file mode 100644
index 4368356..0000000
--- a/utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 50.8mm 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 81.915mm 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 81.915mm 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 81.915mm 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 81.915mm 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 24.13mm 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 31.115mm 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 28.575mm 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 41.04513mm 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 56.515mm 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 36.530026mm 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 34.0995mm 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 45.085mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 28.575mm 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 12.805156mm 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 31.115mm 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 10.3505mm 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 47.625mm 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 39.37mm 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 27.305mm 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 34.925mm 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 12.7mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 23.495mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 12.87526mm 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 6.985mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 12.7mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 10.795mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 33.954974mm 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 19.05mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 19.05mm 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 6.985mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 19.05mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 38.1mm 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 6.985mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 15.24mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_to_mm_no_title-protel_example1_mil.txt-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt
deleted file mode 100644
index 54b8075..0000000
--- a/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
-
-CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
-R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
-C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
-C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
-U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
-D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
-R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
-C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
-U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
-R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
-R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
-U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
-D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
-R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
-CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
-C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
-CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
-S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
-S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
-D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
-D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
-R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt-error
deleted file mode 100644
index a8c066f..0000000
--- a/utils/tests/gxyrs/outputs/change_units_units_not_supported-protel_example1_mil.txt-error
+++ /dev/null
@@ -1,144 +0,0 @@
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Warning: change_text_units: Text Mid X has no numbers!
-Warning at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
-Error: Desired units 'gallons' not supported.
-Error at column 3
diff --git a/utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt
new file mode 100644
index 0000000..725a003
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint     Mid X       Mid Y       Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4      CONNECTOR-3-1 50.8mm      92.71mm     0mm   0mm   0mm   0mm   T  90.00    unknown
+R6         ACY1000       81.915mm    108.585mm   0mm   0mm   0mm   0mm   T  180.00   unknown
+R5         ACY1000       81.915mm    102.87mm    0mm   0mm   0mm   0mm   T  180.00   unknown
+R8         ACY1000       81.915mm    97.155mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+R7         ACY1000       81.915mm    91.44mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+C1         1206          24.13mm     95.885mm    0mm   0mm   0mm   0mm   B  0.00     unknown
+C14        1206          31.115mm    91.44mm     0mm   0mm   0mm   0mm   B  90.00    unknown
+D6         1206          28.575mm    98.425mm    0mm   0mm   0mm   0mm   B  180.00   unknown
+C13        1206          41.04513mm  94.950026mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+CONN3      CONNECTOR-4-1 56.515mm    91.44mm     0mm   0mm   0mm   0mm   T  270.00   unknown
+C12        1206          36.530026mm 97.38487mm  0mm   0mm   0mm   0mm   B  270.00   unknown
+U2         TO220         34.0995mm   106.045mm   0mm   0mm   0mm   0mm   T  90.00    unknown
+D7         1206          45.085mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
+D5         1206          28.575mm    95.885mm    0mm   0mm   0mm   0mm   B  180.00   unknown
+R4         1206          12.805156mm 89.605104mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+C15        1206          31.115mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    unknown
+U1         TO220         10.3505mm   106.172mm   0mm   0mm   0mm   0mm   T  90.00    unknown
+R9         1206          47.625mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    1k     
+R10        1206          39.37mm     83.82mm     0mm   0mm   0mm   0mm   B  0.00     1k     
+U3         SO8           27.305mm    89.535mm    0mm   0mm   0mm   0mm   B  270.00   unknown
+R11        1206          34.925mm    83.82mm     0mm   0mm   0mm   0mm   B  180.00   10k    
+D2         CONNECTOR-2-1 12.7mm      97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+C2         1206          23.495mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
+R2         1206          12.87526mm  95.285052mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+CONN1      CONNECTOR-2-1 6.985mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+D4         CONNECTOR-2-1 12.7mm      92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+R1         1206          10.795mm    85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
+C11        1206          33.954974mm 97.38487mm  0mm   0mm   0mm   0mm   B  90.00    unknown
+CONN2      CONNECTOR-2-1 19.05mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+S2         CONNECTOR-2-1 19.05mm     97.79mm     0mm   0mm   0mm   0mm   T  180.00   unknown
+S1         CONNECTOR-2-1 6.985mm     97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+D3         CONNECTOR-2-1 19.05mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+U4         SO16          38.1mm      89.535mm    0mm   0mm   0mm   0mm   B  90.00    unknown
+D1         CONNECTOR-2-1 6.985mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+R3         1206          15.24mm     85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_2mm_6col_tab_notit-protel_example1_mil.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt
new file mode 100644
index 0000000..54b8075
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt-error
new file mode 100644
index 0000000..08dd3df
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_already_done-protel_example1_mil.txt-error
@@ -0,0 +1,4 @@
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
diff --git a/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..5192ce9
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
+Error: change_col_units: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..ae540a9
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
+Error: change_col_units: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..1de09fb
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
+Error: change_col_units: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt
new file mode 100644
index 0000000..54b8075
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_done_notitle-protel_example1_mil.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..f894d41
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
+Error: change_col_units: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy b/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy-error
new file mode 100644
index 0000000..f2a1cf3
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_no_units-pcb_example1.xy-error
@@ -0,0 +1,140 @@
+Warning: change_text_units: Text 2000.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 950.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1615.95 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 2225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1438.19 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1342.50 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1775.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 504.14 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 407.50 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1875.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1550.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1075.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1375.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 925.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 506.90 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 425.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1336.81 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 600.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 2000.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 3225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 950.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1615.95 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 2225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1438.19 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1342.50 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1775.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1125.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 504.14 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1225.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 407.50 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1875.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1550.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1075.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1375.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 925.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 506.90 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 425.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1336.81 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 750.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 1500.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 275.00 has no units. Leaving it as is.
+Warning at column 4
+Warning: change_text_units: Text 600.00 has no units. Leaving it as is.
+Warning at column 4
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt b/utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt
new file mode 100644
index 0000000..b88c61f
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 2000mil 92.71mm 0mm 0mm 0mm 0mm T 90.00 unknown
+R6 ACY1000 3225mil 108.585mm 0mm 0mm 0mm 0mm T 180.00 unknown
+R5 ACY1000 3225mil 102.87mm 0mm 0mm 0mm 0mm T 180.00 unknown
+R8 ACY1000 3225mil 97.155mm 0mm 0mm 0mm 0mm T 0.00 unknown
+R7 ACY1000 3225mil 91.44mm 0mm 0mm 0mm 0mm T 0.00 unknown
+C1 1206 950mil 95.885mm 0mm 0mm 0mm 0mm B 0.00 unknown
+C14 1206 1225mil 91.44mm 0mm 0mm 0mm 0mm B 90.00 unknown
+D6 1206 1125mil 98.425mm 0mm 0mm 0mm 0mm B 180.00 unknown
+C13 1206 1615.95mil 94.950026mm 0mm 0mm 0mm 0mm B 180.00 unknown
+CONN3 CONNECTOR-4-1 2225mil 91.44mm 0mm 0mm 0mm 0mm T 270.00 unknown
+C12 1206 1438.19mil 97.38487mm 0mm 0mm 0mm 0mm B 270.00 unknown
+U2 TO220 1342.5mil 106.045mm 0mm 0mm 0mm 0mm T 90.00 unknown
+D7 1206 1775mil 85.09mm 0mm 0mm 0mm 0mm B 270.00 unknown
+D5 1206 1125mil 95.885mm 0mm 0mm 0mm 0mm B 180.00 unknown
+R4 1206 504.14mil 89.605104mm 0mm 0mm 0mm 0mm B 180.00 unknown
+C15 1206 1225mil 85.09mm 0mm 0mm 0mm 0mm B 90.00 unknown
+U1 TO220 407.5mil 106.172mm 0mm 0mm 0mm 0mm T 90.00 unknown
+R9 1206 1875mil 85.09mm 0mm 0mm 0mm 0mm B 90.00 1k
+R10 1206 1550mil 83.82mm 0mm 0mm 0mm 0mm B 0.00 1k
+U3 SO8 1075mil 89.535mm 0mm 0mm 0mm 0mm B 270.00 unknown
+R11 1206 1375mil 83.82mm 0mm 0mm 0mm 0mm B 180.00 10k
+D2 CONNECTOR-2-1 500mil 97.79mm 0mm 0mm 0mm 0mm T 0.00 unknown
+C2 1206 925mil 85.09mm 0mm 0mm 0mm 0mm B 270.00 unknown
+R2 1206 506.9mil 95.285052mm 0mm 0mm 0mm 0mm B 180.00 unknown
+CONN1 CONNECTOR-2-1 275mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
+D4 CONNECTOR-2-1 500mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
+R1 1206 425mil 85.725mm 0mm 0mm 0mm 0mm B 90.00 unknown
+C11 1206 1336.81mil 97.38487mm 0mm 0mm 0mm 0mm B 90.00 unknown
+CONN2 CONNECTOR-2-1 750mil 92.075mm 0mm 0mm 0mm 0mm T 0.00 unknown
+S2 CONNECTOR-2-1 750mil 97.79mm 0mm 0mm 0mm 0mm T 180.00 unknown
+S1 CONNECTOR-2-1 275mil 97.79mm 0mm 0mm 0mm 0mm T 0.00 unknown
+D3 CONNECTOR-2-1 750mil 85.09mm 0mm 0mm 0mm 0mm T 0.00 unknown
+U4 SO16 1500mil 89.535mm 0mm 0mm 0mm 0mm B 90.00 unknown
+D1 CONNECTOR-2-1 275mil 85.09mm 0mm 0mm 0mm 0mm T 0.00 unknown
+R3 1206 600mil 85.725mm 0mm 0mm 0mm 0mm B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mil-protel_example1_mm.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt b/utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt
new file mode 100644
index 0000000..fd3c5ad
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 2000mil 3650mil 0mm 0mm 0mm 0mm T 90.00 unknown
+R6 ACY1000 3225mil 4275mil 0mm 0mm 0mm 0mm T 180.00 unknown
+R5 ACY1000 3225mil 4050mil 0mm 0mm 0mm 0mm T 180.00 unknown
+R8 ACY1000 3225mil 3825mil 0mm 0mm 0mm 0mm T 0.00 unknown
+R7 ACY1000 3225mil 3600mil 0mm 0mm 0mm 0mm T 0.00 unknown
+C1 1206 950mil 3775mil 0mm 0mm 0mm 0mm B 0.00 unknown
+C14 1206 1225mil 3600mil 0mm 0mm 0mm 0mm B 90.00 unknown
+D6 1206 1125mil 3875mil 0mm 0mm 0mm 0mm B 180.00 unknown
+C13 1206 1615.95mil 3738.19mil 0mm 0mm 0mm 0mm B 180.00 unknown
+CONN3 CONNECTOR-4-1 2225mil 3600mil 0mm 0mm 0mm 0mm T 270.00 unknown
+C12 1206 1438.19mil 3834.05mil 0mm 0mm 0mm 0mm B 270.00 unknown
+U2 TO220 1342.5mil 4175mil 0mm 0mm 0mm 0mm T 90.00 unknown
+D7 1206 1775mil 3350mil 0mm 0mm 0mm 0mm B 270.00 unknown
+D5 1206 1125mil 3775mil 0mm 0mm 0mm 0mm B 180.00 unknown
+R4 1206 504.14mil 3527.76mil 0mm 0mm 0mm 0mm B 180.00 unknown
+C15 1206 1225mil 3350mil 0mm 0mm 0mm 0mm B 90.00 unknown
+U1 TO220 407.5mil 4180mil 0mm 0mm 0mm 0mm T 90.00 unknown
+R9 1206 1875mil 3350mil 0mm 0mm 0mm 0mm B 90.00 1k
+R10 1206 1550mil 3300mil 0mm 0mm 0mm 0mm B 0.00 1k
+U3 SO8 1075mil 3525mil 0mm 0mm 0mm 0mm B 270.00 unknown
+R11 1206 1375mil 3300mil 0mm 0mm 0mm 0mm B 180.00 10k
+D2 CONNECTOR-2-1 500mil 3850mil 0mm 0mm 0mm 0mm T 0.00 unknown
+C2 1206 925mil 3350mil 0mm 0mm 0mm 0mm B 270.00 unknown
+R2 1206 506.9mil 3751.38mil 0mm 0mm 0mm 0mm B 180.00 unknown
+CONN1 CONNECTOR-2-1 275mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
+D4 CONNECTOR-2-1 500mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
+R1 1206 425mil 3375mil 0mm 0mm 0mm 0mm B 90.00 unknown
+C11 1206 1336.81mil 3834.05mil 0mm 0mm 0mm 0mm B 90.00 unknown
+CONN2 CONNECTOR-2-1 750mil 3625mil 0mm 0mm 0mm 0mm T 0.00 unknown
+S2 CONNECTOR-2-1 750mil 3850mil 0mm 0mm 0mm 0mm T 180.00 unknown
+S1 CONNECTOR-2-1 275mil 3850mil 0mm 0mm 0mm 0mm T 0.00 unknown
+D3 CONNECTOR-2-1 750mil 3350mil 0mm 0mm 0mm 0mm T 0.00 unknown
+U4 SO16 1500mil 3525mil 0mm 0mm 0mm 0mm B 90.00 unknown
+D1 CONNECTOR-2-1 275mil 3350mil 0mm 0mm 0mm 0mm T 0.00 unknown
+R3 1206 600mil 3375mil 0mm 0mm 0mm 0mm B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mil_2cols-protel_example1_mm.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt
new file mode 100644
index 0000000..4368356
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 50.8mm 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 81.915mm 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 81.915mm 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 81.915mm 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 81.915mm 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 24.13mm 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 31.115mm 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 28.575mm 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 41.04513mm 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 56.515mm 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 36.530026mm 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 34.0995mm 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 45.085mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 28.575mm 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 12.805156mm 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 31.115mm 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 10.3505mm 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 47.625mm 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 39.37mm 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 27.305mm 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 34.925mm 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 12.7mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 23.495mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 12.87526mm 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 6.985mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 12.7mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 10.795mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 33.954974mm 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 19.05mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 19.05mm 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 6.985mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 19.05mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 38.1mm 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 6.985mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 15.24mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt-error
new file mode 100644
index 0000000..08dd3df
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm-protel_example1_mil.txt-error
@@ -0,0 +1,4 @@
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt
new file mode 100644
index 0000000..f726e12
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 50.8mm 92.71mm 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 81.915mm 108.585mm 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 81.915mm 102.87mm 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 81.915mm 97.155mm 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 81.915mm 91.44mm 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 24.13mm 95.885mm 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 31.115mm 91.44mm 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 28.575mm 98.425mm 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 41.04513mm 94.950026mm 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 56.515mm 91.44mm 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 36.530026mm 97.38487mm 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 34.0995mm 106.045mm 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 45.085mm 85.09mm 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 28.575mm 95.885mm 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 12.805156mm 89.605104mm 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 31.115mm 85.09mm 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 10.3505mm 106.172mm 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 47.625mm 85.09mm 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 39.37mm 83.82mm 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 27.305mm 89.535mm 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 34.925mm 83.82mm 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 12.7mm 97.79mm 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 23.495mm 85.09mm 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 12.87526mm 95.285052mm 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 6.985mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 12.7mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 10.795mm 85.725mm 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 33.954974mm 97.38487mm 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 19.05mm 92.075mm 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 19.05mm 97.79mm 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 6.985mm 97.79mm 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 19.05mm 85.09mm 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 38.1mm 89.535mm 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 6.985mm 85.09mm 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 15.24mm 85.725mm 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mm_2cols-protel_example1_mil.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt
new file mode 100644
index 0000000..725a003
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint     Mid X       Mid Y       Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4      CONNECTOR-3-1 50.8mm      92.71mm     0mm   0mm   0mm   0mm   T  90.00    unknown
+R6         ACY1000       81.915mm    108.585mm   0mm   0mm   0mm   0mm   T  180.00   unknown
+R5         ACY1000       81.915mm    102.87mm    0mm   0mm   0mm   0mm   T  180.00   unknown
+R8         ACY1000       81.915mm    97.155mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+R7         ACY1000       81.915mm    91.44mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+C1         1206          24.13mm     95.885mm    0mm   0mm   0mm   0mm   B  0.00     unknown
+C14        1206          31.115mm    91.44mm     0mm   0mm   0mm   0mm   B  90.00    unknown
+D6         1206          28.575mm    98.425mm    0mm   0mm   0mm   0mm   B  180.00   unknown
+C13        1206          41.04513mm  94.950026mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+CONN3      CONNECTOR-4-1 56.515mm    91.44mm     0mm   0mm   0mm   0mm   T  270.00   unknown
+C12        1206          36.530026mm 97.38487mm  0mm   0mm   0mm   0mm   B  270.00   unknown
+U2         TO220         34.0995mm   106.045mm   0mm   0mm   0mm   0mm   T  90.00    unknown
+D7         1206          45.085mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
+D5         1206          28.575mm    95.885mm    0mm   0mm   0mm   0mm   B  180.00   unknown
+R4         1206          12.805156mm 89.605104mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+C15        1206          31.115mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    unknown
+U1         TO220         10.3505mm   106.172mm   0mm   0mm   0mm   0mm   T  90.00    unknown
+R9         1206          47.625mm    85.09mm     0mm   0mm   0mm   0mm   B  90.00    1k     
+R10        1206          39.37mm     83.82mm     0mm   0mm   0mm   0mm   B  0.00     1k     
+U3         SO8           27.305mm    89.535mm    0mm   0mm   0mm   0mm   B  270.00   unknown
+R11        1206          34.925mm    83.82mm     0mm   0mm   0mm   0mm   B  180.00   10k    
+D2         CONNECTOR-2-1 12.7mm      97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+C2         1206          23.495mm    85.09mm     0mm   0mm   0mm   0mm   B  270.00   unknown
+R2         1206          12.87526mm  95.285052mm 0mm   0mm   0mm   0mm   B  180.00   unknown
+CONN1      CONNECTOR-2-1 6.985mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+D4         CONNECTOR-2-1 12.7mm      92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+R1         1206          10.795mm    85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
+C11        1206          33.954974mm 97.38487mm  0mm   0mm   0mm   0mm   B  90.00    unknown
+CONN2      CONNECTOR-2-1 19.05mm     92.075mm    0mm   0mm   0mm   0mm   T  0.00     unknown
+S2         CONNECTOR-2-1 19.05mm     97.79mm     0mm   0mm   0mm   0mm   T  180.00   unknown
+S1         CONNECTOR-2-1 6.985mm     97.79mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+D3         CONNECTOR-2-1 19.05mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+U4         SO16          38.1mm      89.535mm    0mm   0mm   0mm   0mm   B  90.00    unknown
+D1         CONNECTOR-2-1 6.985mm     85.09mm     0mm   0mm   0mm   0mm   T  0.00     unknown
+R3         1206          15.24mm     85.725mm    0mm   0mm   0mm   0mm   B  90.00    unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt-error
new file mode 100644
index 0000000..cdaacb1
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm_6col_tab-protel_example1_mil.txt-error
@@ -0,0 +1,24 @@
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Warning: change_text_units: Text Mid Y has no numbers!
+Warning at column 4
+Warning: change_text_units: Text Ref X has no numbers!
+Warning at column 5
+Warning: change_text_units: Text Ref Y has no numbers!
+Warning at column 6
+Warning: change_text_units: Text Pad X has no numbers!
+Warning at column 7
+Warning: change_text_units: Text Pad Y has no numbers!
+Warning at column 8
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Warning: change_text_units: Text Mid Y has no numbers!
+Warning at column 4
+Warning: change_text_units: Text Ref X has no numbers!
+Warning at column 5
+Warning: change_text_units: Text Ref Y has no numbers!
+Warning at column 6
+Warning: change_text_units: Text Pad X has no numbers!
+Warning at column 7
+Warning: change_text_units: Text Pad Y has no numbers!
+Warning at column 8
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt
new file mode 100644
index 0000000..4368356
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 50.8mm 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 81.915mm 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 81.915mm 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 81.915mm 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 81.915mm 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 24.13mm 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 31.115mm 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 28.575mm 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 41.04513mm 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 56.515mm 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 36.530026mm 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 34.0995mm 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 45.085mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 28.575mm 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 12.805156mm 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 31.115mm 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 10.3505mm 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 47.625mm 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 39.37mm 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 27.305mm 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 34.925mm 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 12.7mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 23.495mm 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 12.87526mm 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 6.985mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 12.7mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 10.795mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 33.954974mm 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 19.05mm 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 19.05mm 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 6.985mm 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 19.05mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 38.1mm 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 6.985mm 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 15.24mm 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_to_mm_no_title-protel_example1_mil.txt-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt b/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt
new file mode 100644
index 0000000..54b8075
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt
@@ -0,0 +1,37 @@
+Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y TB Rotation Comment
+
+CONN4 CONNECTOR-3-1 2000mil 3650mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R6 ACY1000 3225mil 4275mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R5 ACY1000 3225mil 4050mil 0mil 0mil 0mil 0mil T 180.00 unknown
+R8 ACY1000 3225mil 3825mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R7 ACY1000 3225mil 3600mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C1 1206 950mil 3775mil 0mil 0mil 0mil 0mil B 0.00 unknown
+C14 1206 1225mil 3600mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D6 1206 1125mil 3875mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C13 1206 1615.95mil 3738.19mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN3 CONNECTOR-4-1 2225mil 3600mil 0mil 0mil 0mil 0mil T 270.00 unknown
+C12 1206 1438.19mil 3834.05mil 0mil 0mil 0mil 0mil B 270.00 unknown
+U2 TO220 1342.50mil 4175mil 0mil 0mil 0mil 0mil T 90.00 unknown
+D7 1206 1775mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+D5 1206 1125mil 3775mil 0mil 0mil 0mil 0mil B 180.00 unknown
+R4 1206 504.14mil 3527.76mil 0mil 0mil 0mil 0mil B 180.00 unknown
+C15 1206 1225mil 3350mil 0mil 0mil 0mil 0mil B 90.00 unknown
+U1 TO220 407.50mil 4180mil 0mil 0mil 0mil 0mil T 90.00 unknown
+R9 1206 1875mil 3350mil 0mil 0mil 0mil 0mil B 90.00 1k
+R10 1206 1550mil 3300mil 0mil 0mil 0mil 0mil B 0.00 1k
+U3 SO8 1075mil 3525mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R11 1206 1375mil 3300mil 0mil 0mil 0mil 0mil B 180.00 10k
+D2 CONNECTOR-2-1 500mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+C2 1206 925mil 3350mil 0mil 0mil 0mil 0mil B 270.00 unknown
+R2 1206 506.90mil 3751.38mil 0mil 0mil 0mil 0mil B 180.00 unknown
+CONN1 CONNECTOR-2-1 275mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D4 CONNECTOR-2-1 500mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R1 1206 425mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
+C11 1206 1336.81mil 3834.05mil 0mil 0mil 0mil 0mil B 90.00 unknown
+CONN2 CONNECTOR-2-1 750mil 3625mil 0mil 0mil 0mil 0mil T 0.00 unknown
+S2 CONNECTOR-2-1 750mil 3850mil 0mil 0mil 0mil 0mil T 180.00 unknown
+S1 CONNECTOR-2-1 275mil 3850mil 0mil 0mil 0mil 0mil T 0.00 unknown
+D3 CONNECTOR-2-1 750mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+U4 SO16 1500mil 3525mil 0mil 0mil 0mil 0mil B 90.00 unknown
+D1 CONNECTOR-2-1 275mil 3350mil 0mil 0mil 0mil 0mil T 0.00 unknown
+R3 1206 600mil 3375mil 0mil 0mil 0mil 0mil B 90.00 unknown
diff --git a/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt-error b/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt-error
new file mode 100644
index 0000000..a8c066f
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/chunits_units_not_supported-protel_example1_mil.txt-error
@@ -0,0 +1,144 @@
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Warning: change_text_units: Text Mid X has no numbers!
+Warning at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
+Error: Desired units 'gallons' not supported.
+Error at column 3
diff --git a/utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy
new file mode 100644
index 0000000..3d383f4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy
@@ -0,0 +1,32 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_insens1-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy
new file mode 100644
index 0000000..3d383f4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy
@@ -0,0 +1,32 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_insens2-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy
deleted file mode 100644
index 3d383f4..0000000
--- a/utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_insensitive1-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy
deleted file mode 100644
index 3d383f4..0000000
--- a/utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_insensitive2-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy
new file mode 100644
index 0000000..3d383f4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy
@@ -0,0 +1,32 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_sens1-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy
new file mode 100644
index 0000000..c1bda42
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+r6,"ACY1000","unknown",3225.00,4275.00,180,top
+r5,"ACY1000","unknown",3225.00,4050.00,180,top
+r8,"ACY1000","unknown",3225.00,3825.00,0,top
+r7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+r4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+r9,"1206","1k",1875.00,3350.00,90,bottom
+r10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+r11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+r2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+r1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_sens2-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_sens3-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy
new file mode 100644
index 0000000..3d383f4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy
@@ -0,0 +1,32 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_sens4-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy
deleted file mode 100644
index 3d383f4..0000000
--- a/utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_sensitive1-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy
deleted file mode 100644
index c1bda42..0000000
--- a/utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-r6,"ACY1000","unknown",3225.00,4275.00,180,top
-r5,"ACY1000","unknown",3225.00,4050.00,180,top
-r8,"ACY1000","unknown",3225.00,3825.00,0,top
-r7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-r4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-r9,"1206","1k",1875.00,3350.00,90,bottom
-r10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-r11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-r2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-r1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_sensitive2-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_case_sensitive3-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy b/utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy
deleted file mode 100644
index 3d383f4..0000000
--- a/utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
diff --git a/utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/del_case_sensitive4-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_check_cols_no_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy-error
new file mode 100644
index 0000000..d62840d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/del_check_cols_return_minus1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_check_columns_no_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy-error
deleted file mode 100644
index d62840d..0000000
--- a/utils/tests/gxyrs/outputs/del_check_columns_return_minus1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..423755a
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
+Error: insert_column: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..4bdea7d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
+Error: insert_column: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..2478a46
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
+Error: insert_column: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy
new file mode 100644
index 0000000..6ff6762
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+new_value,CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+new_value,R6,"ACY1000","unknown",3225.00,4275.00,180,top
+new_value,R5,"ACY1000","unknown",3225.00,4050.00,180,top
+new_value,R8,"ACY1000","unknown",3225.00,3825.00,0,top
+new_value,R7,"ACY1000","unknown",3225.00,3600.00,0,top
+new_value,C1,"1206","unknown",950.00,3775.00,0,bottom
+new_value,C14,"1206","unknown",1225.00,3600.00,90,bottom
+new_value,D6,"1206","unknown",1125.00,3875.00,180,bottom
+new_value,C13,"1206","unknown",1615.95,3738.19,180,bottom
+new_value,CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+new_value,C12,"1206","unknown",1438.19,3834.05,270,bottom
+new_value,U2,"TO220","unknown",1342.50,4175.00,90,top
+new_value,D7,"1206","unknown",1775.00,3350.00,270,bottom
+new_value,D5,"1206","unknown",1125.00,3775.00,180,bottom
+new_value,R4,"1206","unknown",504.14,3527.76,180,bottom
+new_value,C15,"1206","unknown",1225.00,3350.00,90,bottom
+new_value,U1,"TO220","unknown",407.50,4180.00,90,top
+new_value,R9,"1206","1k",1875.00,3350.00,90,bottom
+new_value,R10,"1206","1k",1550.00,3300.00,0,bottom
+new_value,U3,"SO8","unknown",1075.00,3525.00,270,bottom
+new_value,R11,"1206","10k",1375.00,3300.00,180,bottom
+new_value,D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+new_value,C2,"1206","unknown",925.00,3350.00,270,bottom
+new_value,R2,"1206","unknown",506.90,3751.38,180,bottom
+new_value,CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+new_value,D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+new_value,R1,"1206","unknown",425.00,3375.00,90,bottom
+new_value,C11,"1206","unknown",1336.81,3834.05,90,bottom
+new_value,CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+new_value,S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+new_value,S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+new_value,D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+new_value,U4,"SO16","unknown",1500.00,3525.00,90,bottom
+new_value,D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+new_value,R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_first_pos-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..29c6356
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
+Error: insert_column: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy
new file mode 100644
index 0000000..2e4092b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,new_value,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,new_value,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,new_value,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,new_value,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,new_value,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,new_value,"1206","unknown",950.00,3775.00,0,bottom
+C14,new_value,"1206","unknown",1225.00,3600.00,90,bottom
+D6,new_value,"1206","unknown",1125.00,3875.00,180,bottom
+C13,new_value,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,new_value,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,new_value,"1206","unknown",1438.19,3834.05,270,bottom
+U2,new_value,"TO220","unknown",1342.50,4175.00,90,top
+D7,new_value,"1206","unknown",1775.00,3350.00,270,bottom
+D5,new_value,"1206","unknown",1125.00,3775.00,180,bottom
+R4,new_value,"1206","unknown",504.14,3527.76,180,bottom
+C15,new_value,"1206","unknown",1225.00,3350.00,90,bottom
+U1,new_value,"TO220","unknown",407.50,4180.00,90,top
+R9,new_value,"1206","1k",1875.00,3350.00,90,bottom
+R10,new_value,"1206","1k",1550.00,3300.00,0,bottom
+U3,new_value,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,new_value,"1206","10k",1375.00,3300.00,180,bottom
+D2,new_value,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,new_value,"1206","unknown",925.00,3350.00,270,bottom
+R2,new_value,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,new_value,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,new_value,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,new_value,"1206","unknown",425.00,3375.00,90,bottom
+C11,new_value,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,new_value,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,new_value,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,new_value,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,new_value,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,new_value,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,new_value,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,new_value,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_col_second_pos-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index 423755a..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
-Error: insert_column: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index 4bdea7d..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
-Error: insert_column: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 2478a46..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
-Error: insert_column: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy
deleted file mode 100644
index 6ff6762..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-new_value,CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-new_value,R6,"ACY1000","unknown",3225.00,4275.00,180,top
-new_value,R5,"ACY1000","unknown",3225.00,4050.00,180,top
-new_value,R8,"ACY1000","unknown",3225.00,3825.00,0,top
-new_value,R7,"ACY1000","unknown",3225.00,3600.00,0,top
-new_value,C1,"1206","unknown",950.00,3775.00,0,bottom
-new_value,C14,"1206","unknown",1225.00,3600.00,90,bottom
-new_value,D6,"1206","unknown",1125.00,3875.00,180,bottom
-new_value,C13,"1206","unknown",1615.95,3738.19,180,bottom
-new_value,CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-new_value,C12,"1206","unknown",1438.19,3834.05,270,bottom
-new_value,U2,"TO220","unknown",1342.50,4175.00,90,top
-new_value,D7,"1206","unknown",1775.00,3350.00,270,bottom
-new_value,D5,"1206","unknown",1125.00,3775.00,180,bottom
-new_value,R4,"1206","unknown",504.14,3527.76,180,bottom
-new_value,C15,"1206","unknown",1225.00,3350.00,90,bottom
-new_value,U1,"TO220","unknown",407.50,4180.00,90,top
-new_value,R9,"1206","1k",1875.00,3350.00,90,bottom
-new_value,R10,"1206","1k",1550.00,3300.00,0,bottom
-new_value,U3,"SO8","unknown",1075.00,3525.00,270,bottom
-new_value,R11,"1206","10k",1375.00,3300.00,180,bottom
-new_value,D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-new_value,C2,"1206","unknown",925.00,3350.00,270,bottom
-new_value,R2,"1206","unknown",506.90,3751.38,180,bottom
-new_value,CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-new_value,D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-new_value,R1,"1206","unknown",425.00,3375.00,90,bottom
-new_value,C11,"1206","unknown",1336.81,3834.05,90,bottom
-new_value,CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-new_value,S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-new_value,S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-new_value,D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-new_value,U4,"SO16","unknown",1500.00,3525.00,90,bottom
-new_value,D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-new_value,R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_first_pos-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index 29c6356..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
-Error: insert_column: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy b/utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy
deleted file mode 100644
index 2e4092b..0000000
--- a/utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,new_value,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,new_value,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,new_value,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,new_value,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,new_value,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,new_value,"1206","unknown",950.00,3775.00,0,bottom
-C14,new_value,"1206","unknown",1225.00,3600.00,90,bottom
-D6,new_value,"1206","unknown",1125.00,3875.00,180,bottom
-C13,new_value,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,new_value,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,new_value,"1206","unknown",1438.19,3834.05,270,bottom
-U2,new_value,"TO220","unknown",1342.50,4175.00,90,top
-D7,new_value,"1206","unknown",1775.00,3350.00,270,bottom
-D5,new_value,"1206","unknown",1125.00,3775.00,180,bottom
-R4,new_value,"1206","unknown",504.14,3527.76,180,bottom
-C15,new_value,"1206","unknown",1225.00,3350.00,90,bottom
-U1,new_value,"TO220","unknown",407.50,4180.00,90,top
-R9,new_value,"1206","1k",1875.00,3350.00,90,bottom
-R10,new_value,"1206","1k",1550.00,3300.00,0,bottom
-U3,new_value,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,new_value,"1206","10k",1375.00,3300.00,180,bottom
-D2,new_value,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,new_value,"1206","unknown",925.00,3350.00,270,bottom
-R2,new_value,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,new_value,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,new_value,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,new_value,"1206","unknown",425.00,3375.00,90,bottom
-C11,new_value,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,new_value,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,new_value,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,new_value,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,new_value,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,new_value,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,new_value,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,new_value,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/insert_column_second_pos-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy
new file mode 100644
index 0000000..c1bda42
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+r6,"ACY1000","unknown",3225.00,4275.00,180,top
+r5,"ACY1000","unknown",3225.00,4050.00,180,top
+r8,"ACY1000","unknown",3225.00,3825.00,0,top
+r7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+r4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+r9,"1206","1k",1875.00,3350.00,90,bottom
+r10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+r11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+r2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+r1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_col_insens1-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy
new file mode 100644
index 0000000..c1bda42
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+r6,"ACY1000","unknown",3225.00,4275.00,180,top
+r5,"ACY1000","unknown",3225.00,4050.00,180,top
+r8,"ACY1000","unknown",3225.00,3825.00,0,top
+r7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+r4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+r9,"1206","1k",1875.00,3350.00,90,bottom
+r10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+r11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+r2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+r1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_col_insens2-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_insens3-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_insens4-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy-error
new file mode 100644
index 0000000..d62840d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_negative-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy-error
new file mode 100644
index 0000000..9b094f0
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_not_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
+Error: check_columns: wrong column argument: d1.
diff --git a/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..e11f3d4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_not_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
+Error: check_columns: wrong column argument: 1d.
diff --git a/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy-error
new file mode 100644
index 0000000..69dfd65
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_real-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
+Error: check_columns: wrong column argument: 1.1.
diff --git a/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..33b666e
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_is_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
+Error: Check pattern: Element number (100) is not within (1..7).
diff --git a/utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_sens1-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_col_sens2-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy
new file mode 100644
index 0000000..c1bda42
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+r6,"ACY1000","unknown",3225.00,4275.00,180,top
+r5,"ACY1000","unknown",3225.00,4050.00,180,top
+r8,"ACY1000","unknown",3225.00,3825.00,0,top
+r7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+r4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+r9,"1206","1k",1875.00,3350.00,90,bottom
+r10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+r11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+r2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+r1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_col_sens3-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy
new file mode 100644
index 0000000..c1bda42
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+r6,"ACY1000","unknown",3225.00,4275.00,180,top
+r5,"ACY1000","unknown",3225.00,4050.00,180,top
+r8,"ACY1000","unknown",3225.00,3825.00,0,top
+r7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+r4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+r9,"1206","1k",1875.00,3350.00,90,bottom
+r10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+r11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+r2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+r1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_col_sens4-pcb_example2.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy
deleted file mode 100644
index c1bda42..0000000
--- a/utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-r6,"ACY1000","unknown",3225.00,4275.00,180,top
-r5,"ACY1000","unknown",3225.00,4050.00,180,top
-r8,"ACY1000","unknown",3225.00,3825.00,0,top
-r7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-r4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-r9,"1206","1k",1875.00,3350.00,90,bottom
-r10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-r11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-r2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-r1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_column_insensitive1-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy
deleted file mode 100644
index c1bda42..0000000
--- a/utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-r6,"ACY1000","unknown",3225.00,4275.00,180,top
-r5,"ACY1000","unknown",3225.00,4050.00,180,top
-r8,"ACY1000","unknown",3225.00,3825.00,0,top
-r7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-r4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-r9,"1206","1k",1875.00,3350.00,90,bottom
-r10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-r11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-r2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-r1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_column_insensitive2-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_insensitive3-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_insensitive4-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy-error
deleted file mode 100644
index d62840d..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_negative-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy-error
deleted file mode 100644
index 9b094f0..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_not_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
-Error: check_columns: wrong column argument: d1.
diff --git a/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy-error
deleted file mode 100644
index e11f3d4..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_not_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
-Error: check_columns: wrong column argument: 1d.
diff --git a/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy-error
deleted file mode 100644
index 69dfd65..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_real-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
-Error: check_columns: wrong column argument: 1.1.
diff --git a/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy-error
deleted file mode 100644
index 33b666e..0000000
--- a/utils/tests/gxyrs/outputs/match_column_is_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
-Error: Check pattern: Element number (100) is not within (1..7).
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_sensitive1-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy b/utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/match_column_sensitive2-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy
deleted file mode 100644
index c1bda42..0000000
--- a/utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-r6,"ACY1000","unknown",3225.00,4275.00,180,top
-r5,"ACY1000","unknown",3225.00,4050.00,180,top
-r8,"ACY1000","unknown",3225.00,3825.00,0,top
-r7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-r4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-r9,"1206","1k",1875.00,3350.00,90,bottom
-r10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-r11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-r2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-r1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_column_sensitive3-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy b/utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy
deleted file mode 100644
index c1bda42..0000000
--- a/utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-r6,"ACY1000","unknown",3225.00,4275.00,180,top
-r5,"ACY1000","unknown",3225.00,4050.00,180,top
-r8,"ACY1000","unknown",3225.00,3825.00,0,top
-r7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-r4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-r9,"1206","1k",1875.00,3350.00,90,bottom
-r10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-r11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-r2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-r1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-r3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy-error b/utils/tests/gxyrs/outputs/match_column_sensitive4-pcb_example2.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..6b9b64d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
+Error: mul_col_val: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..c03074e
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
+Error: mul_col_val: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index 6b9b64d..0000000
--- a/utils/tests/gxyrs/outputs/multiply_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
-Error: mul_col_val: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index c03074e..0000000
--- a/utils/tests/gxyrs/outputs/multiply_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
-Error: mul_col_val: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..7b1301c
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
+Error: mul_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 7b1301c..0000000
--- a/utils/tests/gxyrs/outputs/multiply_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
-Error: mul_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..00d3e27
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/multiply_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
+Error: mul_col_val: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index 00d3e27..0000000
--- a/utils/tests/gxyrs/outputs/multiply_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
-Error: mul_col_val: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..559f994
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
+Error: add_number_to_col: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..ba3b700
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
+Error: add_number_to_col: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index 559f994..0000000
--- a/utils/tests/gxyrs/outputs/offset_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
-Error: add_number_to_col: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index ba3b700..0000000
--- a/utils/tests/gxyrs/outputs/offset_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
-Error: add_number_to_col: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy
new file mode 100644
index 0000000..fe66459
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3325,4275.00,180,top
+R5,"ACY1000","unknown",3325,4050.00,180,top
+R8,"ACY1000","unknown",3325,3825.00,0,top
+R7,"ACY1000","unknown",3325,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",604.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1975,3350.00,90,bottom
+R10,"1206","1k",1650,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1475,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",606.9,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",525,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",700,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_cols_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_cols_no_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy-error
new file mode 100644
index 0000000..d62840d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_check_cols_return_minus1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy
deleted file mode 100644
index fe66459..0000000
--- a/utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3325,4275.00,180,top
-R5,"ACY1000","unknown",3325,4050.00,180,top
-R8,"ACY1000","unknown",3325,3825.00,0,top
-R7,"ACY1000","unknown",3325,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",604.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1975,3350.00,90,bottom
-R10,"1206","1k",1650,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1475,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",606.9,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",525,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",700,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_columns_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_columns_no_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy-error
deleted file mode 100644
index d62840d..0000000
--- a/utils/tests/gxyrs/outputs/offset_check_columns_return_minus1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..2671611
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
+Error: add_number_to_col: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 2671611..0000000
--- a/utils/tests/gxyrs/outputs/offset_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
-Error: add_number_to_col: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..91cd836
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/offset_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
+Error: add_number_to_col: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index 91cd836..0000000
--- a/utils/tests/gxyrs/outputs/offset_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
-Error: add_number_to_col: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..b12314c
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..8804054
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_ref_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy-error
deleted file mode 100644
index b12314c..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy-error
deleted file mode 100644
index 8804054..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_ref_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..b12314c
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..8804054
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_x_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy-error
deleted file mode 100644
index b12314c..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy-error
deleted file mode 100644
index 8804054..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_x_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..b12314c
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
+Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..8804054
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_bad_y_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
+Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy-error
deleted file mode 100644
index b12314c..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
-Error: panelize_xyrs: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy-error
deleted file mode 100644
index 8804054..0000000
--- a/utils/tests/gxyrs/outputs/panelize_bad_y_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
-Error: panelize_xyrs: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..29fddf4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_ref_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy-error
deleted file mode 100644
index 29fddf4..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_ref_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..29fddf4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_x_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy-error
deleted file mode 100644
index 29fddf4..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_x_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..29fddf4
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_negative_y_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
+Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy-error
deleted file mode 100644
index 29fddf4..0000000
--- a/utils/tests/gxyrs/outputs/panelize_negative_y_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
-Error: panelize_xyrs: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..8c0e150
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_ref_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 8c0e150..0000000
--- a/utils/tests/gxyrs/outputs/panelize_ref_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..8c0e150
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_x_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 8c0e150..0000000
--- a/utils/tests/gxyrs/outputs/panelize_x_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..8c0e150
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/panelize_y_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
+Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 8c0e150..0000000
--- a/utils/tests/gxyrs/outputs/panelize_y_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
-Error: panelize_xyrs: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..cf4c991
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
+Error: rotate_comp: wrong column argument: 6d.
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..b806f02
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
+Error: rotate_comp: wrong column argument: d6.
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index cf4c991..0000000
--- a/utils/tests/gxyrs/outputs/rotate_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
-Error: rotate_comp: wrong column argument: 6d.
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index b806f02..0000000
--- a/utils/tests/gxyrs/outputs/rotate_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
-Error: rotate_comp: wrong column argument: d6.
diff --git a/utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy
new file mode 100644
index 0000000..6fe78d2
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,270,top
+R5,"ACY1000","unknown",3225.00,4050.00,270,top
+R8,"ACY1000","unknown",3225.00,3825.00,90,top
+R7,"ACY1000","unknown",3225.00,3600.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,270,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,180,bottom
+R10,"1206","1k",1550.00,3300.00,90,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,180,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,180,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_case_insens-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy
deleted file mode 100644
index 6fe78d2..0000000
--- a/utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,270,top
-R5,"ACY1000","unknown",3225.00,4050.00,270,top
-R8,"ACY1000","unknown",3225.00,3825.00,90,top
-R7,"ACY1000","unknown",3225.00,3600.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,270,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,180,bottom
-R10,"1206","1k",1550.00,3300.00,90,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,180,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,180,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_case_insensitive-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy
new file mode 100644
index 0000000..6fe78d2
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,270,top
+R5,"ACY1000","unknown",3225.00,4050.00,270,top
+R8,"ACY1000","unknown",3225.00,3825.00,90,top
+R7,"ACY1000","unknown",3225.00,3600.00,90,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,270,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,180,bottom
+R10,"1206","1k",1550.00,3300.00,90,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,270,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,270,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,180,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,180,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_case_sens-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy
deleted file mode 100644
index 6fe78d2..0000000
--- a/utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,270,top
-R5,"ACY1000","unknown",3225.00,4050.00,270,top
-R8,"ACY1000","unknown",3225.00,3825.00,90,top
-R7,"ACY1000","unknown",3225.00,3600.00,90,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,270,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,180,bottom
-R10,"1206","1k",1550.00,3300.00,90,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,270,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,270,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,180,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,180,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_case_sensitive-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_check_cols_no_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy-error
new file mode 100644
index 0000000..d62840d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_check_cols_return_minus1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_check_columns_no_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy-error
deleted file mode 100644
index d62840d..0000000
--- a/utils/tests/gxyrs/outputs/rotate_check_columns_return_minus1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..87e7c6d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
+Error: rotate_comp: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 87e7c6d..0000000
--- a/utils/tests/gxyrs/outputs/rotate_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
-Error: rotate_comp: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..556a5ef
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/rotate_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
+Error: rotate_comp: wrong column argument: -6.
diff --git a/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index 556a5ef..0000000
--- a/utils/tests/gxyrs/outputs/rotate_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
-Error: rotate_comp: wrong column argument: -6.
diff --git a/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..e87c6af
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
+Error: subst_col_val: wrong column argument: 6d.
diff --git a/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..7dd1b11
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
+Error: subst_col_val: wrong column argument: d6.
diff --git a/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index e87c6af..0000000
--- a/utils/tests/gxyrs/outputs/subst_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
-Error: subst_col_val: wrong column argument: 6d.
diff --git a/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index 7dd1b11..0000000
--- a/utils/tests/gxyrs/outputs/subst_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
-Error: subst_col_val: wrong column argument: d6.
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy
new file mode 100644
index 0000000..7abaf4d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","100K",3225.00,4275.00,180,top
+R5,"ACY1000","100K",3225.00,4050.00,180,top
+R8,"ACY1000","100K",3225.00,3825.00,0,top
+R7,"ACY1000","100K",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","100K",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","100K",1875.00,3350.00,90,bottom
+R10,"1206","100K",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","100K",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","100K",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","100K",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","100K",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_cols_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_cols_no_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy-error
new file mode 100644
index 0000000..d62840d
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_check_cols_return_minus1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
+Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy
deleted file mode 100644
index 7abaf4d..0000000
--- a/utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","100K",3225.00,4275.00,180,top
-R5,"ACY1000","100K",3225.00,4050.00,180,top
-R8,"ACY1000","100K",3225.00,3825.00,0,top
-R7,"ACY1000","100K",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","100K",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","100K",1875.00,3350.00,90,bottom
-R10,"1206","100K",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","100K",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","100K",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","100K",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","100K",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_columns_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_columns_no_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy-error
deleted file mode 100644
index d62840d..0000000
--- a/utils/tests/gxyrs/outputs/subst_check_columns_return_minus1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
-Error: check_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..2075c59
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
+Error: subst_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 2075c59..0000000
--- a/utils/tests/gxyrs/outputs/subst_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
-Error: subst_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..c428ba7
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/subst_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
+Error: subst_col_val: wrong column argument: -6.
diff --git a/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index c428ba7..0000000
--- a/utils/tests/gxyrs/outputs/subst_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
-Error: subst_col_val: wrong column argument: -6.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..24658e1
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..00f6fde
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col1_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..24658e1
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
+Error: swap_columns: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..00f6fde
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_bad_col2_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
+Error: swap_columns: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..5d891bc
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_col1_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..5d891bc
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_col2_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
+Error: swap_columns: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy-error
new file mode 100644
index 0000000..4ed6cf0
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_negative_col1_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy-error
new file mode 100644
index 0000000..4ed6cf0
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_negative_col2_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
+Error: swap_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_no_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy
new file mode 100644
index 0000000..acd1c59
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+"CONNECTOR-3-1",CONN4,"unknown",2000.00,3650.00,90,top
+"ACY1000",R6,"unknown",3225.00,4275.00,180,top
+"ACY1000",R5,"unknown",3225.00,4050.00,180,top
+"ACY1000",R8,"unknown",3225.00,3825.00,0,top
+"ACY1000",R7,"unknown",3225.00,3600.00,0,top
+"1206",C1,"unknown",950.00,3775.00,0,bottom
+"1206",C14,"unknown",1225.00,3600.00,90,bottom
+"1206",D6,"unknown",1125.00,3875.00,180,bottom
+"1206",C13,"unknown",1615.95,3738.19,180,bottom
+"CONNECTOR-4-1",CONN3,"unknown",2225.00,3600.00,270,top
+"1206",C12,"unknown",1438.19,3834.05,270,bottom
+"TO220",U2,"unknown",1342.50,4175.00,90,top
+"1206",D7,"unknown",1775.00,3350.00,270,bottom
+"1206",D5,"unknown",1125.00,3775.00,180,bottom
+"1206",R4,"unknown",504.14,3527.76,180,bottom
+"1206",C15,"unknown",1225.00,3350.00,90,bottom
+"TO220",U1,"unknown",407.50,4180.00,90,top
+"1206",R9,"1k",1875.00,3350.00,90,bottom
+"1206",R10,"1k",1550.00,3300.00,0,bottom
+"SO8",U3,"unknown",1075.00,3525.00,270,bottom
+"1206",R11,"10k",1375.00,3300.00,180,bottom
+"CONNECTOR-2-1",D2,"unknown",500.00,3850.00,0,top
+"1206",C2,"unknown",925.00,3350.00,270,bottom
+"1206",R2,"unknown",506.90,3751.38,180,bottom
+"CONNECTOR-2-1",CONN1,"unknown",275.00,3625.00,0,top
+"CONNECTOR-2-1",D4,"unknown",500.00,3625.00,0,top
+"1206",R1,"unknown",425.00,3375.00,90,bottom
+"1206",C11,"unknown",1336.81,3834.05,90,bottom
+"CONNECTOR-2-1",CONN2,"unknown",750.00,3625.00,0,top
+"CONNECTOR-2-1",S2,"unknown",750.00,3850.00,180,top
+"CONNECTOR-2-1",S1,"unknown",275.00,3850.00,0,top
+"CONNECTOR-2-1",D3,"unknown",750.00,3350.00,0,top
+"SO16",U4,"unknown",1500.00,3525.00,90,bottom
+"CONNECTOR-2-1",D1,"unknown",275.00,3350.00,0,top
+"1206",R3,"unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_no_matchlist-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy
new file mode 100644
index 0000000..4baaba0
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+"ACY1000",R6,"unknown",3225.00,4275.00,180,top
+"ACY1000",R5,"unknown",3225.00,4050.00,180,top
+"ACY1000",R8,"unknown",3225.00,3825.00,0,top
+"ACY1000",R7,"unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+"1206",R4,"unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+"1206",R9,"1k",1875.00,3350.00,90,bottom
+"1206",R10,"1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+"1206",R11,"10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+"1206",R2,"unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+"1206",R1,"unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+"1206",R3,"unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_cols_with_match-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy-error
deleted file mode 100644
index 24658e1..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy-error
deleted file mode 100644
index 00f6fde..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column1_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy-error
deleted file mode 100644
index 24658e1..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
-Error: swap_columns: wrong column argument: d2.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy-error
deleted file mode 100644
index 00f6fde..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_bad_column2_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
-Error: swap_columns: wrong column argument: 2d.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 5d891bc..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_column1_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index 5d891bc..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_column2_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
-Error: swap_columns: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy-error
deleted file mode 100644
index 4ed6cf0..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_negative_column1_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy-error
deleted file mode 100644
index 4ed6cf0..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_negative_column2_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
-Error: swap_columns: wrong column argument: -1.
diff --git a/utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_no_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy
deleted file mode 100644
index acd1c59..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-"CONNECTOR-3-1",CONN4,"unknown",2000.00,3650.00,90,top
-"ACY1000",R6,"unknown",3225.00,4275.00,180,top
-"ACY1000",R5,"unknown",3225.00,4050.00,180,top
-"ACY1000",R8,"unknown",3225.00,3825.00,0,top
-"ACY1000",R7,"unknown",3225.00,3600.00,0,top
-"1206",C1,"unknown",950.00,3775.00,0,bottom
-"1206",C14,"unknown",1225.00,3600.00,90,bottom
-"1206",D6,"unknown",1125.00,3875.00,180,bottom
-"1206",C13,"unknown",1615.95,3738.19,180,bottom
-"CONNECTOR-4-1",CONN3,"unknown",2225.00,3600.00,270,top
-"1206",C12,"unknown",1438.19,3834.05,270,bottom
-"TO220",U2,"unknown",1342.50,4175.00,90,top
-"1206",D7,"unknown",1775.00,3350.00,270,bottom
-"1206",D5,"unknown",1125.00,3775.00,180,bottom
-"1206",R4,"unknown",504.14,3527.76,180,bottom
-"1206",C15,"unknown",1225.00,3350.00,90,bottom
-"TO220",U1,"unknown",407.50,4180.00,90,top
-"1206",R9,"1k",1875.00,3350.00,90,bottom
-"1206",R10,"1k",1550.00,3300.00,0,bottom
-"SO8",U3,"unknown",1075.00,3525.00,270,bottom
-"1206",R11,"10k",1375.00,3300.00,180,bottom
-"CONNECTOR-2-1",D2,"unknown",500.00,3850.00,0,top
-"1206",C2,"unknown",925.00,3350.00,270,bottom
-"1206",R2,"unknown",506.90,3751.38,180,bottom
-"CONNECTOR-2-1",CONN1,"unknown",275.00,3625.00,0,top
-"CONNECTOR-2-1",D4,"unknown",500.00,3625.00,0,top
-"1206",R1,"unknown",425.00,3375.00,90,bottom
-"1206",C11,"unknown",1336.81,3834.05,90,bottom
-"CONNECTOR-2-1",CONN2,"unknown",750.00,3625.00,0,top
-"CONNECTOR-2-1",S2,"unknown",750.00,3850.00,180,top
-"CONNECTOR-2-1",S1,"unknown",275.00,3850.00,0,top
-"CONNECTOR-2-1",D3,"unknown",750.00,3350.00,0,top
-"SO16",U4,"unknown",1500.00,3525.00,90,bottom
-"CONNECTOR-2-1",D1,"unknown",275.00,3350.00,0,top
-"1206",R3,"unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_no_matchlist-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy b/utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy
deleted file mode 100644
index 4baaba0..0000000
--- a/utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-"ACY1000",R6,"unknown",3225.00,4275.00,180,top
-"ACY1000",R5,"unknown",3225.00,4050.00,180,top
-"ACY1000",R8,"unknown",3225.00,3825.00,0,top
-"ACY1000",R7,"unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-"1206",R4,"unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-"1206",R9,"1k",1875.00,3350.00,90,bottom
-"1206",R10,"1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-"1206",R11,"10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-"1206",R2,"unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-"1206",R1,"unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-"1206",R3,"unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/swap_columns_with_match-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy-error
new file mode 100644
index 0000000..7f984fd
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_bad_col_num1-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
+Error: translate_col_val: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy-error
new file mode 100644
index 0000000..b7829f3
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_bad_col_num2-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
+Error: translate_col_val: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy-error
deleted file mode 100644
index 7f984fd..0000000
--- a/utils/tests/gxyrs/outputs/translate_bad_column_number1-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
-Error: translate_col_val: wrong column argument: 4d.
diff --git a/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy-error
deleted file mode 100644
index b7829f3..0000000
--- a/utils/tests/gxyrs/outputs/translate_bad_column_number2-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
-Error: translate_col_val: wrong column argument: d4.
diff --git a/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy
new file mode 100644
index 0000000..6d4deaa
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206",1kilohms,1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insens-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy
deleted file mode 100644
index 6d4deaa..0000000
--- a/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206",1kilohms,1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_R10_value_case_insensitive-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy
new file mode 100644
index 0000000..05027e2
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206",1K,1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_change_R10_value-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy
new file mode 100644
index 0000000..867ce82
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206",1K,1875.00,3350.00,90,bottom
+R10,"1206",1K,1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206",10K,1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_change_all_value_plus_k-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_no_match1-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_no_match2-pcb_example1.xy-error
new file mode 100644
index 0000000..e69de29
diff --git a/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy-error
new file mode 100644
index 0000000..a26d9ad
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_col_num_too_high-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
+Error: translate_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy
deleted file mode 100644
index 05027e2..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206",1K,1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_column_change_R10_value-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy
deleted file mode 100644
index 867ce82..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206",1K,1875.00,3350.00,90,bottom
-R10,"1206",1K,1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206",10K,1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_column_change_all_value_plus_k-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_column_no_match1-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_column_no_match2-pcb_example1.xy-error
deleted file mode 100644
index e69de29..0000000
diff --git a/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy-error
deleted file mode 100644
index a26d9ad..0000000
--- a/utils/tests/gxyrs/outputs/translate_column_number_too_high-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
-Error: translate_col_val: Element number (100) is not within (0..7).
diff --git a/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy
new file mode 100644
index 0000000..ee9854b
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy
@@ -0,0 +1,43 @@
+# $Id$
+# PcbXY Version 1.0
+# Date: Sat Sep  6 14:29:26 2008 UTC
+# Author: 
+# Title: (unknown) - PCB X-Y
+# RefDes, Description, Value, X, Y, rotation, top/bottom
+# X,Y in mils.  rotation in degrees.
+# --------------------------------------------
+CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
+R6,"ACY1000","unknown",3225.00,4275.00,180,top
+R5,"ACY1000","unknown",3225.00,4050.00,180,top
+R8,"ACY1000","unknown",3225.00,3825.00,0,top
+R7,"ACY1000","unknown",3225.00,3600.00,0,top
+C1,"1206","unknown",950.00,3775.00,0,bottom
+C14,"1206","unknown",1225.00,3600.00,90,bottom
+D6,"1206","unknown",1125.00,3875.00,180,bottom
+C13,"1206","unknown",1615.95,3738.19,180,bottom
+CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
+C12,"1206","unknown",1438.19,3834.05,270,bottom
+U2,"TO220","unknown",1342.50,4175.00,90,top
+D7,"1206","unknown",1775.00,3350.00,270,bottom
+D5,"1206","unknown",1125.00,3775.00,180,bottom
+R4,"1206","unknown",504.14,3527.76,180,bottom
+C15,"1206","unknown",1225.00,3350.00,90,bottom
+U1,"TO220","unknown",407.50,4180.00,90,top
+R9,"1206","1k",1875.00,3350.00,90,bottom
+R10,"1206","1k",1550.00,3300.00,0,bottom
+U3,"SO8","unknown",1075.00,3525.00,270,bottom
+R11,"1206","10k",1375.00,3300.00,180,bottom
+D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
+C2,"1206","unknown",925.00,3350.00,270,bottom
+R2,"1206","unknown",506.90,3751.38,180,bottom
+CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
+D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
+R1,"1206","unknown",425.00,3375.00,90,bottom
+C11,"1206","unknown",1336.81,3834.05,90,bottom
+CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
+S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
+S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
+D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
+U4,"SO16","unknown",1500.00,3525.00,90,bottom
+D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
+R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy-error
new file mode 100644
index 0000000..5f213ba
--- /dev/null
+++ b/utils/tests/gxyrs/outputs/translate_negative_col_num-pcb_example1.xy-error
@@ -0,0 +1,70 @@
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
+Error: translate_col_val: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy b/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy
deleted file mode 100644
index ee9854b..0000000
--- a/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy
+++ /dev/null
@@ -1,43 +0,0 @@
-# $Id$
-# PcbXY Version 1.0
-# Date: Sat Sep  6 14:29:26 2008 UTC
-# Author: 
-# Title: (unknown) - PCB X-Y
-# RefDes, Description, Value, X, Y, rotation, top/bottom
-# X,Y in mils.  rotation in degrees.
-# --------------------------------------------
-CONN4,"CONNECTOR-3-1","unknown",2000.00,3650.00,90,top
-R6,"ACY1000","unknown",3225.00,4275.00,180,top
-R5,"ACY1000","unknown",3225.00,4050.00,180,top
-R8,"ACY1000","unknown",3225.00,3825.00,0,top
-R7,"ACY1000","unknown",3225.00,3600.00,0,top
-C1,"1206","unknown",950.00,3775.00,0,bottom
-C14,"1206","unknown",1225.00,3600.00,90,bottom
-D6,"1206","unknown",1125.00,3875.00,180,bottom
-C13,"1206","unknown",1615.95,3738.19,180,bottom
-CONN3,"CONNECTOR-4-1","unknown",2225.00,3600.00,270,top
-C12,"1206","unknown",1438.19,3834.05,270,bottom
-U2,"TO220","unknown",1342.50,4175.00,90,top
-D7,"1206","unknown",1775.00,3350.00,270,bottom
-D5,"1206","unknown",1125.00,3775.00,180,bottom
-R4,"1206","unknown",504.14,3527.76,180,bottom
-C15,"1206","unknown",1225.00,3350.00,90,bottom
-U1,"TO220","unknown",407.50,4180.00,90,top
-R9,"1206","1k",1875.00,3350.00,90,bottom
-R10,"1206","1k",1550.00,3300.00,0,bottom
-U3,"SO8","unknown",1075.00,3525.00,270,bottom
-R11,"1206","10k",1375.00,3300.00,180,bottom
-D2,"CONNECTOR-2-1","unknown",500.00,3850.00,0,top
-C2,"1206","unknown",925.00,3350.00,270,bottom
-R2,"1206","unknown",506.90,3751.38,180,bottom
-CONN1,"CONNECTOR-2-1","unknown",275.00,3625.00,0,top
-D4,"CONNECTOR-2-1","unknown",500.00,3625.00,0,top
-R1,"1206","unknown",425.00,3375.00,90,bottom
-C11,"1206","unknown",1336.81,3834.05,90,bottom
-CONN2,"CONNECTOR-2-1","unknown",750.00,3625.00,0,top
-S2,"CONNECTOR-2-1","unknown",750.00,3850.00,180,top
-S1,"CONNECTOR-2-1","unknown",275.00,3850.00,0,top
-D3,"CONNECTOR-2-1","unknown",750.00,3350.00,0,top
-U4,"SO16","unknown",1500.00,3525.00,90,bottom
-D1,"CONNECTOR-2-1","unknown",275.00,3350.00,0,top
-R3,"1206","unknown",600.00,3375.00,90,bottom
diff --git a/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy-error b/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy-error
deleted file mode 100644
index 5f213ba..0000000
--- a/utils/tests/gxyrs/outputs/translate_negative_column_number-pcb_example1.xy-error
+++ /dev/null
@@ -1,70 +0,0 @@
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
-Error: translate_col_val: wrong column argument: -4.
diff --git a/utils/tests/gxyrs/tests.list b/utils/tests/gxyrs/tests.list
index 6a0977c..a1ea63f 100644
--- a/utils/tests/gxyrs/tests.list
+++ b/utils/tests/gxyrs/tests.list
@@ -17,88 +17,88 @@ do_nothing | pcb_example1.xy | do_nothing.pl | | 1
 # -----------------------------------------
 # Tests for match subroutine in gxyrs package.
 # -----------------------------------------
-match_column_is_not_number| pcb_example1.xy | | --eval "return check_columns 'd1', 'R[0-9]+'" | 255
-match_column_is_not_number2| pcb_example1.xy | | --eval "return check_columns '1d', 'R[0-9]+'" | 255
-match_column_is_real| pcb_example1.xy | | --eval "return check_columns '1.1', 'R[0-9]+'" | 255
-match_column_is_negative| pcb_example1.xy | | --eval "return check_columns '-1', 'R[0-9]+'" | 255
-match_column_is_too_high| pcb_example1.xy | | --eval "return check_columns '100', 'R[0-9]+'" | 255
-match_column_insensitive1| pcb_example2.xy | | --caseinsensitive --eval "return check_columns 1, 'R[0-9]+'" | 1
-match_column_insensitive2| pcb_example2.xy | | --caseinsensitive --eval "return check_columns 1, 'r[0-9]+'" | 1
-match_column_insensitive3| pcb_example1.xy | | --caseinsensitive --eval "return check_columns 1, 'R[0-9]+'" | 1
-match_column_insensitive4| pcb_example1.xy | | --caseinsensitive --eval "return check_columns 1, 'r[0-9]+'" | 1
-match_column_sensitive1| pcb_example1.xy | | --eval "return check_columns 1, 'r[0-9]+'" | 0
-match_column_sensitive2| pcb_example1.xy | | --eval "return check_columns 1, 'R[0-9]+'" | 1
-match_column_sensitive3| pcb_example2.xy | | --eval "return check_columns 1, 'R[0-9]+'" | 0
-match_column_sensitive4| pcb_example2.xy | | --eval "return check_columns 1, 'r[0-9]+'" | 1
+match_col_is_not_num| pcb_example1.xy | | --eval "return check_columns 'd1', 'R[0-9]+'" | 255
+match_col_is_not_num2| pcb_example1.xy | | --eval "return check_columns '1d', 'R[0-9]+'" | 255
+match_col_is_real| pcb_example1.xy | | --eval "return check_columns '1.1', 'R[0-9]+'" | 255
+match_col_is_negative| pcb_example1.xy | | --eval "return check_columns '-1', 'R[0-9]+'" | 255
+match_col_is_too_high| pcb_example1.xy | | --eval "return check_columns '100', 'R[0-9]+'" | 255
+match_col_insens1| pcb_example2.xy | | --caseinsensitive --eval "return check_columns 1, 'R[0-9]+'" | 1
+match_col_insens2| pcb_example2.xy | | --caseinsensitive --eval "return check_columns 1, 'r[0-9]+'" | 1
+match_col_insens3| pcb_example1.xy | | --caseinsensitive --eval "return check_columns 1, 'R[0-9]+'" | 1
+match_col_insens4| pcb_example1.xy | | --caseinsensitive --eval "return check_columns 1, 'r[0-9]+'" | 1
+match_col_sens1| pcb_example1.xy | | --eval "return check_columns 1, 'r[0-9]+'" | 0
+match_col_sens2| pcb_example1.xy | | --eval "return check_columns 1, 'R[0-9]+'" | 1
+match_col_sens3| pcb_example2.xy | | --eval "return check_columns 1, 'R[0-9]+'" | 0
+match_col_sens4| pcb_example2.xy | | --eval "return check_columns 1, 'r[0-9]+'" | 1
 match_no_args| pcb_example1.xy | | --caseinsensitive --eval "return check_columns " | 1
 
 # -----------------------------------------
 # Tests for del_line subroutine in gxyrs package.
 # -----------------------------------------
-del_case_sensitive1 | pcb_example1.xy | | --eval "return del_line 1, 'R[0-9]+'"| 1
-del_case_sensitive2 | pcb_example2.xy | | --eval "return del_line 1, 'R[0-9]+'"| 0
-del_case_sensitive3 | pcb_example1.xy | | --eval "return del_line 1, 'r[0-9]+'"| 0
-del_case_sensitive4 | pcb_example2.xy | | --eval "return del_line 1, 'r[0-9]+'"| 1
-del_case_insensitive1 | pcb_example1.xy | | --caseinsensitive --eval "return del_line 1, 'r[0-9]+'"| 1
-del_case_insensitive2 | pcb_example2.xy | | --caseinsensitive --eval "return del_line 1, 'R[0-9]+'"| 1
-del_check_columns_return_minus1 | pcb_example1.xy | | --eval "return del_line -1, 'r[0-9]+'" | 255
-del_check_columns_no_match | pcb_example1.xy | | --eval "return del_line 1, 'component[0-9]+'" | 0
+del_case_sens1 | pcb_example1.xy | | --eval "return del_line 1, 'R[0-9]+'"| 1
+del_case_sens2 | pcb_example2.xy | | --eval "return del_line 1, 'R[0-9]+'"| 0
+del_case_sens3 | pcb_example1.xy | | --eval "return del_line 1, 'r[0-9]+'"| 0
+del_case_sens4 | pcb_example2.xy | | --eval "return del_line 1, 'r[0-9]+'"| 1
+del_case_insens1 | pcb_example1.xy | | --caseinsensitive --eval "return del_line 1, 'r[0-9]+'"| 1
+del_case_insens2 | pcb_example2.xy | | --caseinsensitive --eval "return del_line 1, 'R[0-9]+'"| 1
+del_check_cols_return_minus1 | pcb_example1.xy | | --eval "return del_line -1, 'r[0-9]+'" | 255
+del_check_cols_no_match | pcb_example1.xy | | --eval "return del_line 1, 'component[0-9]+'" | 0
 
 # -----------------------------------------
 # Tests for rotate subroutine in gxyrs package.
 # -----------------------------------------
-rotate_case_sensitive | pcb_example1.xy | | --eval "return rotate_comp 6, 90, 1, 'R[0-9]+'"| 1
-rotate_case_insensitive | pcb_example1.xy | | --caseinsensitive --eval "return rotate_comp 6, 90, 1, 'r[0-9]+'"| 1
-rotate_check_columns_return_minus1 | pcb_example1.xy | | --eval "return rotate_comp 6, 90, -1, 'r[0-9]+'" | 255
-rotate_check_columns_no_match | pcb_example1.xy | | --eval "return rotate_comp 6, 90, 1, 'component[0-9]+'" | 0
+rotate_case_sens | pcb_example1.xy | | --eval "return rotate_comp 6, 90, 1, 'R[0-9]+'"| 1
+rotate_case_insens | pcb_example1.xy | | --caseinsensitive --eval "return rotate_comp 6, 90, 1, 'r[0-9]+'"| 1
+rotate_check_cols_return_minus1 | pcb_example1.xy | | --eval "return rotate_comp 6, 90, -1, 'r[0-9]+'" | 255
+rotate_check_cols_no_match | pcb_example1.xy | | --eval "return rotate_comp 6, 90, 1, 'component[0-9]+'" | 0
 rotate_real_angle | pcb_example1.xy | | --eval "return rotate_comp 6, 90.0, 1, 'R[0-9]+'"| 1
 rotate_negative_real_angle | pcb_example1.xy | | --eval "return rotate_comp 6, -90.0, 1, 'R[0-9]+'"| 1
 rotate_negative_angle | pcb_example1.xy | | --eval "return rotate_comp 6, -90, 1, 'R[0-9]+'"| 1
-rotate_bad_column_number1 | pcb_example1.xy | | --eval "return rotate_comp '6d', -90, 1, 'R[0-9]+'"| 255
-rotate_bad_column_number2 | pcb_example1.xy | | --eval "return rotate_comp 'd6', -90, 1, 'R[0-9]+'"| 255
-rotate_negative_column_number | pcb_example1.xy | | --eval "return rotate_comp -6, -90, 1, 'R[0-9]+'"| 255
-rotate_column_number_too_high | pcb_example1.xy | | --eval "return rotate_comp 100, -90, 1, 'R[0-9]+'"| 255
+rotate_bad_col_num1 | pcb_example1.xy | | --eval "return rotate_comp '6d', -90, 1, 'R[0-9]+'"| 255
+rotate_bad_col_num2 | pcb_example1.xy | | --eval "return rotate_comp 'd6', -90, 1, 'R[0-9]+'"| 255
+rotate_negative_col_num | pcb_example1.xy | | --eval "return rotate_comp -6, -90, 1, 'R[0-9]+'"| 255
+rotate_col_num_too_high | pcb_example1.xy | | --eval "return rotate_comp 100, -90, 1, 'R[0-9]+'"| 255
 
 # -----------------------------------------
 # Tests for subst_col_val subroutine in gxyrs package.
 # -----------------------------------------
-subst_bad_column_number1 | pcb_example1.xy | | --eval "return subst_col_val '6d', -90, 1, 'R[0-9]+'"| 255
-subst_bad_column_number2 | pcb_example1.xy | | --eval "return subst_col_val 'd6', -90, 1, 'R[0-9]+'"| 255
-subst_negative_column_number | pcb_example1.xy | | --eval "return subst_col_val -6, -90, 1, 'R[0-9]+'"| 255
-subst_column_number_too_high | pcb_example1.xy | | --eval "return subst_col_val 100, -90, 1, 'R[0-9]+'"| 255
-subst_check_columns_return_minus1 | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', '-1', 'r[0-9]+'" | 255
-subst_check_columns_no_match | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', 1, 'component[0-9]+'" | 0
-subst_check_columns_match | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', 1, 'R[0-9]+'" | 1
+subst_bad_col_num1 | pcb_example1.xy | | --eval "return subst_col_val '6d', -90, 1, 'R[0-9]+'"| 255
+subst_bad_col_num2 | pcb_example1.xy | | --eval "return subst_col_val 'd6', -90, 1, 'R[0-9]+'"| 255
+subst_negative_col_num | pcb_example1.xy | | --eval "return subst_col_val -6, -90, 1, 'R[0-9]+'"| 255
+subst_col_num_too_high | pcb_example1.xy | | --eval "return subst_col_val 100, -90, 1, 'R[0-9]+'"| 255
+subst_check_cols_return_minus1 | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', '-1', 'r[0-9]+'" | 255
+subst_check_cols_no_match | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', 1, 'component[0-9]+'" | 0
+subst_check_cols_match | pcb_example1.xy | | --eval "return subst_col_val 3, '\"100K\"', 1, 'R[0-9]+'" | 1
 
 # -----------------------------------------
 # Tests for change_col_units subroutine in gxyrs package.
 # -----------------------------------------
-change_units_bad_column_number1 | pcb_example1.xy | | --eval "return change_col_units 'mm', '4d'"| 255
-change_units_bad_column_number2 | pcb_example1.xy | | --eval "return change_col_units 'mm', 'd4'"| 255
-change_units_negative_column_number | pcb_example1.xy | | --eval "return change_col_units 'mm', -4"| 255
-change_units_column_number_too_high | pcb_example1.xy | | --eval "return change_col_units 'mm', 100"| 255
-change_units_no_units | pcb_example1.xy | | --eval "return change_col_units 'mm', 4"| 254
-change_units_to_mm_6col_tab | protel_example1_mil.txt | | --tabulate --eval "return change_col_units 'mm', 3, 4, 5, 6, 7, 8"| 254
-change_units_2mm_6col_tab_notit | protel_example1_mil.txt | | --tabulate --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3, 4, 5, 6, 7, 8}"| 1
-change_units_already_done | protel_example1_mil.txt | | --eval "return change_col_units 'mil', 3"| 254
-change_units_done_notitle | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3}"| 0
-change_units_units_not_supported | protel_example1_mil.txt | | --eval "return change_col_units 'gallons', 3"| 255
-change_units_to_mm | protel_example1_mil.txt | | --eval "return change_col_units 'mm', 3"| 254
-change_units_to_mm_no_title | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3}"| 1
-change_units_to_mil | protel_example1_mm.txt| | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3}"| 1
-change_units_to_mm_2cols | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3, 4}"| 1
-change_units_to_mil_2cols | protel_example1_mm.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3, 4}"| 1
+chunits_bad_col_num1 | pcb_example1.xy | | --eval "return change_col_units 'mm', '4d'"| 255
+chunits_bad_col_num2 | pcb_example1.xy | | --eval "return change_col_units 'mm', 'd4'"| 255
+chunits_negative_col_num | pcb_example1.xy | | --eval "return change_col_units 'mm', -4"| 255
+chunits_col_num_too_high | pcb_example1.xy | | --eval "return change_col_units 'mm', 100"| 255
+chunits_no_units | pcb_example1.xy | | --eval "return change_col_units 'mm', 4"| 254
+chunits_to_mm_6col_tab | protel_example1_mil.txt | | --tabulate --eval "return change_col_units 'mm', 3, 4, 5, 6, 7, 8"| 254
+chunits_2mm_6col_tab_notit | protel_example1_mil.txt | | --tabulate --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3, 4, 5, 6, 7, 8}"| 1
+chunits_already_done | protel_example1_mil.txt | | --eval "return change_col_units 'mil', 3"| 254
+chunits_done_notitle | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3}"| 0
+chunits_units_not_supported | protel_example1_mil.txt | | --eval "return change_col_units 'gallons', 3"| 255
+chunits_to_mm | protel_example1_mil.txt | | --eval "return change_col_units 'mm', 3"| 254
+chunits_to_mm_no_title | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3}"| 1
+chunits_to_mil | protel_example1_mm.txt| | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3}"| 1
+chunits_to_mm_2cols | protel_example1_mil.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mm', 3, 4}"| 1
+chunits_to_mil_2cols | protel_example1_mm.txt | | --eval "if (\$LINE_NUMBER != \$TITLE_LINE) {return change_col_units 'mil', 3, 4}"| 1
 
 # -----------------------------------------
 # Tests for add_number_to_col subroutine in gxyrs package.
 # -----------------------------------------
-offset_bad_column_number1 | pcb_example1.xy | | --eval "return add_number_to_col '4d', -90, 1, 'R[0-9]+'"| 255
-offset_bad_column_number2 | pcb_example1.xy | | --eval "return add_number_to_col 'd4', -90, 1, 'R[0-9]+'"| 255
-offset_negative_column_number | pcb_example1.xy | | --eval "return add_number_to_col -4, -90, 1, 'R[0-9]+'"| 255
-offset_column_number_too_high | pcb_example1.xy | | --eval "return add_number_to_col 100, -90, 1, 'R[0-9]+'"| 255
-offset_check_columns_return_minus1 | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, -1, 'r[0-9]+'" | 255
-offset_check_columns_no_match | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, 1, 'component[0-9]+'" | 0
-offset_check_columns_match | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, 1, 'R[0-9]+'" | 1
+offset_bad_col_num1 | pcb_example1.xy | | --eval "return add_number_to_col '4d', -90, 1, 'R[0-9]+'"| 255
+offset_bad_col_num2 | pcb_example1.xy | | --eval "return add_number_to_col 'd4', -90, 1, 'R[0-9]+'"| 255
+offset_negative_col_num | pcb_example1.xy | | --eval "return add_number_to_col -4, -90, 1, 'R[0-9]+'"| 255
+offset_col_num_too_high | pcb_example1.xy | | --eval "return add_number_to_col 100, -90, 1, 'R[0-9]+'"| 255
+offset_check_cols_return_minus1 | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, -1, 'r[0-9]+'" | 255
+offset_check_cols_no_match | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, 1, 'component[0-9]+'" | 0
+offset_check_cols_match | pcb_example1.xy | | --eval "return add_number_to_col 4, 100, 1, 'R[0-9]+'" | 1
 offset_match_negative_offset | pcb_example1.xy | | --eval "return add_number_to_col 4, -100, 1, 'R[0-9]+'" | 1
 offset_match_real_offset | pcb_example1.xy | | --eval "return add_number_to_col 4, 10.3, 1, 'R[0-9]+'" | 1
 offset_match_negative_real_offset | pcb_example1.xy | | --eval "return add_number_to_col 4, -10.3, 1, 'R[0-9]+'" | 1
@@ -107,15 +107,15 @@ offset_match_no_units_in_file | pcb_example1.xy | | --eval "return add_number_to
 # -----------------------------------------
 # Tests for translate_col_val subroutine in gxyrs package.
 # -----------------------------------------
-translate_bad_column_number1 | pcb_example1.xy | | --eval "return translate_col_val '4d', '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
-translate_bad_column_number2 | pcb_example1.xy | | --eval "return translate_col_val 'd4', '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
-translate_negative_column_number | pcb_example1.xy | | --eval "return translate_col_val -4, '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
-translate_column_number_too_high | pcb_example1.xy | | --eval "return translate_col_val 100, '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
-translate_column_change_all_value_plus_k | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)'"| 1
-translate_column_change_R10_value | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)', 1, 'R10'"| 1
-translate_col_R10_value_case_insensitive | pcb_example1.xy | | --caseinsensitive --eval "return translate_col_val 3, '^.([0-9]+)K.$','sprintf(\"%dkilohms\",\$1)', 1, 'R10'"| 1
-translate_column_no_match1 | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)', 1, 'R90'"| 0
-translate_column_no_match2 | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)n.$','sprintf(\"%dnF\",\$1)', 1, 'R10'"| 0
+translate_bad_col_num1 | pcb_example1.xy | | --eval "return translate_col_val '4d', '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
+translate_bad_col_num2 | pcb_example1.xy | | --eval "return translate_col_val 'd4', '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
+translate_negative_col_num | pcb_example1.xy | | --eval "return translate_col_val -4, '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
+translate_col_num_too_high | pcb_example1.xy | | --eval "return translate_col_val 100, '^.([0-9]+)k.$','sprintf(\"%dK\",$1)', 1, 'R[0-9]+'"| 255
+translate_col_change_all_value_plus_k | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)'"| 1
+translate_col_change_R10_value | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)', 1, 'R10'"| 1
+translate_col_R10_value_case_insens | pcb_example1.xy | | --caseinsensitive --eval "return translate_col_val 3, '^.([0-9]+)K.$','sprintf(\"%dkilohms\",\$1)', 1, 'R10'"| 1
+translate_col_no_match1 | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)k.$','sprintf(\"%dK\",\$1)', 1, 'R90'"| 0
+translate_col_no_match2 | pcb_example1.xy | | --eval "return translate_col_val 3, '^.([0-9]+)n.$','sprintf(\"%dnF\",\$1)', 1, 'R10'"| 0
 
 # -----------------------------------------
 # Tests for output delimiter option in gxyrs.
@@ -125,27 +125,27 @@ output_delimiter | pcb_example1.xy | | --tabulate --output-delimiter " " --eval
 # -----------------------------------------
 # Tests for panelize_xyrs subroutine in gxyrs package.
 # -----------------------------------------
-panelize_bad_x_column_number1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,'d2',\$Y_COL, \$REF_COL, ''"| 255
-panelize_bad_y_column_number1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL, 'd2', \$REF_COL, ''"| 255
-panelize_bad_ref_column_number1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500, \$X_COL,\$Y_COL, 'd2', ''"| 255
-panelize_bad_x_column_number2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,'2d',\$Y_COL, \$REF_COL, ''"| 255
-panelize_bad_y_column_number2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,'2d', \$REF_COL, ''"| 255
-panelize_bad_ref_column_number2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$REF_COL,\$Y_COL, '2d', ''"| 255
-panelize_negative_x_column_number | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,-1,\$Y_COL, \$REF_COL, ''"| 255
-panelize_negative_y_column_number | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,-1, \$REF_COL, ''"| 255
-panelize_negative_ref_column_number | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,\$Y_COL, -1, ''"| 255
-panelize_x_column_number_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,100,\$Y_COL, \$REF_COL, ''"| 255
-panelize_y_column_number_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,100, \$REF_COL, ''"| 255
-panelize_ref_column_number_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,\$Y_COL, 100, ''"| 255
+panelize_bad_x_col_num1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,'d2',\$Y_COL, \$REF_COL, ''"| 255
+panelize_bad_y_col_num1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL, 'd2', \$REF_COL, ''"| 255
+panelize_bad_ref_col_num1 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500, \$X_COL,\$Y_COL, 'd2', ''"| 255
+panelize_bad_x_col_num2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,'2d',\$Y_COL, \$REF_COL, ''"| 255
+panelize_bad_y_col_num2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,'2d', \$REF_COL, ''"| 255
+panelize_bad_ref_col_num2 | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$REF_COL,\$Y_COL, '2d', ''"| 255
+panelize_negative_x_col_num | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,-1,\$Y_COL, \$REF_COL, ''"| 255
+panelize_negative_y_col_num | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,-1, \$REF_COL, ''"| 255
+panelize_negative_ref_col_num | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,\$Y_COL, -1, ''"| 255
+panelize_x_col_num_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,100,\$Y_COL, \$REF_COL, ''"| 255
+panelize_y_col_num_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,100, \$REF_COL, ''"| 255
+panelize_ref_col_num_too_high | pcb_example1.xy | | --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,\$Y_COL, 100, ''"| 255
 panelize_tabulate | pcb_example1.xy | | --tabulate --output-delimiter " " --eval "return panelize_xyrs 15,15,500,1500,\$X_COL,\$Y_COL, \$REF_COL, ''"| 1
 
 # -----------------------------------------
 # Tests for multiply subroutine in gxyrs package.
 # -----------------------------------------
-multiply_bad_column_number1 | pcb_example1.xy | | --eval "return mul_col_val 'd2', 2"| 255
-multiply_bad_column_number2 | pcb_example1.xy | | --eval "return mul_col_val '2d', 2"| 255
-multiply_negative_column_number | pcb_example1.xy | | --eval "return mul_col_val -1, 2"| 255
-multiply_column_number_too_high | pcb_example1.xy | | --eval "return mul_col_val 100, 100"| 255
+multiply_bad_col_num1 | pcb_example1.xy | | --eval "return mul_col_val 'd2', 2"| 255
+multiply_bad_col_num2 | pcb_example1.xy | | --eval "return mul_col_val '2d', 2"| 255
+multiply_negative_col_num | pcb_example1.xy | | --eval "return mul_col_val -1, 2"| 255
+multiply_col_num_too_high | pcb_example1.xy | | --eval "return mul_col_val 100, 100"| 255
 multiply_real_factor | pcb_example1.xy | | --eval "return mul_col_val \$Y_COL, 2.5"| 1
 multiply_negative_real_factor | pcb_example1.xy | | --eval "return mul_col_val \$Y_COL, -2.5"| 1
 multiply_integer_factor | pcb_example1.xy | | --eval "return mul_col_val \$Y_COL, 2"| 1
@@ -155,27 +155,27 @@ multiply_with_checklist | pcb_example1.xy | | --eval "return mul_col_val \$Y_COL
 # -----------------------------------------
 # Tests for swap_columns subroutine in gxyrs package.
 # -----------------------------------------
-swap_columns_bad_column1_number1 | pcb_example1.xy | | --eval "return swap_columns 'd2', 2"| 255
-swap_columns_bad_column1_number2 | pcb_example1.xy | | --eval "return swap_columns '2d', 2"| 255
-swap_columns_negative_column1_number | pcb_example1.xy | | --eval "return swap_columns -1, 2"| 255
-swap_columns_column1_number_too_high | pcb_example1.xy | | --eval "return swap_columns 100, 1"| 255
-swap_columns_bad_column2_number1 | pcb_example1.xy | | --eval "return swap_columns 2, 'd2'"| 255
-swap_columns_bad_column2_number2 | pcb_example1.xy | | --eval "return swap_columns 2, '2d'"| 255
-swap_columns_negative_column2_number | pcb_example1.xy | | --eval "return swap_columns 2, -1"| 255
-swap_columns_column2_number_too_high | pcb_example1.xy | | --eval "return swap_columns 1, 100"| 255
-swap_columns_with_match | pcb_example1.xy | | --eval "return swap_columns 1, 2, \$REF_COL, 'R[0-9]+'"| 1
-swap_columns_no_match | pcb_example1.xy | | --eval "return swap_columns 1, 2, \$REF_COL, 'Rb[0-9]+'"| 0
-swap_columns_no_matchlist | pcb_example1.xy | | --eval "return swap_columns 1, 2"| 1
+swap_cols_bad_col1_num1 | pcb_example1.xy | | --eval "return swap_columns 'd2', 2"| 255
+swap_cols_bad_col1_num2 | pcb_example1.xy | | --eval "return swap_columns '2d', 2"| 255
+swap_cols_negative_col1_num | pcb_example1.xy | | --eval "return swap_columns -1, 2"| 255
+swap_cols_col1_num_too_high | pcb_example1.xy | | --eval "return swap_columns 100, 1"| 255
+swap_cols_bad_col2_num1 | pcb_example1.xy | | --eval "return swap_columns 2, 'd2'"| 255
+swap_cols_bad_col2_num2 | pcb_example1.xy | | --eval "return swap_columns 2, '2d'"| 255
+swap_cols_negative_col2_num | pcb_example1.xy | | --eval "return swap_columns 2, -1"| 255
+swap_cols_col2_num_too_high | pcb_example1.xy | | --eval "return swap_columns 1, 100"| 255
+swap_cols_with_match | pcb_example1.xy | | --eval "return swap_columns 1, 2, \$REF_COL, 'R[0-9]+'"| 1
+swap_cols_no_match | pcb_example1.xy | | --eval "return swap_columns 1, 2, \$REF_COL, 'Rb[0-9]+'"| 0
+swap_cols_no_matchlist | pcb_example1.xy | | --eval "return swap_columns 1, 2"| 1
 
 # -----------------------------------------
 # Tests for insert_column subroutine in gxyrs package.
 # -----------------------------------------
-insert_column_bad_column_number1 | pcb_example1.xy | | --eval "return insert_column 'd2', 2"| 255
-insert_column_bad_column_number2 | pcb_example1.xy | | --eval "return insert_column '2d', 2"| 255
-insert_column_negative_column_number | pcb_example1.xy | | --eval "return insert_column -1, 2"| 255
-insert_column_column_number_too_high | pcb_example1.xy | | --eval "return insert_column 100, 100"| 255
-insert_column_first_pos | pcb_example1.xy | | --eval "return insert_column 0, 'new_value'"| 1
-insert_column_second_pos | pcb_example1.xy | | --eval "return insert_column 1, 'new_value'"| 1
+insert_col_bad_col_num1 | pcb_example1.xy | | --eval "return insert_column 'd2', 2"| 255
+insert_col_bad_col_num2 | pcb_example1.xy | | --eval "return insert_column '2d', 2"| 255
+insert_col_negative_col_num | pcb_example1.xy | | --eval "return insert_column -1, 2"| 255
+insert_col_col_num_too_high | pcb_example1.xy | | --eval "return insert_column 100, 100"| 255
+insert_col_first_pos | pcb_example1.xy | | --eval "return insert_column 0, 'new_value'"| 1
+insert_col_second_pos | pcb_example1.xy | | --eval "return insert_column 1, 'new_value'"| 1
 
 # -----------------------------------------
 # Tests if footprint field is guessed in several file formats.

commit fd9b5bd2f1e99f006bbad9db6d64c29547a5f70c
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    docs: `datawiki' substitution is never used.
    
    So remove it from the configure script.

diff --git a/docs/configure.ac b/docs/configure.ac
index a07341d..e1008ac 100644
--- a/docs/configure.ac
+++ b/docs/configure.ac
@@ -45,23 +45,6 @@ AC_SUBST(GEDADOCDIR)
 AC_SUBST(DATE_VERSION)
 AC_SUBST(DOTTED_VERSION)
 
-AC_DEFUN([GEDA_DECLARE_DOCS],
- [
-        data$1=`find $srcdir/$1 -name \* -print \
-				 | sed "s%\.\./wiki/%%" \
-				 | sed "s%\.\./wiki%%" \
-				 | sed "s%\./wiki/%%" \
-				 | sed "s%\./wiki%%" \
-				 | grep -v Makefile | grep -v ChangeLog \
-                                 | grep -v CVS | grep -v "\\.cvsignore" \
-                                 | grep -v README \
-                                 | grep -v "\\~" | grep -v "\\.orig"`
-        data$1=`echo $data$1`
-        AC_SUBST(data$1)
- ])
-
-GEDA_DECLARE_DOCS(wiki)
-
 AC_CONFIG_FILES([Makefile 
 		 toplevel/Makefile 
 		 toplevel/gedadocs.html 

commit 7f6a4497b66d7ae8e47089a6a09287d112ac2587
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    system-gafrc: Send font warning to stderr.
    
    This stops gnetlist stdout results from differing between the font
    being installed and not installed (and thus breaking preinstall
    tests).

diff --git a/libgeda/lib/system-gafrc b/libgeda/lib/system-gafrc
index abbd558..eb5ab1c 100644
--- a/libgeda/lib/system-gafrc
+++ b/libgeda/lib/system-gafrc
@@ -34,7 +34,7 @@
 (let ((font-def-file (%search-load-path "geda-font")))
   (if font-def-file 
       (load font-def-file)
-      (display "Failed to load default font.\n")))
+      (display "Failed to load default font.\n" (current-error-port))))
 
 ; Set the name of the postscript prolog file that will be 
 ; pasted into the postscript output after the DSC comments, but

commit 8af5fba2ec0248331ceb5d2746771e70b2813004
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    libgeda: Cope better with not finding the font.
    
    Calling exit(-1) if the font doesn't appear to have been found is
    stupid and not the way that a library is supposed to do things.
    Instead, use a built-in question mark character '?' for any characters
    that can't be loaded (which, if the font is missing, is all of them).

diff --git a/libgeda/src/o_text_basic.c b/libgeda/src/o_text_basic.c
index c5fbeea..4a27e8a 100644
--- a/libgeda/src/o_text_basic.c
+++ b/libgeda/src/o_text_basic.c
@@ -103,6 +103,64 @@ GHashTable *font_char_to_file = NULL;
 /*! Size of a tab in characters */
 int tab_in_chars = 8;
 
+/*! Data for built-in question mark character.
+ *
+ * See builtin_question_mark().
+ */
+static int question_mark_data[][4] = {
+  {0, 22, 4, 26},
+  {4, 26, 10, 26},
+  {10, 26, 14, 22},
+  {14, 22, 14, 18},
+  {14, 18, 12, 14},
+  {12, 14, 6, 8},
+  {6, 8, 6, 6},
+  {6, -1, 7, -1},
+  {7, -1, 8, 0},
+  {8, 0, 8, 1},
+  {8, 1, 7, 2},
+  {7, 2, 6, 2},
+  {6, 2, 5, 1},
+  {5, 1, 5, 0},
+  {5, 0, 6, -1},
+  {-128, -128, -128, -128} /* Daft choice of sentinel */
+  };
+
+/*! \brief Get the built-in question mark font character.
+ * \par Function Description
+ * If the font can't be found (e.g. because it isn't installed
+ * correctly), this function generates a question mark character. This
+ * is based on the "quest.sym" font character.
+ */
+static OBJECT *
+builtin_question_mark (TOPLEVEL *toplevel) {
+  OBJECT *q;
+  int i;
+
+  q = g_new0 (OBJECT, 1);
+  q->font_prim_objs = NULL;
+  q->font_text_size = 20;
+  q->name = g_strdup_printf ("?");
+  q->font_prim_objs = NULL;
+
+  for (i = 0; ; i++) {
+    if (question_mark_data[i][0] == -128) break;
+
+    OBJECT *l = o_line_new (toplevel, OBJ_LINE,
+                            DEFAULT_COLOR,
+                            question_mark_data[i][0],
+                            question_mark_data[i][1],
+                            question_mark_data[i][2],
+                            question_mark_data[i][3]);
+    o_set_line_options (toplevel, l, 0, 0, 0, -1, -1);
+    o_set_fill_options (toplevel, l,
+                        FILLING_HOLLOW,
+                        -1, -1, -1, -1, -1);
+    q->font_prim_objs = g_list_prepend (q->font_prim_objs, l);
+  }
+
+  return q;
+}
 
 /*! \brief update the visible part of a string
  *  \par Function Description
@@ -266,9 +324,10 @@ GList *o_text_load_font (TOPLEVEL *toplevel, gunichar needed_char)
 {
   gchar *temp_string = NULL;
   OBJECT *o_font_set;
-  int not_found = FALSE;
+  int found = TRUE;
   gchar *aux_str2;
   GError *err = NULL;
+  GList *prim_objs = NULL;
 
   /* retrieve the name of the file where the char is defined */
   aux_str2 = g_hash_table_lookup (font_char_to_file,
@@ -303,53 +362,36 @@ GList *o_text_load_font (TOPLEVEL *toplevel, gunichar needed_char)
     s_log_message(_("Could not find character '%s' definition.\n"), outbuf);
     
     g_free (temp_string);
-    temp_string = g_build_filename (toplevel->font_directory, "quest.sym", NULL);
-    if ( access(temp_string, R_OK) != 0 ) {
-      fprintf(stderr, _("Could not load question font char -- check font-directory keyword\n"));
-      exit(-1);
+    temp_string = NULL;
+    found = FALSE;
+  }
+
+  if (found) {
+    prim_objs = o_read(toplevel, prim_objs, temp_string, &err);
+    if (err != NULL) {
+      g_warning ("o_text_basic.c: Failed to read font file: %s\n",
+                 err->message);
+      g_error_free (err);
+      found = FALSE;
     }
-    not_found = TRUE; 
   }
 
-  /* Make new object for the font set list */
-  o_font_set = (OBJECT*)g_new (OBJECT, 1);	
-  
-  o_font_set->font_prim_objs = NULL;
-  o_font_set->font_text_size = 100;
+  if (!found) {
+    /* Get a question mark. */
+    o_font_set = builtin_question_mark (toplevel);
+  } else {
+    /* Make new object for the font set list */
+    o_font_set = (OBJECT*)g_new (OBJECT, 1);
+    o_font_set->font_prim_objs = prim_objs;
+    o_font_set->font_text_size = 100;
+  }
 
   o_font_set->name = g_strdup_printf ("%c", needed_char);
-  o_font_set->font_prim_objs = NULL;
-  
+
   /* Add it to the list and hash table. Some functions will need it */
   g_hash_table_insert (font_loaded,
                        GUINT_TO_POINTER (needed_char), o_font_set);
 
-  if (not_found == TRUE) {
-    /* set the font text size (width) to the question mark's size */
-    /* yes, the question mark character was loaded instead of the real char */
-    /* 63 == question mark character */
-
-    OBJECT *aux_obj;
-    
-    aux_obj = g_hash_table_lookup (font_loaded,
-                                   GUINT_TO_POINTER ((gunichar)'?'));
-    if (aux_obj == NULL) {
-      o_text_load_font(toplevel, (gunichar) '?');
-      aux_obj = g_hash_table_lookup (font_loaded,
-                                     GUINT_TO_POINTER ((gunichar)'?'));
-    }
-
-    o_font_set->font_text_size = aux_obj->font_text_size;
-  }
-
-  o_font_set->font_prim_objs = o_read(toplevel, o_font_set->font_prim_objs,
-				      temp_string, &err);
-  if (err != NULL) {
-    g_warning ("o_text_basic.c: Failed to read font file: %s\n",
-               err->message);
-    g_error_free (err);
-  }
-
   g_free(temp_string);
 
   return(o_font_set->font_prim_objs);

commit 89684e7fb17efa69e0fa897de31219e5a82ba414
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>

    gnetlist: Correctly copy golden files to distdir.
    
    This bug was introduced in 1c8b245984, which didn't correctly account
    for out-of-sourcedir builds of the distribution archive.

diff --git a/gnetlist/tests/common/Makefile.am b/gnetlist/tests/common/Makefile.am
index a95443b..cb6234b 100644
--- a/gnetlist/tests/common/Makefile.am
+++ b/gnetlist/tests/common/Makefile.am
@@ -31,8 +31,8 @@ EXTRA_DIST= run_backend_tests.sh ${RUN_TESTS} tests.list backends.list \
 CLEANFILES= *.log
 
 dist-hook: tests.list backends.list
-	tests=`cat tests.list | sed -e "s:#.*$$::" | sed -e "s:|.*$$::"`; \
-	backends=`cat backends.list`; \
+	@tests=`cat $(srcdir)/tests.list | sed -e "s:#.*$$::" | sed -e "s:|.*$$::"`; \
+	backends=`cat $(srcdir)/backends.list`; \
 	$(MKDIR_P) $(distdir)/outputs || exit $$?; \
 	for backend in $$backends; do \
 	  dir=outputs/$$backend; \



_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs