zoukankan      html  css  js  c++  java
  • PostgreSQL的 initdb 源代码分析之二

    继续分析

    下面这一段,当 initdb --version 或者  initdb --help 才有意义。

        if (argc > 1)
        {
    
            if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
            {
                usage(progname);
                exit(0);
            }
            if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
            {
                puts("initdb (PostgreSQL) " PG_VERSION);
                exit(0);
            }
        }

    再看下一段:

    实际上就是 initdb 运行时候,后面可以跟各种参数。我这里只考虑 -D那种就好了

        /* process command-line options */
        while ((c = getopt_long(argc, argv, "dD:E:L:nU:WA:sT:X:", long_options, &option_index)) != -1)
        {
            switch (c)
            {
                case 'A':
                    authmethod = xstrdup(optarg);
                    break;
                case 'D':
                    pg_data = xstrdup(optarg);
                    break;
                case 'E':
                    encoding = xstrdup(optarg);
                    break;
                case 'W':
                    pwprompt = true;
                    break;
                case 'U':
                    username = xstrdup(optarg);
                    break;
                case 'd':
                    debug = true;
                    printf(_("Running in debug mode.
    "));
                    break;
                case 'n':
                    noclean = true;
                    printf(_("Running in noclean mode.  Mistakes will not be cleaned up.
    "));
                    break;
                case 'L':
                    share_path = xstrdup(optarg);
                    break;
                case 1:
                    locale = xstrdup(optarg);
                    break;
                case 2:
                    lc_collate = xstrdup(optarg);
                    break;
                case 3:
                    lc_ctype = xstrdup(optarg);
                    break;
                case 4:
                    lc_monetary = xstrdup(optarg);
                    break;
                case 5:
                    lc_numeric = xstrdup(optarg);
                    break;
                case 6:
                    lc_time = xstrdup(optarg);
                    break;
                case 7:
                    lc_messages = xstrdup(optarg);
                    break;
                case 8:
                    locale = "C";
                    break;
                case 9:
                    pwfilename = xstrdup(optarg);
                    break;
                case 's':
                    show_setting = true;
                    break;
                case 'T':
                    default_text_search_config = xstrdup(optarg);
                    break;
                case 'X':
                    xlog_dir = xstrdup(optarg);
                    break;
                default:
                    /* getopt_long already emitted a complaint */
                    fprintf(stderr, _("Try "%s --help" for more information.
    "),
                            progname);
                    exit(1);
            }
        }

    也就是这段:

                case 'D':
                    pg_data = xstrdup(optarg);
                    break;
  • 相关阅读:
    Linux文件和目录
    Android/ios手机销售榜
    项目开发流程
    游戏签到系统测试点
    项目上线后出现问题,该如何解决?
    公交地铁出行测试点
    初学测试
    测试用例的优先级
    Django的MVT模式与MVC模式
    JWT安装配置
  • 原文地址:https://www.cnblogs.com/gaojian/p/3173833.html
Copyright © 2011-2022 走看看