⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecosconfig.cxx

📁 移植到WLIT项目的redboot源代码
💻 CXX
📖 第 1 页 / 共 2 页
字号:
        savefile = DEFAULT_SAVE_FILE; // use the default save file    }    // find the repository    if (repository.empty ()) { // if the repository was not specified on the command line        const char * env_var = getenv ("ECOS_REPOSITORY");        if (env_var) { // if the ECOS_REPOSITORY environment variable is defined            repository = env_var;        } else { // the ECOS_REPOSITORY environment variable is not defined            // assume that the tool is located in the root of the repository#ifdef _MSC_VER            char toolpath [_MAX_PATH + 1];            _fullpath (toolpath, argv [0], sizeof (toolpath)); // get the absolute path to the tool#else            // NOTE: portability problem. realpath() is not a POSIX function.            // Alternative code may be needed on some platforms.            char toolpath [MAXPATHLEN + 1];            realpath (argv [0], toolpath); // get the absolute path to the tool#endif            repository = toolpath;            for (unsigned int n = repository.size () - 1; n > 0; n--) { // for each char starting at the tail                if (('\\' == repository [n]) || ('/' == repository [n])) { // if the char is a directory separator                    repository.resize (n); // remove the filename from the filepath                    break;                }            }        }    }#ifdef __CYGWIN__    // convert cygwin paths to win32 paths    char buffer [MAXPATHLEN + 1];    cygwin_conv_to_win32_path (repository.c_str (), buffer);    repository = buffer;    cygwin_conv_to_win32_path (savefile.c_str (), buffer);    savefile = buffer;    if (! install_prefix.empty ()) { // cygwin_conv_to_win32_path() does not copy an empty string        cygwin_conv_to_win32_path (install_prefix.c_str (), buffer);        install_prefix = buffer;    }#endif    // Initialize the cdl_exec code (not quite sure why this needs a    // separate object rather than just a bunch of statics).     cdl_exec exec (trim_path (repository), savefile, trim_path (install_prefix), no_resolve);    cdl_exec::set_quiet_mode(quiet);    cdl_exec::set_verbose_mode(verbose);    cdl_exec::set_ignore_errors_mode(ignore_errors);        // Now identify and process the sub-command.    const std::string command = argv [command_index];    command_index++;    bool status = false;    if ("new" == command) {        // Usage: ecosconfig new <target> [template [version]]        if ((command_index == argc) || ((command_index + 3) <= argc)) {            usage_message();        } else {            // The default values for template and template_version            // are part of the cdl_exec class, so cdl_exec::cmd_new() has            // to be invoked with the right number of arguments.            if ((command_index + 1) == argc) {                status = exec.cmd_new(argv[command_index]);            } else if ((command_index + 2) == argc) {                status = exec.cmd_new(argv[command_index], argv[command_index + 1]);            } else {                status = exec.cmd_new(argv[command_index], argv[command_index + 1], argv[command_index + 2]);            }        }    } else if ("tree" == command) {        // Usage: ecosconfig tree        if (command_index == argc) {            status = exec.cmd_tree ();        } else {            usage_message ();        }    } else if ("list" == command) {        // Usage: ecosconfig list        if (command_index == argc) {            status = exec.cmd_list ();        } else {            usage_message ();        }    } else if ("check" == command) {        // Usage: ecosconfig check        if (command_index == argc) {            status = exec.cmd_check ();        } else {            usage_message ();        }    } else if ("resolve" == command) {        // Usage: ecosconfig resolve        if (command_index == argc) {            status = exec.cmd_resolve ();        } else {            usage_message ();        }    } else if ("add" == command) {        // Usage: ecosconfig add <package> [<package2> ...]        if (command_index < argc) {            std::vector<std::string> packages;            for (int n = command_index; n < argc; n++) {                packages.push_back (argv [n]);            }            status = exec.cmd_add (packages);        } else {            usage_message ();        }    } else if ("remove" == command) {        // Usage: ecosconfig remove <package> [<package2> ...]        if (command_index < argc) {            std::vector<std::string> packages;            for (int n = command_index; n < argc; n++) {                packages.push_back (argv [n]);            }            status = exec.cmd_remove (packages);        } else {            usage_message ();        }    } else if ("version" == command) {        // Usage: ecosconfig version <version> <package> [<package2> ...]        // Note that it is not possible to change several packages to different versions.         if (command_index + 1 < argc) {            std::vector<std::string> packages;            for (int n = command_index + 1; n < argc; n++) {                packages.push_back (argv [n]);            }            status = exec.cmd_version (argv [command_index], packages);        } else {            usage_message ();        }    } else if ("target" == command) {        // Usage: ecosconfig target <target>        if (command_index + 1 == argc) {            status = exec.cmd_target (argv [command_index]);        } else {            usage_message ();        }    } else if ("template" == command) {        // Usage: ecosconfig template <template> [<version>]        if (command_index + 1 == argc) {            status = exec.cmd_template (argv [command_index]);        } else if (command_index + 2 == argc) {            status = exec.cmd_template (argv [command_index], argv [command_index]);        } else {            usage_message ();        }    } else if ("export" == command) {        // Usage: ecosconfige export <filename>        if (command_index + 1 == argc) {            status = exec.cmd_export (argv [command_index]);        } else {            usage_message ();        }    } else if ("import" == command) {        // Usage: ecosconfig import <filename>        if (command_index + 1 == argc) {            status = exec.cmd_import (argv [command_index]);        } else {            usage_message ();        }    } else {        usage_message ();    }    return status ? EXIT_SUCCESS : EXIT_FAILURE;}// remove the trailing directory separator from a file path if presentstd::string trim_path (const std::string input) {    std::string output = input;    if (! output.empty ()) {        const char last_char = output [output.size () - 1];        if (('\\' == last_char) || ('/' == last_char)) { // if the last char is a directory separator            output.resize (output.size () - 1); // remove the last char        }    }    return output;}// print a usage messagevoid usage_message () {    printf ("Usage: ecosconfig [ qualifier ... ] [ command ]\n");    printf ("  commands are:\n");    printf ("    list                                       : list repository contents\n");    printf ("    new TARGET [ TEMPLATE [ VERSION ] ]        : create a configuration\n");    printf ("    target TARGET                              : change the target hardware\n");    printf ("    template TEMPLATE [ VERSION ]              : change the template\n");    printf ("    add PACKAGE [ PACKAGE ... ]                : add package(s)\n");    printf ("    remove PACKAGE [ PACKAGE ... ]             : remove package(s)\n");    printf ("    version VERSION PACKAGE [ PACKAGE ... ]    : change version of package(s)\n");    printf ("    export FILE                                : export minimal config info\n");    printf ("    import FILE                                : import additional config info\n");    printf ("    check                                      : check the configuration\n");    printf ("    resolve                                    : resolve conflicts\n");    printf ("    tree                                       : create a build tree\n");    printf ("  qualifiers are:\n");    printf ("    --config=FILE                              : the configuration file\n");    printf ("    --prefix=DIRECTORY                         : the install prefix\n");    printf ("    --srcdir=DIRECTORY                         : the source repository\n");    printf ("    --no-resolve                               : disable conflict resolution\n");    printf ("    --version                                  : show version and copyright\n");    printf ("    -q, --quiet                                : reduce verbosity\n");        printf ("    -v, --verbose                              : increase verbosity\n");        printf ("    -i, --ignore-errors                        : ignore unresolved conflicts\n");    printf ("    --help                                     : display this message\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -