Transform 'u16' to 'uint16_t'
[fw/openocd] / src / helper / configuration.c
index 68c863f3253ca9278fdae5330d84063e8a4f78df..d1395e6ad4fb21e1184aed27911f5bb45d83b09d 100644 (file)
@@ -2,6 +2,9 @@
  *   Copyright (C) 2004, 2005 by Dominic Rath                              *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
+ *   Copyright (C) 2007,2008 Ã˜yvind Harboe                                 *
+ *   oyvind.harboe@zylin.com                                               *
+ *                                                                         *
  *   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     *
 #include "config.h"
 #endif
 
-#include "types.h"
-#include "command.h"
 #include "configuration.h"
 #include "log.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 
 static size_t num_config_files;
 static char** config_file_names;
@@ -45,7 +43,7 @@ void add_script_search_dir (const char *dir)
        script_search_dirs[num_script_dirs] = NULL;
 }
 
-void add_config_file_name (const char *cfg)
+void add_config_command (const char *cfg)
 {
        num_config_files++;
        config_file_names = (char **)realloc(config_file_names, (num_config_files+1) * sizeof (char *));
@@ -55,7 +53,7 @@ void add_config_file_name (const char *cfg)
 }
 
 /* return full path or NULL according to search rules */
-char *find_file(char *file)
+char *find_file(const char *file)
 {
        FILE *fp = NULL;
        char **search_dirs = script_search_dirs;
@@ -78,7 +76,7 @@ char *find_file(char *file)
                snprintf(full_path, 1024, "%s/%s", dir, file);
                fp = fopen(full_path, mode);
        }
-       
+
        if (fp)
        {
                fclose(fp);
@@ -88,7 +86,6 @@ char *find_file(char *file)
        return NULL;
 }
 
-
 FILE *open_file_from_path (char *file, char *mode)
 {
        if (mode[0]!='r')
@@ -97,6 +94,8 @@ FILE *open_file_from_path (char *file, char *mode)
        } else
        {
                char *full_path=find_file(file);
+               if (full_path==NULL)
+                       return NULL;
                FILE *fp = NULL;
                fp = fopen(full_path, mode);
                free(full_path);
@@ -106,16 +105,19 @@ FILE *open_file_from_path (char *file, char *mode)
 
 int parse_config_file(struct command_context_s *cmd_ctx)
 {
+       int retval;
        char **cfg;
 
        if (!config_file_names)
-               add_config_file_name ("script openocd.cfg");
+               add_config_command ("script openocd.cfg");
 
        cfg = config_file_names;
 
        while (*cfg)
        {
-               command_run_line(cmd_ctx, *cfg);
+               retval=command_run_line(cmd_ctx, *cfg);
+               if (retval!=ERROR_OK)
+                       return retval;
                cfg++;
        }