BASENAME(3) | FreeBSD Library Functions Manual | BASENAME(3) |
名称
basename — パス名の基底部分を抽出する書式
#include < libgen.h> char *
basename( const char *path);
char *
basename_r( const char *path, char *bname);
解説
basename() 関数は、最後尾の‘/’文字を削除して、 path で指されるパス名から最後の要素を返します。 path の全体が‘/’文字で成るなら、文字列“/”へのポインタが返されます。 path が NULL ポインタまたは空文字列なら、文字列“.”へのポインタが返されます。basename_r() 変異は、結果の構成要素を格納する少なくとも MAXPATHLEN バイトのバッファを受け付けます。
実装に関する注
basename() 関数は、後に続く呼び出しによって上書きされる、最初の呼び出しで割り付けられた内部の記憶域空間へのポインタを返します。したがって、 basename_r() は、スレッド化されたアプリケーションのために好まれます。戻り値
成功して完了すると、 basename() と basename_r() は、 path の最後の要素へのポインタを返します。失敗するなら、NULL ポインタが返され、グローバル変数 errno にエラーを示す値が設定されます。
エラー
errno には、次のエラーコードが設定されます。- [ ENAMETOOLONG]
- 返される path 要素が MAXPATHLEN より大きかった。
規格
basename() 関数は、 X/Open Portability Guide Issue 4, Version 2 (“XPG4.2”) に準拠しています。歴史
basename() 関数は、 OpenBSD 2.2 と FreeBSD 4.2 で登場しました。作者
警告
basename() は、その後の呼び出しによって上書きされる内部の静的な記憶空間へのポインタをを返します。basename() の他のベンダの実装は、 basename() に渡された文字列の内容を変更します。これは、移植性が望まれているなら、この関数を呼び出すコードを書くとき、考慮に入れられるべきです。
March 31, 2010 | FreeBSD |