.\" $NetBSD: stringlist.3,v 1.2 1997/04/09 08:59:25 kleink Exp $ .\" .\" Copyright (c) 1997 The NetBSD Foundation, Inc. .\" All rights reserved. .\" .\" This file was contributed to The NetBSD Foundation by Luke Mewburn. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the NetBSD .\" Foundation, Inc. and its contributors. .\" 4. Neither the name of The NetBSD Foundation nor the names of its .\" contributors may be used to endorse or promote products derived .\" from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/gen/stringlist.3,v 1.3.2.4 2001/12/14 18:33:51 ru Exp % .\" .\" $FreeBSD$ .\" .Dd February 24, 1997 .Os .Dt STRINGLIST 3 .Sh 名称 .Nm stringlist , .Nm sl_init , .Nm sl_add , .Nm sl_free , .Nm sl_find .Nd 文字列リスト操作関数 .Sh ライブラリ .Lb libc .Sh 書式 .In stringlist.h .Ft StringList * .Fn sl_init .Ft void .Fn sl_add "StringList *sl" "char *item" .Ft void .Fn sl_free "StringList *sl" "int freeall" .Ft char * .Fn sl_find "StringList *sl" "char *item" .Sh 解説 .Nm 関数は、必要に応じて自動的に展開する文字列の一覧である 文字列リストを操作します。 .Pp .Ar StringList 構造は、次のような定義を持ちます : .Bd -literal -offset indent typedef struct _stringlist { char **sl_str; size_t sl_max; size_t sl_cur; } StringList; .Ed .Pp .Bl -tag -width "sl_str" -offset indent .It Ar sl_str 一覧が入っている配列の基底ポインタです。 .It Ar sl_max .Ar sl_str のサイズ。 .It Ar sl_cur 現在の要素の .Ar sl_str におけるオフセット。 .El .Pp 以下のような文字列リスト操作関数が使用できます : .Bl -tag -width "sl_init()" .It Fn sl_init 文字列リストを作成します。 .Ar StringList へのポインタを 返します。 .It Fn sl_free .Ar sl および .Ar sl->sl_str 配列が占有するメモリを解放します。 .Ar freeall が非 0 の場合は、 .Ar sl->sl_str の中の項目も解放されます。 .It Fn sl_add .Ar sl->sl_str のサイズを拡張して、 .Ar item を .Ar sl->sl_str の .Ar sl->sl_cur の位置に追加します。 .It Fn sl_find .Ar sl の中の .Ar item を探し、見つからない場合は NULL を返します。 .El .Sh 関連項目 .Xr free 3 , .Xr malloc 3