#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[] = "" "Types: deb\n" "URIs: http://ftp.debian.org/debian\n" "Suites: stable\n" "Sections: main\n" "Description: short\n" " long description that can be very long\n" "\n" "Types: deb\n" "URIs: http://ftp.debian.org/debian\n" "Suites: unstable\n" "Sections: 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; }