+int add_default_dirs(void)
+{
+#ifdef _WIN32
+ /* Add the parent of the directory where openocd.exe resides to the
+ * config script search path.
+ * Directory layout:
+ * bin\openocd.exe
+ * lib\openocd
+ * event\at91eb40a_reset.cfg
+ * target\at91eb40a.cfg
+ */
+ {
+ char strExePath [MAX_PATH];
+ GetModuleFileName (NULL, strExePath, MAX_PATH);
+ /* Either this code will *always* work or it will SEGFAULT giving
+ * excellent information on the culprit.
+ */
+ *strrchr(strExePath, '\\') = 0;
+ strcat(strExePath, "\\..");
+ add_script_search_dir(strExePath);
+ }
+ /*
+ * Add support for the default (as of 20080121) layout when
+ * using autotools and cygwin to build native MinGW binary.
+ * Path separator is converted to UNIX style so that MinGW is
+ * pleased.
+ *
+ * bin/openocd.exe
+ * lib/openocd/event/at91eb40a_reset.cfg
+ * lib/openocd/target/at91eb40a.cfg
+ */
+ {
+ char strExePath [MAX_PATH];
+ char *p;
+ GetModuleFileName (NULL, strExePath, MAX_PATH);
+ *strrchr(strExePath, '\\') = 0;
+ strcat(strExePath, "/../lib/"PACKAGE);
+ for (p = strExePath; *p; p++) {
+ if (*p == '\\')
+ *p = '/';
+ }
+ add_script_search_dir(strExePath);
+ }
+#else
+ /*
+ * The directory containing OpenOCD-supplied scripts should be
+ * listed last in the built-in search order, so the user can
+ * override these scripts with site-specific customizations.
+ */
+ /// @todo Implement @c add_script_search_dir("${HOME}/.openocd").
+ add_script_search_dir(PKGDATADIR "/site");
+ add_script_search_dir(PKGDATADIR "/scripts");
+#endif
+ return ERROR_OK;
+}