X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=onak.c;h=903c8f0f7c16b56e1168e1e1a1f302be1f24265f;hb=c7f25997d3d36ac30b26f663e1d257e4625662a1;hp=311b44f9b16d9e67a741d04d7666280886e851e1;hpb=3b5b9db0bc2dbe93b3b79e722997606c71ecafb9;p=onak.git diff --git a/onak.c b/onak.c index 311b44f..903c8f0 100644 --- a/onak.c +++ b/onak.c @@ -6,6 +6,8 @@ * Jonathan McDowell * * Copyright 2002 Project Purple + * + * $Id: onak.c,v 1.15 2003/09/28 20:33:34 noodles Exp $ */ #include @@ -26,13 +28,15 @@ int stdin_getchar(void *ctx, size_t count, unsigned char *c) { - int ic; + int ic = 0; - do { + while ((count > 0) && (ic != EOF)) { ic = getchar(); *c = ic; c++; - } while ((ic != EOF) && (--count > 0)); + count--; + } + return (ic == EOF); } @@ -78,6 +82,8 @@ void usage(void) { puts("\tadd - read armored OpenPGP keys from stdin and add to the" " keyserver"); puts("\tdelete - delete a given key from the keyserver"); + puts("\tdump - dump all the keys from the keyserver to a file or" + " files\n\t starting keydump*"); puts("\tget - retrieves the key requested from the keyserver"); puts("\tindex - search for a key and list it"); puts("\tvindex - search for a key and list it and its signatures"); @@ -189,11 +195,15 @@ int main(int argc, char *argv[]) } else if (!strcmp("delete", argv[optind])) { delete_key(getfullkeyid(keyid), false); } else if (!strcmp("get", argv[optind])) { - if (fetch_key(keyid, &keys, false)) { + if (!ishex) { + puts("Can't get a key on uid text." + " You must supply a keyid."); + } else if (fetch_key(keyid, &keys, false)) { logthing(LOGTHING_INFO, "Got key."); flatten_publickey(keys, &packets, &list_end); + free_publickey(keys); armor_openpgp_stream(stdout_putchar, NULL, packets);