]> git.pld-linux.org Git - packages/links2.git/blame - links2-img.patch
- fix for segfault on x86_64
[packages/links2.git] / links2-img.patch
CommitLineData
6a63603f 1diff -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) {
This page took 0.084644 seconds and 4 git commands to generate.