char *pubring = mutt_quote_filename(*pgp->pubring); char *secring = mutt_quote_filename(*pgp->secring); char *binary  = mutt_quote_filename(*pgp->binary); char *_fname  = mutt_quote_filename(fname);
pid_t pgp_v3_invoke_encrypt(struct pgp_vinfo *pgp,			    FILE **pgpin, FILE **pgpout, FILE **pgperr,			    int pgpinfd, int pgpoutfd, int pgperrfd,			    const char *fname, const char *uids, int sign){  char cmd[HUGE_STRING];  char tmpcmd[HUGE_STRING];  char *cp;  char *keylist;  snprintf(cmd, sizeof(cmd),	   "%scat %s%s | %se +language=%s +pubring=%s +secring=%s +verbose=0 %s +batchmode +nobatchinvalidkeys=off -aft%s %s%s",	   sign ? "PGPPASSFD=0; export PGPPASSFD; " : "",	   sign ? "- " : "",	   fname,	   NONULL (*pgp->binary), NONULL (*pgp->language), NONULL (*pgp->pubring), NONULL (*pgp->secring), 	   option(OPTPGPENCRYPTSELF) ? "+encrypttoself" : "",	   sign ? "s" : "",	   sign && PgpSignAs ? "-u " : "",	   sign && PgpSignAs ? PgpSignAs : "");    keylist = safe_strdup(uids);    for(cp = strtok(keylist, " "); cp ; cp = strtok(NULL, " "))  {    snprintf(tmpcmd, sizeof(tmpcmd), "%s -r %s", 	     cmd, cp);    strcpy(cmd, tmpcmd);  }  safe_free((void **) &keylist);    return mutt_create_filter_fd(cmd, pgpin, pgpout, pgperr, 			       pgpinfd, pgpoutfd, pgperrfd);}