summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-10-08 16:22:33 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-11-04 12:36:19 +0100
commit6aaba64b0c7044c242329499d5d4c53c3d0cde3a (patch)
tree958a1d47f0252440ced0eb7974d2900a27c21646 /commands
parent6cf5b986d98a19a8c05f6813b8944a4f5f784dd0 (diff)
downloadbarebox-6aaba64b0c7044c242329499d5d4c53c3d0cde3a.tar.gz
barebox-6aaba64b0c7044c242329499d5d4c53c3d0cde3a.tar.xz
commands: implement 'cmp' command
This command compares two files. It does not show the differences, it only returns successfully if both files are identical and with an error if they differ. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands')
-rw-r--r--commands/Kconfig10
-rw-r--r--commands/Makefile1
-rw-r--r--commands/cmp.c42
3 files changed, 53 insertions, 0 deletions
diff --git a/commands/Kconfig b/commands/Kconfig
index d73a393885..bef58473a5 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -811,6 +811,16 @@ config CMD_CP
Options:
-v verbose
+config CMD_CMP
+ tristate
+ prompt "cmp"
+ help
+ compare two files
+
+ Usage: cmp FILE1 FILE2
+
+ Returns successfully if the two files are the same, return with an error if not
+
config CMD_DIRNAME
tristate
prompt "dirname"
diff --git a/commands/Makefile b/commands/Makefile
index b1cdf331c4..be174969b0 100644
--- a/commands/Makefile
+++ b/commands/Makefile
@@ -106,3 +106,4 @@ obj-$(CONFIG_CMD_IMD) += imd.o
obj-$(CONFIG_CMD_HWCLOCK) += hwclock.o
obj-$(CONFIG_CMD_USBGADGET) += usbgadget.o
obj-$(CONFIG_CMD_FIRMWARELOAD) += firmwareload.o
+obj-$(CONFIG_CMD_CMP) += cmp.o
diff --git a/commands/cmp.c b/commands/cmp.c
new file mode 100644
index 0000000000..c493988a78
--- /dev/null
+++ b/commands/cmp.c
@@ -0,0 +1,42 @@
+/*
+ * cmp - determine if two files differ
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <common.h>
+#include <command.h>
+#include <complete.h>
+#include <libfile.h>
+
+static int do_cmp(int argc, char *argv[])
+{
+ if (argc != 3)
+ return COMMAND_ERROR_USAGE;
+
+ return compare_file(argv[1], argv[2]);
+}
+
+BAREBOX_CMD_HELP_START(cmp)
+BAREBOX_CMD_HELP_TEXT("Returns successfully if the two files are the same, return with an error if not")
+BAREBOX_CMD_HELP_END
+
+BAREBOX_CMD_START(cmp)
+ .cmd = do_cmp,
+ BAREBOX_CMD_DESC("compare two files")
+ BAREBOX_CMD_OPTS("FILE1 FILE2")
+ BAREBOX_CMD_GROUP(CMD_GRP_FILE)
+ BAREBOX_CMD_HELP(cmd_cmp_help)
+BAREBOX_CMD_END