aboutsummaryrefslogtreecommitdiff
path: root/src/helper/nvp.c
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2022-12-26 21:59:56 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2023-02-03 22:47:40 +0000
commitea6a99208e1bc41a878234f7220501e26ec4a7f1 (patch)
tree601908c9040b20ebb049a4ac2aff6b7039b07764 /src/helper/nvp.c
parent18bafdce615132311fd34f2e1bdf57c193d14097 (diff)
downloadriscv-openocd-ea6a99208e1bc41a878234f7220501e26ec4a7f1.zip
riscv-openocd-ea6a99208e1bc41a878234f7220501e26ec4a7f1.tar.gz
riscv-openocd-ea6a99208e1bc41a878234f7220501e26ec4a7f1.tar.bz2
helper: nvp: add openocd nvp files
Long ago jim_nvp was part of jimtcl. When jimtcl dropped it, OpenOCD kept copy of it in its code base. Current code of jim_nvp is still related with jimtcl data types and functions. With the target of better isolating OpenOCD code from jimtcl, create a new file nvp.c that re-proposes only the core of the old jim_nvp, dropping any link with jimtcl and removing the string 'jim' either from the filename and from the code. Keep the same license from the old code, as the new files are clearly derived from it. Change-Id: I273448cf1f1484b10f6b6113ed7bb0fcf946482b Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7423 Tested-by: jenkins Reviewed-by: Evgeniy Didin <didin@synopsys.com>
Diffstat (limited to 'src/helper/nvp.c')
-rw-r--r--src/helper/nvp.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/helper/nvp.c b/src/helper/nvp.c
new file mode 100644
index 0000000..7a8abc2
--- /dev/null
+++ b/src/helper/nvp.c
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: BSD-2-Clause-Views
+
+/*
+ * Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
+ * Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
+ * Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
+ * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
+ * Copyright 2008 Andrew Lunn <andrew@lunn.ch>
+ * Copyright 2008 Duane Ellis <openocd@duaneellis.com>
+ * Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
+ * Copyright 2008 Steve Bennett <steveb@workware.net.au>
+ * Copyright 2009 Nico Coesel <ncoesel@dealogic.nl>
+ * Copyright 2009 Zachary T Welch zw@superlucidity.net
+ * Copyright 2009 David Brownell
+ * Copyright (c) 2005-2011 Jim Tcl Project. All rights reserved.
+ *
+ * This file is extracted from jim_nvp.c, originally part of jim TCL code.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <helper/command.h>
+#include <helper/nvp.h>
+
+const struct nvp *nvp_name2value(const struct nvp *p, const char *name)
+{
+ while (p->name) {
+ if (strcmp(name, p->name) == 0)
+ break;
+ p++;
+ }
+ return p;
+}
+
+const struct nvp *nvp_value2name(const struct nvp *p, int value)
+{
+ while (p->name) {
+ if (value == p->value)
+ break;
+ p++;
+ }
+ return p;
+}
+
+void nvp_unknown_command_print(struct command_invocation *cmd, const struct nvp *nvp,
+ const char *param_name, const char *param_value)
+{
+ if (param_name)
+ command_print_sameline(cmd, "%s: Unknown: %s, try one of: ", param_name, param_value);
+ else
+ command_print_sameline(cmd, "Unknown param: %s, try one of: ", param_value);
+
+ while (nvp->name) {
+ if ((nvp + 1)->name)
+ command_print_sameline(cmd, "%s, ", nvp->name);
+ else
+ command_print(cmd, "or %s", nvp->name);
+
+ nvp++;
+ }
+
+ /* We assume nvp to be not empty and loop has been taken; no need to add a '\n' */
+}