Module Name: src Committed By: jmmv Date: Fri Jun 4 08:32:15 UTC 2010
Modified Files: src/external/bsd/atf/dist/atf-c: dynstr.c fs.c tc.c src/external/bsd/atf/dist/atf-version: atf-version.cpp Removed Files: src/external/bsd/atf/dist/atf-c: object.c object.h src/external/bsd/atf/dist/atf-compile: atf-compile.1 atf-compile.cpp atf-host-compile.sh src/external/bsd/atf/dist/atf-run: atf-run.hooks src/external/bsd/atf/dist/atf-sh: atf.footer.subr atf.header.subr atf.init.subr src/external/bsd/atf/dist/data: atf-c++.pc.in atf-c.pc.in atf-run.hooks tests-results.css tests-results.dtd tests-results.xsl src/external/bsd/atf/dist/doc: roadmap.xml src/external/bsd/atf/dist/doc/standalone: roadmap.html src/external/bsd/atf/dist/doc/text: roadmap.txt src/external/bsd/atf/dist/tests/atf/atf-c: d_include_object_h.c src/external/bsd/atf/dist/tests/atf/atf-compile: Atffile h_mode.cpp t_integration.sh src/external/bsd/atf/dist/tests/atf/data: Atffile t_pkg_config.sh Log Message: Fix import conflicts for atf 0.9. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/bsd/atf/dist/atf-c/dynstr.c \ src/external/bsd/atf/dist/atf-c/fs.c cvs rdiff -u -r1.1.1.2 -r0 src/external/bsd/atf/dist/atf-c/object.c \ src/external/bsd/atf/dist/atf-c/object.h cvs rdiff -u -r1.4 -r1.5 src/external/bsd/atf/dist/atf-c/tc.c cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/atf/dist/atf-compile/atf-compile.1 \ src/external/bsd/atf/dist/atf-compile/atf-compile.cpp \ src/external/bsd/atf/dist/atf-compile/atf-host-compile.sh cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/atf/dist/atf-run/atf-run.hooks cvs rdiff -u -r1.2 -r0 src/external/bsd/atf/dist/atf-sh/atf.footer.subr cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/atf/dist/atf-sh/atf.header.subr \ src/external/bsd/atf/dist/atf-sh/atf.init.subr cvs rdiff -u -r1.2 -r1.3 \ src/external/bsd/atf/dist/atf-version/atf-version.cpp cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/atf/dist/data/atf-c++.pc.in \ src/external/bsd/atf/dist/data/atf-c.pc.in \ src/external/bsd/atf/dist/data/atf-run.hooks \ src/external/bsd/atf/dist/data/tests-results.css \ src/external/bsd/atf/dist/data/tests-results.dtd \ src/external/bsd/atf/dist/data/tests-results.xsl cvs rdiff -u -r1.1.1.2 -r0 src/external/bsd/atf/dist/doc/roadmap.xml cvs rdiff -u -r1.1.1.2 -r0 \ src/external/bsd/atf/dist/doc/standalone/roadmap.html cvs rdiff -u -r1.1.1.2 -r0 src/external/bsd/atf/dist/doc/text/roadmap.txt cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/atf/dist/tests/atf/atf-c/d_include_object_h.c cvs rdiff -u -r1.1.1.1 -r0 \ src/external/bsd/atf/dist/tests/atf/atf-compile/Atffile \ src/external/bsd/atf/dist/tests/atf/atf-compile/h_mode.cpp \ src/external/bsd/atf/dist/tests/atf/atf-compile/t_integration.sh cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/atf/dist/tests/atf/data/Atffile cvs rdiff -u -r1.1.1.2 -r0 \ src/external/bsd/atf/dist/tests/atf/data/t_pkg_config.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/atf/dist/atf-c/dynstr.c diff -u src/external/bsd/atf/dist/atf-c/dynstr.c:1.3 src/external/bsd/atf/dist/atf-c/dynstr.c:1.4 --- src/external/bsd/atf/dist/atf-c/dynstr.c:1.3 Tue Dec 22 13:36:56 2009 +++ src/external/bsd/atf/dist/atf-c/dynstr.c Fri Jun 4 08:32:14 2010 @@ -1,7 +1,7 @@ /* * Automated Testing Framework (atf) * - * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. + * Copyright (c) 2008, 2009, 2010 The NetBSD Foundation, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,6 +29,7 @@ #include <errno.h> #include <stdarg.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -121,22 +122,17 @@ { atf_error_t err; - atf_object_init(&ad->m_object); - ad->m_data = (char *)malloc(sizeof(char)); if (ad->m_data == NULL) { err = atf_no_memory_error(); - goto err_object; + goto out; } ad->m_data[0] = '\0'; ad->m_datasize = 1; ad->m_length = 0; err = atf_no_error(); - goto out; -err_object: - atf_object_fini(&ad->m_object); out: return err; } @@ -146,8 +142,6 @@ { atf_error_t err; - atf_object_init(&ad->m_object); - ad->m_datasize = strlen(fmt) + 1; ad->m_length = 0; @@ -159,7 +153,7 @@ ad->m_data = (char *)malloc(ad->m_datasize); if (ad->m_data == NULL) { err = atf_no_memory_error(); - goto err_object; + goto out; } va_copy(ap2, ap); @@ -168,7 +162,7 @@ if (ret < 0) { free(ad->m_data); err = atf_libc_error(errno, "Cannot format string"); - goto err_object; + goto out; } INV(ret >= 0); @@ -180,10 +174,6 @@ } while (ad->m_length >= ad->m_datasize); err = atf_no_error(); - goto out; - -err_object: - atf_object_fini(&ad->m_object); out: POST(atf_is_error(err) || ad->m_data != NULL); return err; @@ -207,17 +197,15 @@ { atf_error_t err; - atf_object_init(&ad->m_object); - if (memlen >= SIZE_MAX - 1) { err = atf_no_memory_error(); - goto err_object; + goto out; } ad->m_data = (char *)malloc(memlen + 1); if (ad->m_data == NULL) { err = atf_no_memory_error(); - goto err_object; + goto out; } ad->m_datasize = memlen + 1; @@ -226,10 +214,7 @@ ad->m_length = strlen(ad->m_data); INV(ad->m_length <= memlen); err = atf_no_error(); - goto out; -err_object: - atf_object_fini(&ad->m_object); out: return err; } @@ -239,28 +224,23 @@ { atf_error_t err; - atf_object_init(&ad->m_object); - if (len == SIZE_MAX) { err = atf_no_memory_error(); - goto err_object; + goto out; } ad->m_datasize = (len + 1) * sizeof(char); ad->m_data = (char *)malloc(ad->m_datasize); if (ad->m_data == NULL) { err = atf_no_memory_error(); - goto err_object; + goto out; } memset(ad->m_data, ch, len); ad->m_data[len] = '\0'; ad->m_length = len; err = atf_no_error(); - goto out; -err_object: - atf_object_fini(&ad->m_object); out: return err; } @@ -283,8 +263,6 @@ { atf_error_t err; - atf_object_copy(&dest->m_object, &src->m_object); - dest->m_data = (char *)malloc(src->m_datasize); if (dest->m_data == NULL) err = atf_no_memory_error(); @@ -303,15 +281,11 @@ { INV(ad->m_data != NULL); free(ad->m_data); - - atf_object_fini(&ad->m_object); } char * atf_dynstr_fini_disown(atf_dynstr_t *ad) { - atf_object_fini(&ad->m_object); - INV(ad->m_data != NULL); return ad->m_data; } Index: src/external/bsd/atf/dist/atf-c/fs.c diff -u src/external/bsd/atf/dist/atf-c/fs.c:1.3 src/external/bsd/atf/dist/atf-c/fs.c:1.4 --- src/external/bsd/atf/dist/atf-c/fs.c:1.3 Tue Dec 22 13:36:56 2009 +++ src/external/bsd/atf/dist/atf-c/fs.c Fri Jun 4 08:32:14 2010 @@ -1,7 +1,7 @@ /* * Automated Testing Framework (atf) * - * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc. + * Copyright (c) 2007, 2008, 2009, 2010 The NetBSD Foundation, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -67,6 +67,7 @@ static atf_error_t normalize(atf_dynstr_t *, char *); static atf_error_t normalize_ap(atf_dynstr_t *, const char *, va_list); static void replace_contents(atf_fs_path_t *, const char *); +static atf_error_t set_immutable(const char *, bool, bool *); static const char *stat_type_to_string(const int); /* --------------------------------------------------------------------- @@ -231,8 +232,13 @@ atf_error_t err; struct dirent *de; - if (erase && !(atf_fs_stat_get_mode(st) & S_IWUSR)) { - if (chmod(pstr, atf_fs_stat_get_mode(st) | S_IWUSR) == -1) { + if (erase && ((atf_fs_stat_get_mode(st) & S_IRWXU) != S_IRWXU)) { + bool unused_done; + err = set_immutable(pstr, false, &unused_done); + if (atf_is_error(err)) + goto out; + + if (chmod(pstr, atf_fs_stat_get_mode(st) | S_IRWXU) == -1) { err = atf_libc_error(errno, "Cannot grant write permissions " "to %s", pstr); goto out; @@ -465,6 +471,76 @@ } static +atf_error_t +set_immutable(const char *filename, bool value, bool *done) +{ + atf_error_t err; + +#if HAVE_CHFLAGS + struct stat sb; + + if (lstat(filename, &sb) == -1) { + err = atf_libc_error(errno, "lstat(%s) failed", filename); + goto out; + } + + unsigned long new_flags = sb.st_flags; + if (value) + new_flags |= UF_IMMUTABLE; + else + new_flags &= ~UF_IMMUTABLE; + + if (chflags(filename, new_flags) == -1) { + err = atf_libc_error(errno, "chflags(%s) failed", filename); + goto out; + } + + err = atf_no_error(); + *done = true; + +out: +#elif HAVE_CHATTR + if (atf_user_is_root()) { + /* TODO: This should use ioctl(2) instead of chattr(1), but it looks + * like that the API to set the immutable value is file-system specific. + * Investigate this later. */ + atf_fs_path_t prog; + + err = atf_fs_path_init_fmt(&prog, CHATTR); + if (!atf_is_error(err)) { + atf_process_status_t status; + const char *argv[4] = { "chattr", value ? "+i" : "-i", filename, + NULL }; + + err = atf_process_exec_array(&status, &prog, argv, NULL, NULL); + if (!atf_is_error(err)) { + if (!atf_process_status_exited(&status) || + atf_process_status_exitstatus(&status) != EXIT_SUCCESS) { + /* XXX: This is the wrong error type. */ + err = atf_libc_error(EINVAL, "Failed to exec chattr"); + } + + atf_process_status_fini(&status); + } + + atf_fs_path_fini(&prog); + } + *done = true; + } else { + /* Linux doesn't allow to set the immutability bit by non-root; just + * report it as an unsupported case. */ + err = atf_no_error(); + *done = false; + } +#else + err = atf_no_error(); + *done = false; +#endif + + return err; +} + +static const char * stat_type_to_string(const int type) { @@ -508,8 +584,6 @@ atf_error_t err; va_list ap2; - atf_object_init(&p->m_object); - va_copy(ap2, ap); err = normalize_ap(&p->m_data, fmt, ap2); va_end(ap2); @@ -533,8 +607,6 @@ atf_error_t atf_fs_path_copy(atf_fs_path_t *dest, const atf_fs_path_t *src) { - atf_object_copy(&dest->m_object, &src->m_object); - return atf_dynstr_copy(&dest->m_data, &src->m_data); } @@ -542,8 +614,6 @@ atf_fs_path_fini(atf_fs_path_t *p) { atf_dynstr_fini(&p->m_data); - - atf_object_fini(&p->m_object); } /* @@ -560,10 +630,8 @@ err = atf_fs_path_init_fmt(bp, "."); else if (endpos == 0) err = atf_fs_path_init_fmt(bp, "/"); - else { - atf_object_init(&bp->m_object); + else err = atf_dynstr_init_substr(&bp->m_data, &p->m_data, 0, endpos); - } #if defined(HAVE_CONST_DIRNAME) INV(atf_equal_dynstr_cstring(&bp->m_data, @@ -736,17 +804,12 @@ } } - if (!atf_is_error(err)) - atf_object_init(&st->m_object); - return err; } void atf_fs_stat_copy(atf_fs_stat_t *dest, const atf_fs_stat_t *src) { - atf_object_copy(&dest->m_object, &src->m_object); - dest->m_type = src->m_type; dest->m_sb = src->m_sb; } @@ -754,7 +817,6 @@ void atf_fs_stat_fini(atf_fs_stat_t *st) { - atf_object_fini(&st->m_object); } /* @@ -1057,6 +1119,12 @@ } atf_error_t +atf_fs_set_immutable(const atf_fs_path_t *p, bool value, bool *done) +{ + return set_immutable(atf_fs_path_cstring(p), value, done); +} + +atf_error_t atf_fs_unlink(const atf_fs_path_t *p) { atf_error_t err; Index: src/external/bsd/atf/dist/atf-c/tc.c diff -u src/external/bsd/atf/dist/atf-c/tc.c:1.4 src/external/bsd/atf/dist/atf-c/tc.c:1.5 --- src/external/bsd/atf/dist/atf-c/tc.c:1.4 Sat May 8 08:11:04 2010 +++ src/external/bsd/atf/dist/atf-c/tc.c Fri Jun 4 08:32:14 2010 @@ -82,8 +82,6 @@ { atf_error_t err; - atf_object_init(&tc->m_object); - tc->m_ident = ident; tc->m_head = head; tc->m_body = body; @@ -92,14 +90,15 @@ err = atf_map_init(&tc->m_vars); if (atf_is_error(err)) - goto err_object; + goto err; err = atf_tc_set_md_var(tc, "ident", ident); if (atf_is_error(err)) goto err_map; /* XXX Should the head be able to return error codes? */ - tc->m_head(tc); + if (tc->m_head != NULL) + tc->m_head(tc); if (strcmp(atf_tc_get_md_var(tc, "ident"), ident) != 0) atf_tc_fail("Test case head modified the read-only 'ident' " @@ -110,9 +109,7 @@ err_map: atf_map_fini(&tc->m_vars); -err_object: - atf_object_fini(&tc->m_object); - +err: return err; } @@ -128,8 +125,6 @@ atf_tc_fini(atf_tc_t *tc) { atf_map_fini(&tc->m_vars); - - atf_object_fini(&tc->m_object); } /* @@ -251,8 +246,6 @@ atf_error_t atf_tc_run(const atf_tc_t *tc, const atf_fs_path_t *resfile) { - atf_reset_exit_checks(); /* XXX */ - current_tc = tc; current_resfile = resfile; current_tc_fail_count = 0; @@ -457,8 +450,6 @@ { va_list ap; - atf_reset_exit_checks(); - va_start(ap, fmt); fail_internal(file, line, "Requirement failed", "", fmt, ap, tc_fail, atf_tc_fail); Index: src/external/bsd/atf/dist/atf-version/atf-version.cpp diff -u src/external/bsd/atf/dist/atf-version/atf-version.cpp:1.2 src/external/bsd/atf/dist/atf-version/atf-version.cpp:1.3 --- src/external/bsd/atf/dist/atf-version/atf-version.cpp:1.2 Fri May 14 15:30:39 2010 +++ src/external/bsd/atf/dist/atf-version/atf-version.cpp Fri Jun 4 08:32:14 2010 @@ -30,7 +30,6 @@ #if defined(HAVE_CONFIG_H) #include "bconfig.h" #endif -#include "revision.h" #include <cstdlib> #include <iostream> @@ -38,6 +37,8 @@ #include "atf-c++/application.hpp" #include "atf-c++/ui.hpp" +#include "revision.h" + class atf_version : public atf::application::app { static const char* m_description;