Re: [PATCH] util-linux: add minimal uuidgen implementation

Osama Abdelkader via busybox <[email protected]>
Newsgroups gmane.linux.busybox
Message-ID <aX0j3Lw_Q3871QS0@osama>
On Fri, Jan 30, 2026 at 09:41:09PM +0100, Hans Ulli Kroll wrote:
> Hi Osama
> 
> On Thu, 2026-01-29 at 22:35 +0100, Osama Abdelkader via busybox wrote:
> > On Sun, Nov 23, 2025 at 03:19:58AM +0200, Osama Abdelkader wrote:
> > > 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
> > > 
> > ping.
> > 
> 
> This is my version of the from my (endless) didn't send list
> Only the main code
> 
> int uuidgen_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
> int uuidgen_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
> {
> 	struct volume_id id;
> 	char uuid[37];
> 
> 	generate_uuid(uuid);
> 	volume_id_set_uuid(&id, uuid, UUID_DCE);
> 	printf("%s\n", id.uuid);
> 
> 	return 0;
> }
> 
> I didn't check the size.
> You can take this
> 
> Ulli

Hi Ulli,

Thank you, I just sent a v2, please feel free to change the commit
message.

Thanks,
Osama
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.