gpg: Print a warning if no command has been given.
[gnupg.git] / g10 / keyring.c
index 0611b2e..328290e 100644 (file)
@@ -15,7 +15,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -928,13 +928,27 @@ compare_name (int mode, const char *name, const char *uid, size_t uidlen)
     else if (   mode == KEYDB_SEARCH_MODE_MAIL
              || mode == KEYDB_SEARCH_MODE_MAILSUB
              || mode == KEYDB_SEARCH_MODE_MAILEND) {
+        int have_angles = 1;
        for (i=0, s= uid; i < uidlen && *s != '<'; s++, i++)
            ;
+       if (i == uidlen)
+         {
+           /* The UID is a plain addr-spec (cf. RFC2822 section 4.3).  */
+           have_angles = 0;
+           s = uid;
+           i = 0;
+         }
        if (i < uidlen)  {
-           /* skip opening delim and one char and look for the closing one*/
-           s++; i++;
-           for (se=s+1, i++; i < uidlen && *se != '>'; se++, i++)
-               ;
+           if (have_angles)
+             {
+               /* skip opening delim and one char and look for the closing one*/
+               s++; i++;
+               for (se=s+1, i++; i < uidlen && *se != '>'; se++, i++)
+                 ;
+             }
+           else
+             se = s + uidlen;
+
            if (i < uidlen) {
                i = se - s;
                if (mode == KEYDB_SEARCH_MODE_MAIL) {
@@ -1338,6 +1352,7 @@ static int
 rename_tmp_file (const char *bakfname, const char *tmpfname, const char *fname)
 {
   int rc = 0;
+  int block = 0;
 
   /* Invalidate close caches.  */
   if (iobuf_ioctl (NULL, IOBUF_IOCTL_INVALIDATE_CACHE, 0, (char*)tmpfname ))
@@ -1349,12 +1364,18 @@ rename_tmp_file (const char *bakfname, const char *tmpfname, const char *fname)
   iobuf_ioctl (NULL, IOBUF_IOCTL_INVALIDATE_CACHE, 0, (char*)fname );
 
   /* First make a backup file. */
-  rc = keybox_file_rename (fname, bakfname);
+  block = 1;
+  rc = gnupg_rename_file (fname, bakfname, &block);
   if (rc)
     goto fail;
 
   /* then rename the file */
-  rc = keybox_file_rename (tmpfname, fname);
+  rc = gnupg_rename_file (tmpfname, fname, NULL);
+  if (block)
+    {
+      gnupg_unblock_all_signals ();
+      block = 0;
+    }
   if (rc)
     {
       register_secured_file (fname);
@@ -1379,6 +1400,8 @@ rename_tmp_file (const char *bakfname, const char *tmpfname, const char *fname)
   return 0;
 
  fail:
+  if (block)
+    gnupg_unblock_all_signals ();
   return rc;
 }