GETTTYENT(3)

名称
getttyent, getttynam, setttyent, endttyent - ttys ファイルエントリを取得 isdialuptty, isnettty - ファイルエントリから tty タイプを決める

ライブラリ
libc

書式
<ttyent.h> struct ttyent * getttyent(void) struct ttyent * getttynam(const char *name) int setttyent(void) int endttyent(void) int isdialuptty(const char *name) int isnettty(const char *name)

解説
getttyent() および getttynam() 関数はそれぞれ、次に示す構造体を持つ オブジェクトのポインタを返します。構造体には、 tty 記述ファイルにある行の 内訳フィールドが含まれます。

    struct ttyent {
    	char	*ty_name;	/* 端末デバイス名 */
    	char	*ty_getty;	/* 実行するコマンド、通常は getty */
    	char	*ty_type;	/* termcap の端末タイプ */
    #define TTY_ON          0x01	/* ログイン有効化 (ty_getty プログラム開始) */
    #define TTY_SECURE	0x02	/* uid 0 でのログイン許可 */
    #define TTY_DIALUP	0x04	/* ダイアルアップ tty */
    #define TTY_NETWORK	0x08	/* ネットワーク tty */
    	int	ty_status;	/* ステータスフラグ */
    	char	*ty_window;	/* ウィンドウマネージャ起動コマンド */
    	char	*ty_comment;	/* コメントフィールド */
    	char	*ty_group;	/* tty グループ名 */
    };

フィールドは次のとおりです。

ty_name
    キャラクタ特殊ファイル名。

ty_getty
    tty 回線特性の初期化のため、 init(8) によって呼び出す コマンド名。

ty_type
    この tty 回線に接続されたデフォルト端末のタイプ名。

ty_status
    この tty 回線で許されるさまざまな機能を示す、 ビットフィールドのマスク。 可能なフラグは次のとおりです。

    TTY_ON
        ログインを有効化します (すなわち、このエントリの ty_getty で参照されるコマンドを、 init(8) が起動します)。

    TTY_SECURE
        ユーザは uid 0 でこの端末にログインできます。

    TTY_DIALUP
        ユーザは uid 0 でこの端末にログインできます。

    TTY_DIALUP
        tty をダイアルイン回線として識別します。この フラグが設定されると、 isdialuptty() は非 0 値を返します。

    TTY_NETWORK
        ネットワーク接続に使用された tty を識別します。このフラグが設定されると、 isnettty() は非 0 値を返します。

ty_window
    回線に関連するウィンドウシステムを実行するコマンドです。

ty_group
    tty が所属するグループ名です。 ttys 記述ファイルにグループの指定がない場合は、"none" と呼ばれる無名グループにその tty が置かれます。

ty_comment
    終端のコメントフィールドであり、 先頭のハッシュマーク (``#'') と余白はすべて除去されます。

キャラクタストリングを示すフィールドが未指定の場合、それらはすべて ヌルポインタとして返ります。指定されたフラグ値がない場合、フィールド ty_status は 0 になります。

このフィールドの意味および用法の詳細な説明については、 ttys(5) を参照してください。

getttyent() 関数は、必要ならばオープンして ttys ファイルの次の行を読み込みます。 setttyent() 関数は、ファイルがオープンされていればリワインドし、 オープンされていなければオープンします。 endttyent() 関数は、オープンされているファイルをすべてクローズします。

getttynam() 関数は、適合する name が見付かる (かまたは EOF に出会う) まで、ファイルを最初から検索します。

戻り値
ルーチン getttyent() および getttynam() は、 EOF またはエラーでいずれもヌルポインタを返します。 setttyent() 関数および endttyent() 関数は、いずれも失敗した場合は 0 を、成功した場合は 1 を返します。

ルーチン isdialuptty() および isnettty() は、パラメータによって指名された tty に関連する tty エントリに、ダイアルアップまたはネットワークフラグが 設定されていなければ非 0 を返し、その他の場合は 0 を返します。

関連ファイル
/etc/ttys

関連項目
login(1), ttyslot(3), gettytab(5), termcap(5), ttys(5), getty(8), init(8)

歴史
関数 getttyent(), getttynam(), setttyent(), endttyent() は 4.3BSD ではじめて登場しました。

バグ
これらの関数は静的データ記憶域を使用します。後で使用するデータの場合は、 以後の呼び出しで上書きする前にデータをコピーして保存する必要があります。