]> the.earth.li Git - onak.git/blobdiff - onak.c
cscvs to tla changeset 128
[onak.git] / onak.c
diff --git a/onak.c b/onak.c
index 7748ed2c674657e25b9c4f26e14e9ca2a2664cb4..3a4c4e8d01ecc3ac952e69dbdfcdb68fdc0f76a1 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.20 2004/05/27 01:25:37 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,34 @@ 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)) {
+                               struct openpgp_packet *photo = NULL;
+                               FILE *photof = NULL;
+                               photo = getphoto(keys, 0);
+                               if (photo != NULL) {
+                                       photof = fopen("keyphoto.jpg", "w");
+                                       fwrite(photo->data+19,
+                                                       1,
+                                                       (photo->length - 19),
+                                                       photof);
+                                       fclose(photof);
+                               }
+                               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])) {