getenvの使い方
PostgreSQLを題材にシステムプログラミングを学ぼうと思う。
初めは簡単なところからということで、getenv
関数について。
題材はPostgreSQL 10.0のコード。
getenv
はstdlib.hに含まれるライブラリ関数です。その名の通りに引数にとった環境変数の値のポインタを取得。
取得できなかった場合はNULLを返す。
下記は、src/bin/scripts/createdb.c
から抜粋。
NULLの場合を考慮して、if(gettnv("FOO"))
という書き方になっているのが分かります。
if (dbname == NULL) { if (getenv("PGDATABASE")) dbname = getenv("PGDATABASE"); else if (getenv("PGUSER")) dbname = getenv("PGUSER"); else dbname = get_user_name_or_exit(progname); }
因みに、PostgreSQLではcreatedb
コマンドを引数なしで実行すると
PGDATABASEで指定した値、あるいはユーザーと同じ名前のデータベースが作成される。
今回の抜粋はその処理部分。