]> git.pld-linux.org Git - packages/links2.git/blame - links2-img.patch
- (re)added pl-update patch
[packages/links2.git] / links2-img.patch
CommitLineData
a8718b56
JB
1--- links-2.7/html.c.orig 2013-06-23 18:17:51.248954518 +0200
2+++ links-2.7/html.c 2013-06-23 18:30:42.988922132 +0200
3@@ -1062,7 +1062,54 @@
4 add_to_strn(&al, cast_uchar "]");
5 } else if (usemap) al = stracpy(cast_uchar "[USEMAP]");
6 else if (ismap) al = stracpy(cast_uchar "[ISMAP]");
7- else al = stracpy(cast_uchar "[IMG]");
6a63603f 8+ else{
9+ unsigned char *str = get_attr_val(a, "src");
10+ unsigned char *s;
11+ int r, i;
12+ /* How images will be displayed:
13+ * fake_alt = 0 -- do not truncate long names,
14+ * fake_alt = 30 -- truncate long names to 30% of term width,
15+ * fake_alt = 100 -- truncate long names to 100% of term width.
16+ */
17+ int fake_alt = 20;
18+ int max_len;
19+ int name_len;
20+ /* substitute string for hidden characters */
21+ unsigned char *fake_str = stracpy("*");
22+ if(str && fake_alt){
23+ /* FIXME: replace following '80' with screen width */
24+ max_len = (int)80*((float)fake_alt/100);
25+ r = strcspn(str, "?");
26+ if (!(s = mem_alloc((r + 1) * sizeof(char)))) return;
27+ strncpy(s, str, r);
28+ s[r] = '\0';
29+ for(r = strlen(s) - 1; r >= 0; --r)
30+ if(dir_sep(s[r])) break;
31+ r++;
32+ if(strlen(s + r) > max_len){
33+ for(i = strlen(s) -1; i>=0; --i)
34+ if(s[i] == '.') break;
35+ if(max_len < strlen(s + i)) al = stracpy("[IMG]");
36+ else{
37+ if(!(al = mem_alloc((max_len + strlen(fake_str) + 3) * sizeof(char)))) return;
38+ name_len = max_len - strlen(s + i);
39+ strcpy(al, "[\0");
40+ strncat(al, s + r, name_len/2);
41+ strcat(al, fake_str);
42+ strcat(al, s + r + (strlen(s + r) - max_len + name_len/2));
43+ strcat(al, "]");
44+ }
45+ }
46+ else{
47+ if(!(al = mem_alloc((strlen(s + r) + 3) * sizeof(char)))) return;
48+ sprintf(al, "[%s]", s + r);
49+ }
50+ mem_free(s);
51+ mem_free(str);
52+ mem_free(fake_str);
53+ }
54+ else al = stracpy("[IMG]");
55+ }
56 }
57 if (al) {
58 if (ismap) {
This page took 0.033242 seconds and 4 git commands to generate.