#include #include #include "assert.h" #include #include #include char *tempfile = NULL; int tempfile_fd = -1; void remove_tmpfile(void) { if (tempfile_fd > 0) close(tempfile_fd); if (tempfile != NULL) { unlink(tempfile); free(tempfile); } } int main(int argc, char *argv[]) { const char contents[] = "" "Type: deb\n" "URL: http://ftp.debian.org/debian\n" "Dist: stable\n" "Section: main\n" "Comment: Some random string\n" " that can be very long\n" "\n" "Type: deb\n" "URL: http://ftp.debian.org/debian\n" "Dist: unstable\n" "Section: main non-free\n" ; FileFd fd; atexit(remove_tmpfile); tempfile = strdup("apt-test.XXXXXXXX"); tempfile_fd = mkstemp(tempfile); /* (Re-)Open (as FileFd), write and seek to start of the temp file */ equals(fd.OpenDescriptor(tempfile_fd, FileFd::ReadWrite), true); equals(fd.Write(contents, strlen(contents)), true); equals(fd.Seek(0), true); pkgSourceList sources(tempfile); equals(sources.size(), 2); /* clean up handled by atexit handler, so just return here */ return 0; }