version 1.24, 2016/03/16 15:36:26 |
version 1.25, 2016/09/17 15:06:41 |
|
|
* Determine how big a string we need to allocate. |
* Determine how big a string we need to allocate. |
*/ |
*/ |
len = 1; /* Trailing null byte */ |
len = 1; /* Trailing null byte */ |
for (p = s; *p != '\0'; p++) { |
for (p = s; *p != '\0'; p++) { |
len++; |
len++; |
if (*p == openquote || *p == closequote) |
if (*p == openquote || *p == closequote) |
have_quotes = 1; |
have_quotes = 1; |
|
|
* need to allocate for the expanded string. |
* need to allocate for the expanded string. |
*/ |
*/ |
n = 0; |
n = 0; |
for (fr = s; *fr != '\0'; fr++) { |
for (fr = s; *fr != '\0'; fr++) { |
switch (*fr) { |
switch (*fr) { |
case '%': |
case '%': |
case '#': |
case '#': |
|
|
* Now copy the string, expanding any "%" or "#". |
* Now copy the string, expanding any "%" or "#". |
*/ |
*/ |
to = e; |
to = e; |
for (fr = s; *fr != '\0'; fr++) { |
for (fr = s; *fr != '\0'; fr++) { |
switch (*fr) { |
switch (*fr) { |
case '%': |
case '%': |
case '#': |
case '#': |
|
|
{ |
{ |
char *slash; |
char *slash; |
|
|
for (slash = name + strlen(name); slash > name; ) { |
for (slash = name + strlen(name); slash > name; ) { |
--slash; |
--slash; |
if (*slash == '/') |
if (*slash == '/') |
return (slash + 1); |
return (slash + 1); |