[PATCH 6/6] commands: implement 'diff' command

Sascha Hauer s.hauer at pengutronix.de
Wed Oct 8 07:24:15 PDT 2014


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 at pengutronix.de>
---
 commands/Kconfig  | 10 ++++++++++
 commands/Makefile |  1 +
 commands/diff.c   | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 53 insertions(+)
 create mode 100644 commands/diff.c

diff --git a/commands/Kconfig b/commands/Kconfig
index d73a393..05d5426 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -811,6 +811,16 @@ config CMD_CP
 	  Options:
 		  -v	verbose
 
+config CMD_DIFF
+	tristate
+	prompt "diff"
+	help
+	  compare two files
+
+	  Usage: diff 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 b1cdf33..e53bdde 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_DIFF)		+= diff.o
diff --git a/commands/diff.c b/commands/diff.c
new file mode 100644
index 0000000..26eaf88
--- /dev/null
+++ b/commands/diff.c
@@ -0,0 +1,42 @@
+/*
+ * diff - 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_diff(int argc, char *argv[])
+{
+	if (argc != 3)
+		return COMMAND_ERROR_USAGE;
+
+	return diff_file(argv[1], argv[2]);
+}
+
+BAREBOX_CMD_HELP_START(diff)
+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(diff)
+	.cmd		= do_diff,
+	BAREBOX_CMD_DESC("compare two files")
+	BAREBOX_CMD_OPTS("FILE1 FILE2")
+	BAREBOX_CMD_GROUP(CMD_GRP_FILE)
+	BAREBOX_CMD_HELP(cmd_diff_help)
+BAREBOX_CMD_END
-- 
2.1.0




More information about the barebox mailing list