From 57bf668d118804060cee998408bdfbfb5512e670 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Wed, 9 May 2007 21:27:15 +0000 Subject: [PATCH] cryptpw: size reduction function old new delta cryptpw_main 198 140 -58 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-58) Total: -58 bytes --- loginutils/cryptpw.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/loginutils/cryptpw.c b/loginutils/cryptpw.c index d4bcad3e0..54babdc80 100644 --- a/loginutils/cryptpw.c +++ b/loginutils/cryptpw.c @@ -3,7 +3,6 @@ * cryptpw.c * * Cooked from passwd.c by Thomas Lundquist - * */ #include "busybox.h" @@ -11,27 +10,19 @@ int cryptpw_main(int argc, char **argv); int cryptpw_main(int argc, char **argv) { - char *clear; - char salt[sizeof("$N$XXXXXXXX")]; /* "$N$XXXXXXXX" or "XX" */ - const char *opt_a = "md5"; - - getopt32(argc, argv, "a:", &opt_a); - /* move past the commandline options */ - /*argc -= optind; - unused */ - argv += optind; + char salt[sizeof("$N$XXXXXXXX")]; - crypt_make_salt(salt, 1); /* des */ - if (strcasecmp(opt_a, "md5") == 0) { + if (!getopt32(argc, argv, "a:", NULL) || argv[optind - 1][0] != 'd') { strcpy(salt, "$1$"); - crypt_make_salt(salt + 3, 4); - } else if (strcasecmp(opt_a, "des") != 0) { - bb_show_usage(); + /* Too ugly, and needs even more magic to handle endianness: */ + //((uint32_t*)&salt)[0] = '$' + '1'*0x100 + '$'*0x10000; + /* Hope one day gcc will do it itself (inlining strcpy) */ + crypt_make_salt(salt + 3, 4); /* md5 */ + } else { + crypt_make_salt(salt, 1); /* des */ } - clear = argv[0]; - if (!clear) - clear = xmalloc_getline(stdin); + puts(pw_encrypt(argv[optind] ? argv[optind] : xmalloc_getline(stdin), salt)); - puts(pw_encrypt(clear, salt)); return 0; } -- 2.25.1