]> the.earth.li Git - onak.git/blobdiff - onak.c
cscvs to tla changeset 136
[onak.git] / onak.c
diff --git a/onak.c b/onak.c
index 7748ed2c674657e25b9c4f26e14e9ca2a2664cb4..2a0376e4dbcdfa4a54a6427457912564c77408c1 100644 (file)
--- a/onak.c
+++ b/onak.c
@@ -7,7 +7,7 @@
  * 
  * Copyright 2002 Project Purple
  *
- * $Id: onak.c,v 1.18 2003/10/15 21:15:21 noodles Exp $
+ * $Id: onak.c,v 1.21 2004/05/27 21:58:18 noodles Exp $
  */
 
 #include <stdio.h>
@@ -26,6 +26,7 @@
 #include "merge.h"
 #include "onak-conf.h"
 #include "parsekey.h"
+#include "photoid.h"
 
 void find_keys(char *search, uint64_t keyid, bool ishex,
                bool fingerprint, bool exact, bool verbose)
@@ -111,7 +112,7 @@ int main(int argc, char *argv[])
        if ((argc - optind) < 1) {
                usage();
        } else if (!strcmp("dump", argv[optind])) {
-               initdb();
+               initdb(true);
                dumpdb("keydump");
                cleanupdb();
        } else if (!strcmp("add", argv[optind])) {
@@ -130,7 +131,7 @@ int main(int argc, char *argv[])
                        logthing(LOGTHING_INFO, "Finished reading %d keys.",
                                        result);
 
-                       initdb();
+                       initdb(false);
                        logthing(LOGTHING_NOTICE, "Got %d new keys.",
                                        update_keys(&keys));
                        if (keys != NULL && update) {
@@ -166,13 +167,32 @@ int main(int argc, char *argv[])
                                ishex = true;
                        }
                }
-               initdb();
+               initdb(false);
                if (!strcmp("index", argv[optind])) {
                        find_keys(search, keyid, ishex, fingerprint,
                                        false, false);
                } else if (!strcmp("vindex", argv[optind])) {
                        find_keys(search, keyid, ishex, fingerprint,
                                        false, true);
+               } else if (!strcmp("getphoto", argv[optind])) {
+                       if (!ishex) {
+                               puts("Can't get a key on uid text."
+                                       " You must supply a keyid.");
+                       } else if (fetch_key(keyid, &keys, false)) {
+                               unsigned char *photo = NULL;
+                               size_t         length = 0;
+
+                               if (getphoto(keys, 0, &photo, &length)) {
+                                       fwrite(photo,
+                                               1,
+                                               length,
+                                               stdout);
+                               }
+                               free_publickey(keys);
+                               keys = NULL;
+                       } else {
+                               puts("Key not found");
+                       }
                } else if (!strcmp("delete", argv[optind])) {
                        delete_key(getfullkeyid(keyid), false);
                } else if (!strcmp("get", argv[optind])) {