Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37559416
en ru br
Репозитории ALT
S:0.17-alt5.1
4.1: 0.17-alt2
4.0: 0.17-ipl9mdk
3.0: 0.17-ipl9mdk
www.altlinux.org/Changes

Группа :: Сети/Удалённый доступ
Пакет: rsh

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: netkit-rsh-0.10-stdarg.patch
Скачать


--- netkit-rsh-0.10/rcp/rcp.c	1999-04-18 05:16:49-04	1.1
+++ netkit-rsh-0.10/rcp/rcp.c	1999-04-18 05:40:52-04
@@ -836,19 +836,33 @@
 error(const char *fmt, ...)
 {
 	static FILE *fp;
-	va_list ap;
-
-	va_start(ap, fmt);
+	char buf[1000];
 
 	++errs;
 	if (!fp && !(fp = fdopen(rem, "w")))
 		return;
-	fprintf(fp, "%c", 0x01);
-	vfprintf(fp, fmt, ap);
+	
+	/* (fmt,...) might need to go to two streams.
+	 *
+	 * In { va_start ; vfprintf ; vfprintf ; va_end }, second
+	 * vfprintf didn't restart (ie: vfprintf affects ap) (glibc)
+	 *
+	 * Is { va_start ; vfprintf ; va_end} * 2 even allowed?
+	 *
+	 * => Dump (fmt,...) to buffer.  */
+	
+	{
+	    va_list ap;
+	    va_start(ap, fmt);
+	    vsnprintf(buf, sizeof(buf), fmt, ap);
+	    buf[sizeof(buf)-1] = 0;
+	    va_end(ap);
+	}
+	
+	fprintf(fp, "%c%s", 0x01, buf);
 	fflush(fp);
-	if (!iamremote)	vfprintf(stderr, fmt, ap);
 
-	va_end(ap);
+	if (!iamremote)	fputs(buf, stderr);
 }
 
 static void 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin