]>
Commit | Line | Data |
---|---|---|
6a63603f | 1 | diff -urN aaa/links-2.0pre6/html.c links-2.0pre6/html.c |
2 | --- aaa/links-2.0pre6/html.c Mon May 20 00:32:57 2002 | |
3 | +++ links-2.0pre6/html.c Sun Jun 16 12:02:57 2002 | |
4 | @@ -838,7 +838,54 @@ | |
5 | if (!d_opt->images && !format.link) goto ret; | |
6 | if (usemap) al = stracpy("[USEMAP]"); | |
7 | else if (ismap) al = stracpy("[ISMAP]"); | |
8 | - else al = stracpy("[IMG]"); | |
9 | + else{ | |
10 | + unsigned char *str = get_attr_val(a, "src"); | |
11 | + unsigned char *s; | |
12 | + int r, i; | |
13 | + /* How images will be displayed: | |
14 | + * fake_alt = 0 -- do not truncate long names, | |
15 | + * fake_alt = 30 -- truncate long names to 30% of term width, | |
16 | + * fake_alt = 100 -- truncate long names to 100% of term width. | |
17 | + */ | |
18 | + int fake_alt = 20; | |
19 | + int max_len; | |
20 | + int name_len; | |
21 | + /* substitute string for hidden characters */ | |
22 | + unsigned char *fake_str = stracpy("*"); | |
23 | + if(str && fake_alt){ | |
24 | + /* FIXME: replace following '80' with screen width */ | |
25 | + max_len = (int)80*((float)fake_alt/100); | |
26 | + r = strcspn(str, "?"); | |
27 | + if (!(s = mem_alloc((r + 1) * sizeof(char)))) return; | |
28 | + strncpy(s, str, r); | |
29 | + s[r] = '\0'; | |
30 | + for(r = strlen(s) - 1; r >= 0; --r) | |
31 | + if(dir_sep(s[r])) break; | |
32 | + r++; | |
33 | + if(strlen(s + r) > max_len){ | |
34 | + for(i = strlen(s) -1; i>=0; --i) | |
35 | + if(s[i] == '.') break; | |
36 | + if(max_len < strlen(s + i)) al = stracpy("[IMG]"); | |
37 | + else{ | |
38 | + if(!(al = mem_alloc((max_len + strlen(fake_str) + 3) * sizeof(char)))) return; | |
39 | + name_len = max_len - strlen(s + i); | |
40 | + strcpy(al, "[\0"); | |
41 | + strncat(al, s + r, name_len/2); | |
42 | + strcat(al, fake_str); | |
43 | + strcat(al, s + r + (strlen(s + r) - max_len + name_len/2)); | |
44 | + strcat(al, "]"); | |
45 | + } | |
46 | + } | |
47 | + else{ | |
48 | + if(!(al = mem_alloc((strlen(s + r) + 3) * sizeof(char)))) return; | |
49 | + sprintf(al, "[%s]", s + r); | |
50 | + } | |
51 | + mem_free(s); | |
52 | + mem_free(str); | |
53 | + mem_free(fake_str); | |
54 | + } | |
55 | + else al = stracpy("[IMG]"); | |
56 | + } | |
57 | } | |
58 | if (al) { | |
59 | if (ismap) { |