003 File Manager
Current Path:
/usr/src/contrib/atf/atf-c
usr
/
src
/
contrib
/
atf
/
atf-c
/
📁
..
📄
Kyuafile
(394 B)
📄
atf-c.3
(21.5 KB)
📄
atf_c_test.c
(1.91 KB)
📄
build.c
(7 KB)
📄
build.h
(1.81 KB)
📄
build_test.c
(7.11 KB)
📄
check.c
(11.8 KB)
📄
check.h
(2.98 KB)
📄
check_test.c
(15.66 KB)
📄
defs.h
(1.7 KB)
📄
defs.h.in
(1.62 KB)
📁
detail
📄
error.c
(6.2 KB)
📄
error.h
(2.56 KB)
📄
error_fwd.h
(1.68 KB)
📄
error_test.c
(8.93 KB)
📄
h_build.h
(8.07 KB)
📄
macros.h
(7.55 KB)
📄
macros_h_test.c
(4.14 KB)
📄
macros_test.c
(31.58 KB)
📄
pkg_config_test.sh
(4.31 KB)
📄
tc.c
(31.15 KB)
📄
tc.h
(5.39 KB)
📄
tc_test.c
(6.02 KB)
📄
tp.c
(4.98 KB)
📄
tp.h
(2.49 KB)
📄
tp_test.c
(3.03 KB)
📄
unused_test.c
(1.83 KB)
📄
utils.c
(13.43 KB)
📄
utils.h
(2.23 KB)
📄
utils_test.c
(17.4 KB)
Editing: build.c
/* Copyright (c) 2009 The NetBSD Foundation, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "atf-c/build.h" #include <stdlib.h> #include <string.h> #include "atf-c/detail/env.h" #include "atf-c/detail/sanity.h" #include "atf-c/detail/text.h" #include "atf-c/error.h" /* --------------------------------------------------------------------- * Auxiliary functions. * --------------------------------------------------------------------- */ static atf_error_t append_config_var(const char *var, const char *default_value, atf_list_t *argv) { atf_error_t err; atf_list_t words; err = atf_text_split(atf_env_get_with_default(var, default_value), " ", &words); if (atf_is_error(err)) goto out; atf_list_append_list(argv, &words); out: return err; } static atf_error_t append_arg1(const char *arg, atf_list_t *argv) { return atf_list_append(argv, strdup(arg), true); } static atf_error_t append_arg2(const char *flag, const char *arg, atf_list_t *argv) { atf_error_t err; err = append_arg1(flag, argv); if (!atf_is_error(err)) err = append_arg1(arg, argv); return err; } static atf_error_t append_optargs(const char *const optargs[], atf_list_t *argv) { atf_error_t err; err = atf_no_error(); while (*optargs != NULL && !atf_is_error(err)) { err = append_arg1(strdup(*optargs), argv); optargs++; } return err; } static atf_error_t append_src_out(const char *src, const char *obj, atf_list_t *argv) { atf_error_t err; err = append_arg2("-o", obj, argv); if (atf_is_error(err)) goto out; err = append_arg1("-c", argv); if (atf_is_error(err)) goto out; err = append_arg1(src, argv); out: return err; } static atf_error_t list_to_array(const atf_list_t *l, char ***ap) { atf_error_t err; char **a; a = (char **)malloc((atf_list_size(l) + 1) * sizeof(char *)); if (a == NULL) err = atf_no_memory_error(); else { char **aiter; atf_list_citer_t liter; aiter = a; atf_list_for_each_c(liter, l) { *aiter = strdup((const char *)atf_list_citer_data(liter)); aiter++; } *aiter = NULL; err = atf_no_error(); } *ap = a; /* Shut up warnings in the caller about uninitialized *ap. */ return err; } /* --------------------------------------------------------------------- * Free functions. * --------------------------------------------------------------------- */ atf_error_t atf_build_c_o(const char *sfile, const char *ofile, const char *const optargs[], char ***argv) { atf_error_t err; atf_list_t argv_list; err = atf_list_init(&argv_list); if (atf_is_error(err)) goto out; err = append_config_var("ATF_BUILD_CC", ATF_BUILD_CC, &argv_list); if (atf_is_error(err)) goto out_list; err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, &argv_list); if (atf_is_error(err)) goto out_list; err = append_config_var("ATF_BUILD_CFLAGS", ATF_BUILD_CFLAGS, &argv_list); if (atf_is_error(err)) goto out_list; if (optargs != NULL) { err = append_optargs(optargs, &argv_list); if (atf_is_error(err)) goto out_list; } err = append_src_out(sfile, ofile, &argv_list); if (atf_is_error(err)) goto out_list; err = list_to_array(&argv_list, argv); if (atf_is_error(err)) goto out_list; out_list: atf_list_fini(&argv_list); out: return err; } atf_error_t atf_build_cpp(const char *sfile, const char *ofile, const char *const optargs[], char ***argv) { atf_error_t err; atf_list_t argv_list; err = atf_list_init(&argv_list); if (atf_is_error(err)) goto out; err = append_config_var("ATF_BUILD_CPP", ATF_BUILD_CPP, &argv_list); if (atf_is_error(err)) goto out_list; err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, &argv_list); if (atf_is_error(err)) goto out_list; if (optargs != NULL) { err = append_optargs(optargs, &argv_list); if (atf_is_error(err)) goto out_list; } err = append_arg2("-o", ofile, &argv_list); if (atf_is_error(err)) goto out_list; err = append_arg1(sfile, &argv_list); if (atf_is_error(err)) goto out_list; err = list_to_array(&argv_list, argv); if (atf_is_error(err)) goto out_list; out_list: atf_list_fini(&argv_list); out: return err; } atf_error_t atf_build_cxx_o(const char *sfile, const char *ofile, const char *const optargs[], char ***argv) { atf_error_t err; atf_list_t argv_list; err = atf_list_init(&argv_list); if (atf_is_error(err)) goto out; err = append_config_var("ATF_BUILD_CXX", ATF_BUILD_CXX, &argv_list); if (atf_is_error(err)) goto out_list; err = append_config_var("ATF_BUILD_CPPFLAGS", ATF_BUILD_CPPFLAGS, &argv_list); if (atf_is_error(err)) goto out_list; err = append_config_var("ATF_BUILD_CXXFLAGS", ATF_BUILD_CXXFLAGS, &argv_list); if (atf_is_error(err)) goto out_list; if (optargs != NULL) { err = append_optargs(optargs, &argv_list); if (atf_is_error(err)) goto out_list; } err = append_src_out(sfile, ofile, &argv_list); if (atf_is_error(err)) goto out_list; err = list_to_array(&argv_list, argv); if (atf_is_error(err)) goto out_list; out_list: atf_list_fini(&argv_list); out: return err; }
Upload File
Create Folder