Add a simple uuidgen utility that generates RFC 4122 compliant
UUIDs (version 4, random). Uses the existing generate_uuid()
function from libbb.

Features:
- Generates standard format UUIDs: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- RFC 4122 version 4 compliant
- Minimal implementation (~1.1 kb)
- NOFORK applet for efficiency

Signed-off-by: Osama Abdelkader <[email protected]>
---
 util-linux/uuidgen.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100644 util-linux/uuidgen.c

diff --git a/util-linux/uuidgen.c b/util-linux/uuidgen.c
new file mode 100644
index 000000000..6c5fb6903
--- /dev/null
+++ b/util-linux/uuidgen.c
@@ -0,0 +1,47 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Mini uuidgen implementation for busybox
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+//config:config UUIDGEN
+//config:      bool "uuidgen (1.1 kb)"
+//config:      default y
+//config:      help
+//config:      Generate a UUID (Universally Unique Identifier) in RFC 4122 
format.
+
+//applet:IF_UUIDGEN(APPLET_NOFORK(uuidgen, uuidgen, BB_DIR_USR_BIN, 
BB_SUID_DROP, uuidgen))
+
+//kbuild:lib-$(CONFIG_UUIDGEN) += uuidgen.o
+
+//usage:#define uuidgen_trivial_usage
+//usage:       ""
+//usage:#define uuidgen_full_usage "\n\n"
+//usage:       "Generate a UUID (Universally Unique Identifier)"
+
+#include "libbb.h"
+
+/* This is a NOFORK applet. Be very careful! */
+
+int uuidgen_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int uuidgen_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
+{
+       uint8_t uuid[16];
+       
+       if (argv[1]) {
+               bb_show_usage();
+       }
+
+       generate_uuid(uuid);
+       
+       /* Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx */
+       
printf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
+               uuid[0], uuid[1], uuid[2], uuid[3],
+               uuid[4], uuid[5],
+               uuid[6], uuid[7],
+               uuid[8], uuid[9],
+               uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
+
+       return fflush_all();
+}
+
-- 
2.43.0

_______________________________________________
busybox mailing list
[email protected]
https://lists.busybox.net/mailman/listinfo/busybox

Reply via email to