From owner-ports-jp@jp.freebsd.org  Tue May 12 11:43:59 1998
Received: by jaz.jp.freebsd.org (8.8.8+3.0Wbeta13/8.7.3) id LAA04856
	Tue, 12 May 1998 11:43:59 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.8+3.0Wbeta13/8.7.3) with ESMTP id LAA04842
	for <ports-jp@jp.freebsd.org>; Tue, 12 May 1998 11:43:57 +0900 (JST)
Received: from localhost (localhost.race.u-tokyo.ac.jp [127.0.0.1]) by shiva.race.u-tokyo.ac.jp (8.8.5/3.5Wpl2) with ESMTP id LAA13308; Tue, 12 May 1998 11:43:47 +0900 (JST)
To: ports-jp@jp.freebsd.org, nakai@apricot.astec.co.jp
From: MOROHOSHI Akihiko <moro@race.u-tokyo.ac.jp>
In-Reply-To: Your message of "Mon, 11 May 1998 20:32:30 +0900"
	<19980511203230M.nakai@apricot.astec.co.jp>
References: <19980511203230M.nakai@apricot.astec.co.jp>
X-Mailer: Mew version 1.91 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19980512114346U.moro@race.u-tokyo.ac.jp>
Date: Tue, 12 May 1998 11:43:46 +0900
X-Dispatcher: imput version 970918
Lines: 58
Reply-To: ports-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=24]
X-Sequence: ports-jp 3364
Subject: [ports-jp 3364] Re: New port: gtk--
Errors-To: owner-ports-jp@jp.freebsd.org
Sender: owner-ports-jp@jp.freebsd.org

> gtk--$B$N(Bport$B$r:n$j$^$7$?!#(B
> gtk--$B$O(Bgtk$B$N$?$a$N(BC++ Wrapper$B$G$9!#(B
> 
> Linux$B$K$bI8=`$G$OB8:_$7$J$$(B(SunOS$B$K$O$"$k(B)$B!"(B
> char* basename(const char*)$B4X?t$r;2>H$7$F$$$?$N$G(B
> $B<+J,$G<BAu$7$F$_$^$7$?(B
> $BIUB0$N%5%s%W%k$bF0:n$7$F$$$k$N$G!"LdBj$J$$$+$H;W$$$^$9!#(B

basename("hoge")$B$,(Bcore$B$rEG$/$N$O$I$&$b!D!#(B
$B$H$$$&$o$1$G$h$m$7$1$l$P$I$&$>!#(B

# malloc$B$9$k$N$,@5$7$$$N$+$I$&$+$OCN$j$^$;$s!#(B
# Solaris$B$N(Bman$B$K$h$k$H(B char *basename(char *) $B$J$N$G$9$,!#(B

MOROHOSHI Akihiko <moro@race.u-tokyo.ac.jp>

--- basename.c
#include <string.h>
#include <stdlib.h>

char *
basename(const char * str) {
    const char *s,*t;
    char *r;
    if (str == NULL)
	return NULL;
    for (s=str+strlen(str)-1; *s=='/' && s>str; s--) /* trim trailing '/'s */
	;
    t=s+1;
    for (; s>=str; s--)
	if (*s == '/') {
	    if (t-s>1)
		str=s+1;	/* t-s==1 is special case: str=~^/+$ */
	    break;
	}
    r=(char *)malloc(t-str+1);
    strncpy(r,str,t-str);
    r[t-str]='\0';
    return r;
}

#ifdef MODULE_TEST

#include <stdio.h>

char *defargv[]={ "hoge", "/hoge", "hoge/", "/hoge/", "/hoge/moge/",
		  "hoge/moge", "/hoge/moge", "hoge/moge/", "/", "///", "",
		  NULL };

int main(int argc, char **argv) {
    if (argc == 1)
	argv = defargv;
    for (argv++;*argv;argv++)
	printf("\"%s\" -> \"%s\"\n", *argv, basename(*argv));
    return 0;
}
#endif /* MODULE_TEST */
---
