wgtpkg-pack: Ensure packing relative files
[src/app-framework-main.git] / src / wgtpkg-pack.c
index e7fa752..5a81d7e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- Copyright 2015 IoT.bzh
+ Copyright (C) 2015-2018 IoT.bzh
 
  author: José Bollo <jose.bollo@iot.bzh>
 
 #include <fcntl.h>
 
 #include "verbose.h"
-#include "wgtpkg.h"
-
-#if !defined(MAXCERT)
-#define MAXCERT 20
-#endif
-#if !defined(DEFAULT_KEY_FILE)
-#define DEFAULT_KEY_FILE "key.pem"
-#endif
-#if !defined(DEFAULT_CERT_FILE)
-#define DEFAULT_CERT_FILE "cert.pem"
-#endif
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-zip.h"
 
 const char appname[] = "wgtpkg-pack";
 
+static void version()
+{
+       printf(
+               "\n"
+               "  %s  version="AFM_VERSION"\n"
+               "\n"
+               "  Copyright (C) 2015, 2016, 2017 \"IoT.bzh\"\n"
+               "  AFB comes with ABSOLUTELY NO WARRANTY.\n"
+               "  Licence Apache 2\n"
+               "\n",
+               appname
+       );
+}
+
 static void usage()
 {
        printf(
@@ -51,6 +57,7 @@ static void usage()
                "   -f               force overwriting\n"
                "   -q               quiet\n"
                "   -v               verbose\n"
+               "   -V               version\n"
                "\n",
                appname
        );
@@ -62,6 +69,7 @@ static struct option options[] = {
        { "help",        no_argument,       NULL, 'h' },
        { "quiet",       no_argument,       NULL, 'q' },
        { "verbose",     no_argument,       NULL, 'v' },
+       { "version",     no_argument,       NULL, 'V' },
        { NULL, 0, NULL, 0 }
 };
 
@@ -77,7 +85,7 @@ int main(int ac, char **av)
        force = 0;
        wgtfile = directory = NULL;
        for (;;) {
-               i = getopt_long(ac, av, "qvhfo:", options, NULL);
+               i = getopt_long(ac, av, "qvVhfo:", options, NULL);
                if (i < 0)
                        break;
                switch (i) {
@@ -97,6 +105,9 @@ int main(int ac, char **av)
                case 'h':
                        usage();
                        return 0;
+               case 'V':
+                       version();
+                       return 0;
                case ':':
                        ERROR("missing argument");
                        return 1;
@@ -150,13 +161,17 @@ int main(int ac, char **av)
        /* compute absolutes paths */
        x = realpath(wgtfile, NULL);
        if (x == NULL) {
-               ERROR("realpath failed for %s",wgtfile);
+               ERROR("realpath failed for %s", wgtfile);
                return 1;
        }
        wgtfile = x;
 
        /* set and enter the workdir */
-       if (set_workdir(directory, 0))
+       if (chdir(directory)) {
+               ERROR("failed to enter directory %s", directory);
+               return 1;
+       }
+       if (set_workdir(".", 0))
                return 1;