/* FIXME: This code does not work for very long lines. */
while (!feof (in))
{
- s = fgets (buf, DIM (buf) - 1, in);
+ /* give space for trim_string \r\n */
+ s = fgets (buf, DIM (buf) - 3, in);
if (!s)
break;
- _cdk_trim_string (buf, 1);
+ _cdk_trim_string (buf);
+ strcat (buf, "\r\n");
fwrite (buf, 1, strlen (buf), out);
}
s = fgets (buf, DIM (buf) - 1, in);
if (!s)
break;
- _cdk_trim_string (buf, 0);
+ _cdk_trim_string (buf);
fwrite (buf, 1, strlen (buf), out);
fwrite (tfx->lf, 1, strlen (tfx->lf), out);
}
/*-- sign.c --*/
int _cdk_sig_hash_for (cdk_pkt_pubkey_t pk);
-void _cdk_trim_string (char *s, int canon);
+void _cdk_trim_string (char *s);
cdk_error_t _cdk_sig_create (cdk_pkt_pubkey_t pk, cdk_pkt_signature_t sig);
cdk_error_t _cdk_sig_complete (cdk_pkt_signature_t sig, cdk_pkt_seckey_t sk,
digest_hd_st * hd);
/* Remove all trailing white spaces from the string. */
void
-_cdk_trim_string (char *s, int canon)
+_cdk_trim_string (char *s)
{
+int len = strlen(s);
while (s && *s &&
- (s[strlen (s) - 1] == '\t' ||
- s[strlen (s) - 1] == '\r' ||
- s[strlen (s) - 1] == '\n' || s[strlen (s) - 1] == ' '))
- s[strlen (s) - 1] = '\0';
- if (canon)
- strcat (s, "\r\n");
+ (s[len - 1] == '\t' ||
+ s[len - 1] == '\r' ||
+ s[len - 1] == '\n' || s[len - 1] == ' '))
+ s[len - 1] = '\0';
}