version 1.4, 1997/09/22 05:45:27 |
version 1.5, 1999/01/03 05:33:48 |
|
|
char tmpbuf[200]; |
char tmpbuf[200]; |
int sleading = strip_leading; |
int sleading = strip_leading; |
|
|
if (!at) |
if (!at || *at == '\0') |
return Nullch; |
return Nullch; |
while (isspace(*at)) |
while (isspace(*at)) |
at++; |
at++; |
|
|
|
|
if (stat(name, &filestat) && !assume_exists) { |
if (stat(name, &filestat) && !assume_exists) { |
char *filebase = basename(name); |
char *filebase = basename(name); |
int pathlen = filebase - name; |
char *filedir = dirname(name); |
|
|
/* Put any leading path into `tmpbuf'. */ |
#define try(f, a1, a2, a3) (Snprintf(tmpbuf, sizeof tmpbuf, f, a1, a2), stat(tmpbuf, &filestat) == 0) |
strncpy(tmpbuf, name, pathlen); |
if ( try("%s/RCS/%s%s", filedir, filebase, RCSSUFFIX) |
|
|| try("%s/RCS/%s%s", filedir, filebase, "") |
#define try(f, a1, a2) (Snprintf(tmpbuf + pathlen, sizeof tmpbuf - pathlen, f, a1, a2), stat(tmpbuf, &filestat) == 0) |
|| try( "%s/%s%s", filedir, filebase, RCSSUFFIX) |
if ( try("RCS/%s%s", filebase, RCSSUFFIX) |
|| try("%s/SCCS/%s%s", filedir, SCCSPREFIX, filebase) |
|| try("RCS/%s%s", filebase, "") |
|| try( "%s/%s%s", filedir, SCCSPREFIX, filebase)) |
|| try( "%s%s", filebase, RCSSUFFIX) |
|
|| try("SCCS/%s%s", SCCSPREFIX, filebase) |
|
|| try( "%s%s", SCCSPREFIX, filebase)) |
|
return name; |
return name; |
free(name); |
free(name); |
name = Nullch; |
name = Nullch; |