base/dispatch-x86ish.S: Fix build failure from incompetent cherry-pick.
[catacomb] / key / key-io.c
index df7cd53..5a7ce5c 100644 (file)
@@ -139,7 +139,7 @@ static int insert(key_file *f, key *k)
  * Use:                Translates an expiry or deletion time.
  */
 
-time_t exptime(const char *p)
+static time_t exptime(const char *p)
 {
   size_t sz = strlen(p);
   if (strncmp(p, "expired", sz) == 0)
@@ -352,7 +352,7 @@ int key_extract(key_file *f, key *k, FILE *fp, const key_filter *kf)
 
   key_fulltag(k, &d);
   DPUTC(&d, ' ');
-  key_write(k->k, &d, kf);
+  if (!key_write(k->k, &d, kf)) dstr_puts(&d, "struct:[]");
   DPUTC(&d, ' ');
   dstr_write(&d, fp);
   DRESET(&d);
@@ -439,7 +439,7 @@ int key_open(key_file *f, const char *file, unsigned how,
 
   if ((how & KOPEN_MASK) == KOPEN_READ) {
     f->f &= ~KF_WRITE;
-    fclose(f->fp);
+    if (f->fp) fclose(f->fp);
     f->fp = 0;
   }
 
@@ -552,12 +552,12 @@ int key_new(key_file *f, uint32 id, const char *type, time_t exp, key **kk)
     k->exp = k->del = exp;
     k->c = 0;
     k->type = (char *)type; /* temporarily */
-    sym_create(&k->a);
     if ((e = insert(f, k)) != 0)
       DESTROY(k);
     else {
       k->k = key_newstring(KCAT_SHARE, "<unset>");
       k->type = xstrdup(type);
+      sym_create(&k->a);
       *kk = k;
       f->f |= KF_MODIFIED;
     }