libnsl.so に定義されているライブラリルーチン doconfig() は、ファイル /etc/saf/pmtag/_sysconfig (システムごとの構成スクリプト)、/etc/saf/_sysconfig (ポートモニタごとの構成スクリプト)、/etc/saf/pmtag/svctag (サービスごとの構成スクリプト) に入っている構成スクリプトを解釈します。doconfig() の構文を次に示します。
# include <sac.h> int doconfig (int fd, char *script, long rflag);
script は構成スクリプト名です。fd は、ストリーム操作オペレーションが適用されるストリームのファイル記述子です。rflag は、script を解釈するモードを指定するビットマスクです。rflag に指定できる値は、NORUN か NOASSIGN、またはこの 2 つの OR を取った値です。rflag がゼロの場合は、構成スクリプトのすべてのコマンドが解釈されます。rflag の NOASSIGN ビットがオンになっていると、assign コマンドは解釈できず doconfig() はエラー終了します。rflag の NORUN ビットがオンになっていると、run と runwait のコマンドは解釈できず doconfig() はエラー終了します。
スクリプトのどれかのコマンドでエラーが起こった場合、doconfig() はそこでスクリプトの解釈を終了し正の整数を返します。この値は、エラーが起こった行番号を表します。システムエラーが起こった場合は、-1 を返します。
スクリプトでエラーが起こった場合は、スクリプトが実行環境を設定していたプロセスは起動されません。
次の例では、サービスごとの構成スクリプトを解釈するのに doconfig() を使用しています。
. . . if ((i = doconfig (fd, svctag, 0)) != 0){ error ("doconfig failed online %d of script %s",i,svctag); }