You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.5 KiB

--- netkit-rsh-0.17/rlogind/sockconv.c.linefeed 1999-10-02 23:50:52.000000000 +0200
+++ netkit-rsh-0.17/rlogind/sockconv.c 2006-07-17 14:30:50.000000000 +0200
@@ -86,6 +86,35 @@
return (text);
}
+/* conver \n to \r\n and also terminate string by \r\n */
+static void my_fputs(char *str, FILE *out)
+{
+ char *p = str, *last = str;
+
+ while(p && *p) {
+ if ((p=strchr(p, '\n')) && (p==str || *(p-1)!='\r')) {
+ /* convert \n to \n\r */
+ fwrite((const void *) last, 1, p-last, out);
+ fputs("\r\n", out);
+ p++;
+ last = p;
+ }
+ else if (p && *(p+1))
+ /* \r\n already in strimg, continue... */
+ p++;
+ else {
+ /* write the rest of string */
+ int len = strlen(str);
+
+ fwrite((const void *) last, 1, len-(last-str), out);
+ if (*(str+(len-1)) != '\n')
+ fputs("\r\n", out); /* terminate output */
+ break;
+ }
+ }
+}
+
+
static void drop_reply(struct pam_response *reply, int replies)
{
int i;
@@ -126,16 +155,15 @@
}
break;
case PAM_ERROR_MSG:
- fprintf(stderr,"%s\n",msgm[replies]->msg);
+ my_fputs(msgm[replies]->msg, stderr);
string = NULL;
-
break;
case PAM_TEXT_INFO:
- fprintf(stderr,"%s\n",msgm[replies]->msg);
+ my_fputs(msgm[replies]->msg, stderr);
string = NULL;
break;
default:
- fprintf(stderr, "erroneous conversation (%d)\n"
+ fprintf(stderr, "erroneous conversation (%d)\r\n"
,msgm[replies]->msg_style);
drop_reply(reply,replies);
return (PAM_CONV_ERR);