version 1.19, 2014/04/03 10:17:14 |
version 1.20, 2014/04/03 11:34:30 |
Line 215 trylink(const char *buf, size_t *start, size_t end, si |
|
Line 215 trylink(const char *buf, size_t *start, size_t end, si |
|
if ('|' == buf[textsz] || '/' == buf[textsz]) |
if ('|' == buf[textsz] || '/' == buf[textsz]) |
break; |
break; |
|
|
/* If we have a title, find the section. */ |
|
if (textsz < linkend && '|' == buf[textsz]) { |
if (textsz < linkend && '|' == buf[textsz]) { |
|
/* With title: set start, then end at section. */ |
linkstart = textsz + 1; |
linkstart = textsz + 1; |
textsz = textsz - *start; |
textsz = textsz - *start; |
for (i = linkstart; i < linkend; i++) |
for (i = linkstart; i < linkend; i++) |
Line 224 trylink(const char *buf, size_t *start, size_t end, si |
|
Line 224 trylink(const char *buf, size_t *start, size_t end, si |
|
break; |
break; |
if (i < linkend) |
if (i < linkend) |
linkend = i; |
linkend = i; |
} else { |
} else if (textsz < linkend && '/' == buf[textsz]) { |
|
/* With section: set end at section. */ |
|
linkend = textsz; |
textsz = 0; |
textsz = 0; |
if (textsz < linkend && '/' == buf[textsz]) |
} else |
linkend = textsz; |
/* No title, no section. */ |
} |
textsz = 0; |
|
|
*start = realend; |
*start = realend; |
|
|
j = linkend - linkstart; |
j = linkend - linkstart; |
|
|
if (0 == j) |
/* Do we have only subsection material? */ |
|
if (0 == j && '/' == buf[linkend]) { |
|
linkstart = linkend + 1; |
|
linkend = dsz > 1 ? realend - 1 : realend; |
|
if (0 == (j = linkend - linkstart)) |
|
return(0); |
|
printf("Sx %.*s", (int)j, &buf[linkstart]); |
|
return(1); |
|
} else if (0 == j) |
return(0); |
return(0); |
|
|
/* See if we qualify as being a link or not. */ |
/* See if we qualify as being a link or not. */ |
if ((j > 5 && 0 == memcmp("http:", &buf[linkstart], j)) || |
if ((j > 4 && 0 == memcmp("http:", &buf[linkstart], j)) || |
(j > 6 && 0 == memcmp("https:", &buf[linkstart], j)) || |
(j > 5 && 0 == memcmp("https:", &buf[linkstart], j)) || |
(j > 4 && 0 == memcmp("ftp:", &buf[linkstart], j)) || |
(j > 3 && 0 == memcmp("ftp:", &buf[linkstart], j)) || |
(j > 5 && 0 == memcmp("sftp:", &buf[linkstart], j)) || |
(j > 4 && 0 == memcmp("sftp:", &buf[linkstart], j)) || |
(j > 4 && 0 == memcmp("smb:", &buf[linkstart], j)) || |
(j > 3 && 0 == memcmp("smb:", &buf[linkstart], j)) || |
(j > 4 && 0 == memcmp("afs:", &buf[linkstart], j))) { |
(j > 3 && 0 == memcmp("afs:", &buf[linkstart], j))) { |
printf("Lk %.*s", (int)j, &buf[linkstart]); |
/* Gross. */ |
|
printf("Lk %.*s", (int)((dsz > 1 ? realend - 1 : |
|
realend) - linkstart), &buf[linkstart]); |
return(1); |
return(1); |
} |
} |
|
|
/* See if we qualify as a mailto. */ |
/* See if we qualify as a mailto. */ |
if (j > 7 && 0 == memcmp("mailto:", &buf[linkstart], j)) { |
if (j > 6 && 0 == memcmp("mailto:", &buf[linkstart], j)) { |
printf("Mt %.*s", (int)j, &buf[linkstart]); |
printf("Mt %.*s", (int)j, &buf[linkstart]); |
return(1); |
return(1); |
} |
} |