]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
tools/kwbimage.c: fix build on darwin
authorAndreas Bießmann <andreas.devel@googlemail.com>
Fri, 24 Oct 2014 21:39:11 +0000 (23:39 +0200)
committerAnatolij Gustschin <agust@denx.de>
Thu, 30 Oct 2014 23:26:12 +0000 (00:26 +0100)
kwbimage uses get_current_dir_name(3) which is a gnu extension and not
available on darwin host. Fix this by converting to portable getcwd(3)
function.

This patch fixes the following error:
---8<---
  HOSTCC  tools/kwbimage.o
tools/kwbimage.c:399:16: warning: implicit declaration of function 'get_current_dir_name' is invalid in C99 [-Wimplicit-function-declaration]
                        char *cwd = get_current_dir_name();
                                    ^
tools/kwbimage.c:399:10: warning: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]
                        char *cwd = get_current_dir_name();
                              ^     ~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
...
Undefined symbols for architecture x86_64:
  "_get_current_dir_name", referenced from:
      _image_headersz_v1 in kwbimage.o
ld: symbol(s) not found for architecture x86_64
--->8---

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Cc: Stefan Roese <sr@denx.de>
Acked-by: Stefan Roese <sr@denx.de>
[agust: fixed getcwd() return warning]
Signed-off-by: Anatolij Gustschin <agust@denx.de>
tools/kwbimage.c

index 1120e9b3729024fc851ddba5a3410dcc92cf29d1..aab7f2da4af5f57fe6a0cf162fa703817cf7ce4c 100644 (file)
@@ -12,6 +12,7 @@
  */
 
 #include "imagetool.h"
+#include <limits.h>
 #include <image.h>
 #include <stdint.h>
 #include "kwbimage.h"
@@ -396,13 +397,20 @@ static size_t image_headersz_v1(struct image_tool_params *params,
 
                ret = stat(binarye->binary.file, &s);
                if (ret < 0) {
-                       char *cwd = get_current_dir_name();
+                       char cwd[PATH_MAX];
+                       char *dir = cwd;
+
+                       memset(cwd, 0, sizeof(cwd));
+                       if (!getcwd(cwd, sizeof(cwd))) {
+                               dir = "current working directory";
+                               perror("getcwd() failed");
+                       }
+
                        fprintf(stderr,
                                "Didn't find the file '%s' in '%s' which is mandatory to generate the image\n"
                                "This file generally contains the DDR3 training code, and should be extracted from an existing bootable\n"
                                "image for your board. See 'kwbimage -x' to extract it from an existing image.\n",
-                               binarye->binary.file, cwd);
-                       free(cwd);
+                               binarye->binary.file, dir);
                        return 0;
                }