[BusyBox-cvs] busybox/libbb safe_write.c, NONE, 1.1 full_write.c, 1.4, 1.5

Erik Andersen andersen at busybox.net
Thu Oct 9 08:35:45 UTC 2003


Update of /var/cvs/busybox/libbb
In directory winder:/tmp/cvs-serv8450/libbb

Modified Files:
	full_write.c 
Added Files:
	safe_write.c 
Log Message:
We did not have a safe_write, which is the analog to safe_read.  Convert
full_write to use safe_write internally, which is needed to guarantee proper
behavior, i.e. when writing to a pipe.


--- NEW FILE: safe_write.c ---
/* vi: set sw=4 ts=4: */
/*
 * Utility routines.
 *
 * Copyright (C) 1999-2003 by Erik Andersen <andersen at codepoet.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include "libbb.h"



ssize_t safe_write(int fd, void *buf, size_t count)
{
	ssize_t n;

	do {
		n = write(fd, buf, count);
	} while (n < 0 && errno == EINTR);

	return n;
}


/* END CODE */
/*
Local Variables:
c-file-style: "linux"
c-basic-offset: 4
tab-width: 4
End:
*/

Index: full_write.c
===================================================================
RCS file: /var/cvs/busybox/libbb/full_write.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- full_write.c	14 Jul 2003 21:20:55 -0000	1.4
+++ full_write.c	9 Oct 2003 08:35:42 -0000	1.5
@@ -36,7 +36,7 @@
 	total = 0;
 
 	while (len > 0) {
-		cc = write(fd, buf, len);
+		cc = safe_write(fd, buf, len);
 
 		if (cc < 0)
 			return cc;		/* write() returns -1 on failure. */




More information about the busybox-cvs mailing list