int main(int argc, char *argv[]) { int opt; size_t i, j, n = 16, *xc; char c, *s; char *salt = "pepper"; unsigned char *key; char *flags = "dluyn:"; char *cc[4] = { "0123456789", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "!#$%&()*+,-./:;<=>?@[]^_{}~" }; progname = strbsnm(argv[0]); while ((opt = getopt(argc, argv, flags)) != -1) { switch (opt) { case 'd': case 'l': case 'u': case 'y': cc[strchr(flags, opt) - flags] = ""; break; case 'n': n = strtoul(optarg, &s, 0); if (*s != '\0') error(EXIT_FAILURE, 0, "%s: not a number", optarg); break; } } for (i = 0; i < ARRLEN(cc); i++) bputs(&ac, cc[i], strlen(cc[i])); bputs(&ac, "", 1); if (optind < argc) bputs(&en, argv[optind], strlen(argv[optind])); else prompt(&en, "Entity: ", 0); prompt(&pw, "Master password: "******"", 1); xc = erealloc(NULL, n * sizeof(*xc)); for (i = 0; i < n; i++) xc[i] = -1; for (i = j = 0; i < ARRLEN(cc); i++) { if (*cc[i] != '\0') { j += 1; xc[n-j] = i; } } key = erealloc(NULL, n); PKCS5_PBKDF2_HMAC(pw.d, pw.n, (unsigned char*) salt, strlen(salt), 100000, EVP_sha512(), n, key); for (i = 0; i < n; i++) { s = xc[i] != -1 && *cc[xc[i]] != '\0' ? cc[xc[i]] : ac.d; c = s[key[i] % strlen(s)]; printf("%c", c); for (j = 0; j < ARRLEN(cc); j++) { if (strchr(cc[j], c) != NULL) cc[j] = ""; } } printf("\n"); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int b, s; float f; char *end; unsigned int h, i; unsigned char *d; progname = strbsnm(argv[0]); for (i = 1; i < argc; i++) { f = strtof(argv[i], &end); if (*end != '\0') { error(0, 0, "%s: not a float", argv[i]); continue; } d = (unsigned char*) &f; h = 0; for (s = sizeof(f) * 8 - 8; s >= 0; s -= 8) h |= *d++ << s; for (b = sizeof(f) * 8 - 1; b >= 0; b--) printf("%u%s", h >> b & 0x1, b == 31 || b == 23 ? " " : ""); printf(" %08x %s\n", h, argv[i]); } return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int opt; char *cmd, *opts; progname = strbsnm(argv[0]); if (argc < 2) error(EXIT_FAILURE, 0, "missing FILE"); cmd = strbsnm(argv[1]); pusharg("/bin/rc"); pusharg(argv[1]); opts = optstr(argv[1]); opterr = 0; argc--, argv++; while ((opt = getopt(argc, argv, opts)) != -1) { switch (opt) { case '?': progname = cmd; error(EXIT_FAILURE, 0, "unknown option: -%c", optopt); case ':': progname = cmd; error(EXIT_FAILURE, 0, "option requires argument: -%c", optopt); default: pusharg(optctos(opt)); if (strchr(opts, opt)[1] == ':') pusharg(optarg); } } pusharg("--"); while (optind < argc) pusharg(argv[optind++]); pusharg(NULL); setenv("cmd", cmd, 1); setenv("fn_err", "{echo >[1=2] $cmd^: $*; exit 1}", 1); setenv("fn_usage", "{echo usage: $cmd $usage}", 1); execvp(arg.v[0], arg.v); error(EXIT_FAILURE, errno, "exec: %s", arg.v[0]); return 0; }