Provided by: manpages-zh_1.5.1-1_all bug

NAME

       dirname, basename - 分析路徑成

` (SYNOPSIS)
       #include <libgen.h>

       char *dirname(char *path);
       char *basename(char *path);

yz (DESCRIPTION)
       dirnamebasename  把  以  null 結尾 的 路徑名 分解為 目錄 和 檔名.
       一般情況下, dirname 返回 路徑名 的  前掖﹞,  直到  (但不包括)  最後一
       '/',  而  basename  則 返回 最後一 '/' 後 的 內容. 如果 路徑名 以 '/'
       結尾, 該 '/' 被認為 不是 路徑名 的 一部分.

       如果 路徑名 path 不包含 斜槓 '/', dirname 返回 字符串 ".", 而  basename
       返回  path  的 副本. 如果 路徑名 path 是 "/", 則 dirnamebasename 均
       返回 "/". 如果 路徑名 path 是 NULL 指針 或 指向  空串,  則  dirnamebasename 均 返回 ".".

       把  dirname  返回的  字符串,  "/", 和 basename 返回的 字符串 連接 起來,
       能夠 產生 一 完整 的 路徑名.

       無論 dirname 還是 basename 都 有可能 更改 path 的 內容, 因此  如果  需n
       保護  鴞  路徑名,  應該 傳送 副本 作為 參數. 此外, dirnamebasename
       返回的 指針 可能 指向 一塊 靜態分配 的 記憶體, 會被 下次 調用 覆.

       下 的 例子 (摘自 SUSv2) 展示了 對於 不同的 路徑名, dirnamebasename
       返回 的 字符串:

       path           dirname        basename
       "/usr/lib"     "/usr"         "lib"
       "/usr/"        "/"            "usr"
       "usr"          "."            "usr"
       "/"            "/"            "/"
       "."            "."            "."
       ".."           "."            ".."

 (EXAMPLE)
       char *dirc, *basec, *bname, *dname;
       char *path = "/etc/passwd";

       dirc = strdup(path);
       basec = strdup(path);
       dname = dirname(dirc);
       bname = basename(basec);
       printf("dirname=%s, basename=%s\n", dname, bname);
       free(dirc);
       free(basec);

^ (RETURN VALUE)
       dirnamebasename 均 返回 以 null 結尾的 字符串 的 指針.

BUGS

       在 glibc 的 各 版本 中, 直到 (並包括) 2.2.1, dirname 無法 正確 處理 以
       '/' 字符 結尾 的 路徑名. 如果 參數 是 NULL 指針, 他  還會  產生  段沖突
       (segmentation violation).

` (CONFORMING TO)
       SUSv2

t (SEE ALSO)
       dirname(1), basename(1)

[]
      } <xuming@users.sourceforge.net>

[]
       2003/05/13

mLinuxanhttp://cmpp.linuxforum.net