=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/extract_func.c,v retrieving revision 1.2 retrieving revision 1.4 diff -u -p -r1.2 -r1.4 --- OpenXM/src/asir-doc/extract_func.c 2000/01/20 03:26:22 1.2 +++ OpenXM/src/asir-doc/extract_func.c 2006/02/12 08:55:26 1.4 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/asir-doc/extract_func.c,v 1.1.1.1 1999/12/08 05:47:43 noro Exp $ */ +/* $OpenXM: OpenXM/src/asir-doc/extract_func.c,v 1.3 2005/02/09 03:25:50 noro Exp $ */ #include #include @@ -49,6 +49,7 @@ char **argv; if ( i >= 3 && buf1[i] == '\n' ) { fputs(buf,stderr); strcpy(fn,name[0]); + create_dir(fn); fp = fopen(fn,"w"); for ( j = 1; name[j]; j++ ) symlink(fn,name[j]); @@ -79,17 +80,35 @@ char **argv; } } +int create_dir(char *fname) +{ + char *p; + + p = fname; + while ( *p && (p = strchr(p,'/')) ) { + *p = 0; + mkdir(fname,0755); + *p = '/'; + p++; + } + +} + int fname(buf,name) char *buf; char **name; { int i,len; - char *quote,*bquote,*comma; + char *quote,*bquote,*comma,*space,*p; - /* XXX */ - if ( *buf != '`' ) - return 0; - + if ( *buf != '`' ) { + /* skip X.X.X if exists */ + space = index(buf,' '); + if ( !space ) return 0; + for ( p = buf; p < space; p++ ) + if ( !isdigit(*p) && *p != '.' ) return 0; + buf = space+1; + } i = 0; while ( 1 ) { /* search a back quote */