Hi, If I understand correctly:
decode_base64() from uuencode.c = bigger one decodeBase64(char *Data) from httpd.c = smaller one Assuming they are equivalent (I didn't check), wouldn't it make more sense to: a. Do the check in uuencode.c to see if httpd.c is used and call the httpd one (smaller of the two) in the uudecode/base64 applets? or b. Line up the uuencode.c one with the httpd version to become smaller and call that one for all decode64 purposes (removing the httpd specific one)? Kind regards, Bruno Chevalier On Tue, Oct 6, 2020, 00:31 Xabier Oneca -- xOneca <[email protected]> wrote: > Use decode_base64() from uuencode.c when uudecode/base64 applets are > included. > That function is bigger than httpd's decodeBase64(), so we use the old one > when > those applets are disabled. Bloat-o-meter when one of those is enabled: > > function old new delta > handle_incoming_and_exit 2371 2265 -106 > > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-106) Total: -106 > bytes > text data bss dec hex filename > 81105 1694 1592 84391 149a7 busybox_old > 80999 1694 1592 84285 1493d busybox_unstripped > > Signed-off-by: Xabier Oneca <[email protected]> > --- > libbb/uuencode.c | 6 +++++- > networking/httpd.c | 11 +++++++++++ > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/libbb/uuencode.c b/libbb/uuencode.c > index d36b34f6..7b610297 100644 > --- a/libbb/uuencode.c > +++ b/libbb/uuencode.c > @@ -72,7 +72,11 @@ void FAST_FUNC bb_uuencode(char *p, const void > *src, int length, const char *tbl > } > > /* > - * Decode base64 encoded string. Stops on '\0'. > + * Decode a base64 data stream as per rfc1521. Stops on '\0'. > + * > + * Note that the rfc states that non base64 chars are to be ignored. > + * Since the decode always results in a shorter size than the input, > + * it is OK to pass the input arg as an output arg. > * > * Returns: pointer to the undecoded part of source. > * If points to '\0', then the source was fully decoded. > diff --git a/networking/httpd.c b/networking/httpd.c > index 2946b2a5..f819b811 100644 > --- a/networking/httpd.c > +++ b/networking/httpd.c > @@ -1007,6 +1007,16 @@ static char *encodeString(const char *string) > #endif > > #if ENABLE_FEATURE_HTTPD_BASIC_AUTH > +#if ENABLE_BASE64 || ENABLE_UUDECODE > +/* Call decode_base64() from uuencode.c */ > +static void decodeBase64(char *Data) > +{ > + char *eptr = Data; > + decode_base64(&eptr, Data); > + *eptr = '\0'; > +} > +#else > +/* This version is smaller than decode_base64() */ > /* > * Decode a base64 data stream as per rfc1521. > * Note that the rfc states that non base64 chars are to be ignored. > @@ -1052,6 +1062,7 @@ static void decodeBase64(char *Data) > *Data = '\0'; > } > #endif > +#endif > > /* > * Create a listen server socket on the designated port. > -- > 2.28.0 > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox >
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
