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
