Blob Blame History Raw
--- 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);