diff options
author | José Bollo <jose.bollo@iot.bzh> | 2019-09-13 16:46:39 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2020-02-28 12:19:23 +0100 |
commit | 0083ad3751cd2b088b5c5d0dea727671ea2a3cca (patch) | |
tree | 8163694e0c2523b861f84e45ec14cc6d1a760f41 /src/main-wgtpkg-install.c | |
parent | 4f888279f132faf35caf92d4828f134f6daeb9a1 (diff) |
Rename source files and improve readability
Also rename wgtpkg-installer tools as wgtpkg-install.
Shorter and obvious.
Bug-AGL: SPEC-2840
Change-Id: Ifed072bfef488700807613dd61875a30a4041d7a
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/main-wgtpkg-install.c')
-rw-r--r-- | src/main-wgtpkg-install.c | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/main-wgtpkg-install.c b/src/main-wgtpkg-install.c new file mode 100644 index 0000000..7f6f187 --- /dev/null +++ b/src/main-wgtpkg-install.c @@ -0,0 +1,147 @@ +/* + Copyright (C) 2015-2020 IoT.bzh + + author: José Bollo <jose.bollo@iot.bzh> + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#define _GNU_SOURCE + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <dirent.h> +#include <unistd.h> +#include <limits.h> +#include <errno.h> +#include <getopt.h> + +#include <libxml/tree.h> + +#include "verbose.h" +#include "wgtpkg-permissions.h" +#include "wgtpkg-xmlsec.h" +#include "wgt-info.h" +#include "wgtpkg-install.h" + +static const char appname[] = "wgtpkg-install"; +static const char *root; +static int force; + +static void version() +{ + printf( + "\n" + " %s version="AFM_VERSION"\n" + "\n" + " Copyright (C) 2015-2020 \"IoT.bzh\"\n" + " AFB comes with ABSOLUTELY NO WARRANTY.\n" + " Licence Apache 2\n" + "\n", + appname + ); +} + +static void usage() +{ + printf( + "usage: %s [-f] [-q] [-v] [-p list] rootdir wgtfile...\n" + "\n" + " rootdir the root directory for installing\n" + " -p list a list of comma separated permissions to allow\n" + " -f force overwriting\n" + " -q quiet\n" + " -v verbose\n" + " -V version\n" + "\n", + appname + ); +} + +static struct option options[] = { + { "permissions", required_argument, NULL, 'p' }, + { "force", no_argument, NULL, 'f' }, + { "help", no_argument, NULL, 'h' }, + { "quiet", no_argument, NULL, 'q' }, + { "verbose", no_argument, NULL, 'v' }, + { "version", no_argument, NULL, 'V' }, + { NULL, 0, NULL, 0 } +}; + +/* install the widgets of the list */ +int main(int ac, char **av) +{ + int i, rc; + struct wgt_info *ifo; + + LOGAUTH(appname); + + xmlsec_init(); + + force = 0; + for (;;) { + i = getopt_long(ac, av, "hfqvVp:", options, NULL); + if (i < 0) + break; + switch (i) { + case 'f': + force = 1; + break; + case 'h': + usage(); + return 0; + case 'q': + if (verbosity) + verbosity--; + break; + case 'v': + verbosity++; + break; + case 'V': + version(); + return 0; + case 'p': + rc = grant_permission_list(optarg); + if (rc < 0) { + ERROR("Can't set granted permission list"); + exit(1); + } + break; + case ':': + ERROR("missing argument value"); + return 1; + default: + ERROR("unrecognized option"); + return 1; + } + } + + ac -= optind; + if (ac < 2) { + ERROR("arguments are missing"); + return 1; + } + + /* install widgets */ + av += optind; + root = *av++; + for ( ; *av ; av++) { + ifo = install_widget(*av, root, force); + if (ifo) + wgt_info_unref(ifo); + } + + return 0; +} + |