PERFORCE change 179001 for review
Garrett Cooper
gcooper at FreeBSD.org
Mon May 31 05:37:00 UTC 2010
http://p4web.freebsd.org/@@179001?ac=10
Change 179001 by gcooper at gcooper-bayonetta on 2010/05/31 05:36:19
size_t is unsigned; off_t isn't. Switch to off_t in write_file.
Drop the buffered I/O through stdio.
Affected files ...
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#20 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pkg.h#13 edit
Differences ...
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#20 (text+ko) ====
@@ -269,32 +269,29 @@
* Return the number of bytes successfully written out to str or -1 on
* failure.
*/
-size_t
+off_t
write_file(const char *name, const char *str)
{
- FILE *fp = NULL;
+ int fd = -1;
+ int serrno;
off_t written_len = -1;
size_t len;
- int serrno;
errno = 0;
- fp = fopen(name, "w");
- if (fp != NULL) {
+ len = strlen(str);
- len = strlen(str);
- written_len = fwrite(str, 1, len, fp);
+ if ((fd = open(name, O_WRONLY | O_CREAT)) != -1) {
- if (fp != NULL) {
- serrno = errno;
- (void) fclose(fp);
- if (serrno != 0)
- errno = serrno;
- }
+ written_len = write(fd, str, len);
+ serrno = errno;
+ (void) close(fd);
+ if (serrno != 0)
+ errno = serrno;
}
- return (size_t) (errno == 0 && written_len > 0 ? written_len : -1);
+ return (off_t) (errno == 0 && written_len > 0 ? written_len : -1);
}
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pkg.h#13 (text+ko) ====
@@ -175,7 +175,7 @@
const char *fileGetURL(const char *, const char *, int);
char *fileFindByPath(const char *, const char *);
char *fileGetContents(const char *);
-size_t write_file(const char *, const char *);
+off_t write_file(const char *, const char *);
int move_file(const char *, const char *, const char *);
int delete_hierarchy(const char *, Boolean, Boolean);
char* unpack_to_buffer(const char *, const char *);
More information about the p4-projects
mailing list