Date: Tue, 15 Jun 2010 03:54:13 GMT From: Julien Laffaye <jlaffaye@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 179633 for review Message-ID: <201006150354.o5F3sDl2034495@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@179633?ac=10 Change 179633 by jlaffaye@jlaffaye-chulak on 2010/06/15 03:54:11 API cleanup: switch unpack_to_buffer return type from size_t to ssize_t. The function now makes the difference between error and unpacking a file without data. Suggested by: gcooper Affected files ... .. //depot/projects/soc2010/pkg_complete/lib/libpkg/file.c#7 edit .. //depot/projects/soc2010/pkg_complete/lib/libpkg/pkg.h#6 edit .. //depot/projects/soc2010/pkg_complete/lib/libpkg/plist.c#5 edit .. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#3 edit Differences ... ==== //depot/projects/soc2010/pkg_complete/lib/libpkg/file.c#7 (text+ko) ==== @@ -335,9 +335,10 @@ * Unpack a single file, denoted by file, to a buffer. It proceeds to read it * into the buffer which will need to be freed by the user at a later date. * - * Returns the size of the buffer if successful, or returns 0 on failure. + * Returns the size of the buffer if successful, or returns -1 on failure. + * The buffer is only allocated when the size of the file is superior to 0. */ -size_t +ssize_t unpack_to_buffer(const char *pkg, const char *file, char **buf) { @@ -345,8 +346,8 @@ struct archive_entry *archive_entry; Boolean found_match = FALSE; - size_t buf_size = 0; - size_t r; + ssize_t buf_size = -1; + ssize_t r; const char *entry_pathname = NULL; const char *error = NULL; @@ -397,15 +398,13 @@ buf_size = archive_entry_size(archive_entry); - if (buf_size == 0) - errno = EINVAL; - else { + if (buf_size != 0) { *buf = malloc(buf_size+1); if (*buf == NULL) { error = strerror(errno); - buf_size = 0; + buf_size = -1; } else { r = archive_read_data(archive, @@ -415,7 +414,8 @@ if (r != buf_size) { error = archive_error_string(archive); - buf_size = 0; + buf_size = -1; + free(*buf); } } ==== //depot/projects/soc2010/pkg_complete/lib/libpkg/pkg.h#6 (text+ko) ==== @@ -178,7 +178,7 @@ ssize_t write_file(const char *, const char *); int move_file(const char *, const char *, const char *); int delete_hierarchy(const char *, Boolean, Boolean); -size_t unpack_to_buffer(const char *, const char *, char **); +ssize_t unpack_to_buffer(const char *, const char *, char **); int unpack_to_disk(const char *, const char *); int unpack_to_fd(const char *, const char *); void format_cmd(char *, int, const char *, const char *, @@ -199,7 +199,7 @@ const char *name); int write_plist(Package *, FILE *); int read_plist(Package *, int); -int read_plist_from_buffer(Package *, char *, off_t); +int read_plist_from_buffer(Package *, char *, size_t); int plist_cmd(const char *, char **); int delete_package(Boolean, Boolean, Package *); Boolean make_preserve_name(char *, int, const char *, const char *); ==== //depot/projects/soc2010/pkg_complete/lib/libpkg/plist.c#5 (text+ko) ==== @@ -321,7 +321,7 @@ * The buffer is not modified nor is free'ed */ int -read_plist_from_buffer(Package *pkg, char *plist_buf, off_t plist_size) +read_plist_from_buffer(Package *pkg, char *plist_buf, size_t plist_size) { char *cmd_buf = NULL; char *cp; ==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#3 (text+ko) ==== @@ -89,7 +89,7 @@ Package pkg; PackingList p; - size_t plist_size; + ssize_t plist_size; size_t i; char *plist_buf; char fname[PATH_MAX]; @@ -97,7 +97,7 @@ short found = 0; if ((plist_size = unpack_to_buffer(pkgname, CONTENTS_FNAME, &plist_buf)) - == 0) { + == -1) { warn("unpack_to_buffer()"); err = 1; } else {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006150354.o5F3sDl2034495>
