about summary refs log tree commit diff stats
path: root/CHANGES
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2014-01-19 15:21:18 -0500
committerThomas E. Dickey <dickey@invisible-island.net>2014-01-19 15:21:18 -0500
commit3ab0f2b5217368844a5044f8155d7026b60b75e4 (patch)
treec693bf932f3806f997b62bf633b916aceed17b5a /CHANGES
parentd0462518c2d97f39c22a28a9811b3126585f47b1 (diff)
downloadlynx-snapshots-3ab0f2b5217368844a5044f8155d7026b60b75e4.tar.gz
snapshot of project "lynx", label v2-8-8pre_3a
Diffstat (limited to 'CHANGES')
-rw-r--r--CHANGES11
1 files changed, 10 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 6ca8bcf1..0c8be0a6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,8 +1,17 @@
--- $LynxId: CHANGES,v 1.723 2014/01/11 16:26:24 tom Exp $
+-- $LynxId: CHANGES,v 1.727 2014/01/19 15:21:18 tom Exp $
 ===============================================================================
 Changes since Lynx 2.8 release
 ===============================================================================
 
+2014-01-19 (2.8.8pre.4)
+* disable EXP_JAPANESEUTF8_SUPPORT if the system has no iconv support -TD
+* modify makefiles to perform the src/chrtrans rules from the top-level rather
+  than via the src-level, solving the issue of "makefile races" -TD
+* reviewed minor fixes from OpenBSD CVS for these issues:
+  - fix makefile races [espie]
+  - read/write result checking fixes to avoid unsigned comparisons vs -1 [krw]
+  However, the former is not an improvement; kept only the latter -TD
+
 2014-01-11 (2.8.8pre.3)
 * apply analogous changes to tidytls.c interface -TD
 * apply openssl patch from openSUSE package for Lynx to modify the SSL options
;lynx", label v2_6' href='/ingrix/lynx-snapshots/commit/src/LYShowInfo.c?id=e087f6d44e87f489fcb3056e86319ebba4218156'>e087f6d4
2a94396c ^
e087f6d4

57bfc74f ^
e087f6d4


aa3258c6 ^
e087f6d4






e087f6d4
6e75abc0 ^

2a94396c ^

e087f6d4

6e75abc0 ^

e087f6d4
2a94396c ^
e087f6d4

e087f6d4





86b4d41a ^



e087f6d4


945e8eb6 ^
57bfc74f ^
945e8eb6 ^
e087f6d4
51f21bae ^












e087f6d4

6bd78b38 ^
51f21bae ^

e087f6d4

2a94396c ^
e087f6d4





6bd78b38 ^

e087f6d4

2a94396c ^
e087f6d4





0eae931d ^
e087f6d4

d7e8d7e4 ^
e087f6d4
6bd78b38 ^
d7e8d7e4 ^
2a94396c ^
6bd78b38 ^
899516a7 ^
d7e8d7e4 ^
e087f6d4
6bd78b38 ^
899516a7 ^
e087f6d4
6bd78b38 ^

e087f6d4
6bd78b38 ^
899516a7 ^
d7e8d7e4 ^
e087f6d4







6bd78b38 ^
e087f6d4
899516a7 ^
e087f6d4

2a94396c ^
e087f6d4

2a94396c ^
d7e8d7e4 ^
6bd78b38 ^
2a94396c ^
e087f6d4


2a94396c ^
e087f6d4

6bd78b38 ^
e087f6d4
2a94396c ^
6bd78b38 ^
e087f6d4

6bd78b38 ^
e087f6d4
51f21bae ^
6bd78b38 ^
e087f6d4







d7e8d7e4 ^
e087f6d4
2a94396c ^
e087f6d4

2a94396c ^

e087f6d4


6bd78b38 ^
e087f6d4


2a94396c ^
e087f6d4



d7e8d7e4 ^
e087f6d4
2a94396c ^
e087f6d4

2a94396c ^

e087f6d4


6bd78b38 ^
e087f6d4







d7e8d7e4 ^
e087f6d4
2a94396c ^
e087f6d4
899516a7 ^
e087f6d4
2a94396c ^
899516a7 ^
2a94396c ^
e087f6d4






6bd78b38 ^

e087f6d4


fbcb509d ^
2a94396c ^
e087f6d4

945e8eb6 ^
6bd78b38 ^
2a94396c ^
6bd78b38 ^
b6d1143c ^
2a94396c ^
c3ec4181 ^
b6d1143c ^
e4409c40 ^
2a94396c ^
e4409c40 ^
b6d1143c ^


e4409c40 ^

2a94396c ^
e4409c40 ^


c3ec4181 ^
6bd78b38 ^
2a94396c ^
6bd78b38 ^

2a94396c ^
6bd78b38 ^

2a94396c ^
e087f6d4

36a66292 ^

6bd78b38 ^

e087f6d4


2a94396c ^
945e8eb6 ^
e087f6d4
2a94396c ^
e087f6d4
6bd78b38 ^
e087f6d4
6bd78b38 ^

e087f6d4
945e8eb6 ^
57bfc74f ^

a93eca0b ^
57bfc74f ^
945e8eb6 ^
e087f6d4




6bd78b38 ^
e087f6d4

6bd78b38 ^
e087f6d4


2a94396c ^

6bd78b38 ^

e087f6d4


6bd78b38 ^



e087f6d4

2a94396c ^
945e8eb6 ^
2a94396c ^
e087f6d4

57bfc74f ^
2a94396c ^
e087f6d4


2a94396c ^
e087f6d4

2a94396c ^
e087f6d4
57bfc74f ^

e087f6d4












6e75abc0 ^
e087f6d4




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
                    











                         
 
                    




                    
                    

                          
  


                                                                      
 



                                     
                                      

                              
                              


                                        
                   






                          
 

                                                               

                                  

     

                                         
      
                                             

                                            





                                                               



                                                                    


         
                             
                                  
                                                        
                                 












                                                                                                  

                    
                                       

                                                                       

                          
                                                 





                                          

                                                             

                                    
                                                 





                                           
                                                

                           
                                            
                            
                                                                     
                                                   
                            
                                                                     
              
                                                   
                            
                                                                     
      
                    

                                                                     
             
                                                                  
              
                                            







                                                                            
                                                                      
             
      

                                           
                                                                              

                                            
                                                                               
                                            
                                                                          
                                                      


                                         
                                                  

                                           
                                                               
 
                                           
                                                               

                                           
                                                                 
 
                                                    
                                                    







                                                                     
                                              
                                              
                      

                                                     

                                                  


                                                                            
                                                    


                                                                     
                                             



                                               
                                              
                                              
                      

                                                     

                                                  


                                                                             
                                                    







                                                                     
                                              
                                              
                      
                                               
              
                                                     
                                                  
      
                 






                                                                             

                                                                     


                                    
                                                 
                                                        

                                        
                             
                
                                                                             
 
                                    
                                                        
                                                
            
                                                                
                                                                               
                                                             


                                                                        

                                                                    
                                                                  


                                     
 
                                                        
                                                                  

                                                      
                                                                            

                                                              
                                                        

                         

                                                                           

                                                                             


                        
                                             
                                 
            
                                      
     
                                                         
 

                                                                               
 
                                                                       

                                                           
                                             
                                                              
              




                                               
                                                                      

                                                       
                                                           


                                                          

                                                                      

                                                                     


                                                                      



                                                                               

                                                       
                                                                            
                                         
                                                                               

                                                         
                                                          
                                                        


                                         
                                                            

                                       
                                        
             

                                                                              












                                                              
                          




                  
#include <HTUtils.h>
#include <HTParse.h>
#include <HTAlert.h>
#include <HTTP.h>
#include <LYCurses.h>
#include <LYStrings.h>
#include <LYUtils.h>
#include <LYStructs.h>
#include <LYGlobalDefs.h>
#include <LYShowInfo.h>
#include <LYSignal.h>
#include <LYCharUtils.h>
#include <GridText.h>

#include <LYLeaks.h>

#ifdef DIRED_SUPPORT
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <LYLocal.h>
#endif /* DIRED_SUPPORT */

/*
 *  Showinfo prints a page of info about the current file and the link
 *  that the cursor is on.
 */

PUBLIC int showinfo ARGS4(
	document *,	doc,
	int,		size_of_file,
	document *,	newdoc,
	char *, 	owner_address)
{
    static char tempfile[256];
    static char info_url[256];
    int url_type;
    FILE *fp0;
    char *Address = NULL, *Title = NULL;
    CONST char *cp;

#ifdef DIRED_SUPPORT
    char temp[300];
    struct stat dir_info;
    struct passwd *pw;
    struct group *grp;
#endif /* DIRED_SUPPORT */

    LYRemoveTemp(tempfile);
    if ((fp0 = LYOpenTemp (tempfile, HTML_SUFFIX, "w")) == 0) {
	HTAlert(CANNOT_OPEN_TEMP);
	return(0);
    }

    LYLocalFileToURL(info_url, tempfile);

    /*
     *	Point the address pointer at this Url
     */
    StrAllocCopy(newdoc->address, info_url);

    if (nlinks > 0 && links[doc->link].lname != NULL &&
	(url_type = is_url(links[doc->link].lname)) != 0 &&
	(url_type == LYNXEXEC_URL_TYPE ||
	 url_type == LYNXPROG_URL_TYPE)) {
	char *last_slash = strrchr(links[doc->link].lname,'/');
	int next_to_last = strlen(links[doc->link].lname) - 1;

	if ((last_slash - links[doc->link].lname) == next_to_last) {
	    links[doc->link].lname[next_to_last] = '\0';
	}
    }

    fprintf(fp0, "<head>\n");
    LYAddMETAcharsetToFD(fp0, -1);
    fprintf(fp0, "<title>%s</title>\n</head>\n<body>\n",
		 SHOWINFO_TITLE);

#ifdef LYNX_COMPILE_OPTS
    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>) - <a href=\"%s\">compile time settings</a>\n",
		 LYNX_NAME, LYNX_VERSION,
		 (LYNX_RELEASE ? LYNX_WWW_HOME   : LYNX_WWW_DIST),
		 (LYNX_RELEASE ? "major release" : "development version"),
		 LYNX_COMPILE_OPTS);
#else
    fprintf(fp0, "<h1>%s %s (<a href=\"%s\">%s</a>)\n",
		 LYNX_NAME, LYNX_VERSION,
		 (LYNX_RELEASE ? LYNX_WWW_HOME   : LYNX_WWW_DIST),
		 (LYNX_RELEASE ? "major release" : "development version") );
#endif

#ifdef DIRED_SUPPORT
    if (lynx_edit_mode && nlinks > 0) {
	fprintf(fp0, "<pre>\n");
	fprintf(fp0, "\nDirectory that you are currently viewing\n\n");

	cp = doc->address;
	if (!strncmp(cp, "file://localhost", 16))
	    cp += 16;
	else if (!strncmp(cp, "file:", 5))
	    cp += 5;
	strcpy(temp, cp);
	HTUnEscape(temp);

	fprintf(fp0,"   <em>Name:</em>  %s\n", temp);
	fprintf(fp0,"   <em> URL:</em>  %s\n", doc->address);

	cp = links[doc->link].lname;
	if (!strncmp(cp, "file://localhost", 16))
	    cp += 16;
	else if (!strncmp(cp, "file:", 5))
	    cp += 5;
	strcpy(temp, cp);
	HTUnEscape(temp);
	if (lstat(temp, &dir_info) == -1) {
	    HTAlert(CURRENT_LINK_STATUS_FAILED);
	} else {
	    char modes[80];
	    if (S_ISDIR(dir_info.st_mode)) {
		fprintf(fp0,
		 "\nDirectory that you have currently selected\n\n");
	    } else if (S_ISREG(dir_info.st_mode)) {
		fprintf(fp0,
		      "\nFile that you have currently selected\n\n");
#ifdef S_IFLNK
	    } else if (S_ISLNK(dir_info.st_mode)) {
		fprintf(fp0,
	     "\nSymbolic link that you have currently selected\n\n");
#endif
	    } else {
		fprintf(fp0,
		      "\nItem that you have currently selected\n\n");
	    }
	    fprintf(fp0,"       <em>Full name:</em>  %s\n", temp);
#ifdef S_IFLNK
	    if (S_ISLNK(dir_info.st_mode)) {
		char buf[1025];
		int buf_size;

		if ((buf_size = readlink(temp, buf, sizeof(buf)-1)) != -1) {
		    buf[buf_size] = '\0';
		} else {
		    strcpy(buf, "Unable to follow link");
		}
		fprintf(fp0, "  <em>Points to file:</em>  %s\n", buf);
	    }
#endif
	    pw = getpwuid(dir_info.st_uid);
	    if (pw)
		fprintf(fp0, "   <em>Name of owner:</em>  %s\n", pw->pw_name);
	    grp = getgrgid(dir_info.st_gid);
	    if (grp && grp->gr_name)
		fprintf(fp0, "      <em>Group name:</em>  %s\n", grp->gr_name);
	    if (S_ISREG(dir_info.st_mode)) {
		sprintf(temp, "       <em>File size:</em>  %ld (bytes)\n",
			      (long)dir_info.st_size);
		fprintf(fp0, "%s", temp);
	    }
	    /*
	     *	Include date and time information.
	     */
	    cp = ctime(&dir_info.st_ctime);
	    fprintf(fp0, "   <em>Creation date:</em>  %s", cp);

	    cp = ctime(&dir_info.st_mtime);
	    fprintf(fp0, "   <em>Last modified:</em>  %s", cp);

	    cp = ctime(&dir_info.st_atime);
	    fprintf(fp0, "   <em>Last accessed:</em>  %s\n", cp);

	    fprintf(fp0, "   Access Permissions\n");
	    fprintf(fp0, "      <em>Owner:</em>  ");
	    modes[0] = '\0';
	    modes[1] = '\0';   /* In case there are no permissions */
	    modes[2] = '\0';
	    if ((dir_info.st_mode & S_IRUSR))
		strcat(modes, ", read");
	    if ((dir_info.st_mode & S_IWUSR))
		strcat(modes, ", write");
	    if ((dir_info.st_mode & S_IXUSR)) {
		if (S_ISDIR(dir_info.st_mode))
		    strcat(modes, ", search");
		else {
		    strcat(modes, ", execute");
		    if ((dir_info.st_mode & S_ISUID))
			strcat(modes, ", setuid");
		}
	    }
	    fprintf(fp0, "%s\n", (char *)&modes[2]); /* Skip leading ', ' */

	    fprintf(fp0, "      <em>Group:</em>  ");
	    modes[0] = '\0';
	    modes[1] = '\0';   /* In case there are no permissions */
	    modes[2] = '\0';
	    if ((dir_info.st_mode & S_IRGRP))
		strcat(modes, ", read");
	    if ((dir_info.st_mode & S_IWGRP))
		strcat(modes, ", write");
	    if ((dir_info.st_mode & S_IXGRP)) {
		if (S_ISDIR(dir_info.st_mode))
		    strcat(modes, ", search");
		else {
		    strcat(modes, ", execute");
		    if ((dir_info.st_mode & S_ISGID))
			strcat(modes, ", setgid");
		}
	    }
	    fprintf(fp0, "%s\n", (char *)&modes[2]);  /* Skip leading ', ' */

	    fprintf(fp0, "      <em>World:</em>  ");
	    modes[0] = '\0';
	    modes[1] = '\0';   /* In case there are no permissions */
	    modes[2] = '\0';
	    if ((dir_info.st_mode & S_IROTH))
		strcat(modes, ", read");
	    if ((dir_info.st_mode & S_IWOTH))
		strcat(modes, ", write");
	    if ((dir_info.st_mode & S_IXOTH)) {
		if (S_ISDIR(dir_info.st_mode))
		    strcat(modes, ", search");
		else {
		    strcat(modes, ", execute");
#ifdef S_ISVTX
		    if ((dir_info.st_mode & S_ISVTX))
			strcat(modes, ", sticky");
#endif
		}
	    }
	    fprintf(fp0, "%s\n", (char *)&modes[2]);  /* Skip leading ', ' */
	}
	fprintf(fp0,"</pre>\n");
    } else {
#endif /* DIRED_SUPPORT */

    fprintf(fp0,
       "<h2>File that you are currently viewing</h2>\n<dl compact>");

    StrAllocCopy(Title, doc->title);
    LYEntify(&Title, TRUE);
    fprintf(fp0, "<dt><em>Linkname:</em> %s%s\n",
		 Title, (doc->isHEAD ? " (HEAD)" : ""));

    StrAllocCopy(Address, doc->address);
    LYEntify(&Address, TRUE);
    fprintf(fp0,
	    "<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>URL:</em> %s\n", Address);

    if (HTLoadedDocumentCharset()) {
	fprintf(fp0, "<dt><em>&nbsp;Charset:</em> %s\n",
		     HTLoadedDocumentCharset());
    } else {
      LYUCcharset * p_in = HTAnchor_getUCInfoStage(HTMainAnchor,
							     UCT_STAGE_PARSER);
      if (!p_in || !(p_in->MIMEname) || !*(p_in->MIMEname) ||
	   HTAnchor_getUCLYhndl(HTMainAnchor, UCT_STAGE_PARSER) < 0) {
	   p_in = HTAnchor_getUCInfoStage(HTMainAnchor, UCT_STAGE_MIME);
      }
      if (p_in && p_in->MIMEname && *(p_in->MIMEname) &&
	  HTAnchor_getUCLYhndl(HTMainAnchor, UCT_STAGE_MIME) >= 0) {
	fprintf(fp0, "<dt><em>&nbsp;Charset:</em> %s (assumed)\n",
		     p_in->MIMEname);
      }
    }

    if ((cp = HText_getServer()) != NULL && *cp != '\0')
	fprintf(fp0, "<dt><em>&nbsp;&nbsp;Server:</em> %s\n", cp);

    if ((cp = HText_getDate()) != NULL && *cp != '\0')
	fprintf(fp0, "<dt><em>&nbsp;&nbsp;&nbsp;&nbsp;Date:</em> %s\n", cp);

    if ((cp = HText_getLastModified()) != NULL && *cp != '\0')
	fprintf(fp0, "<dt><em>Last Mod:</em> %s\n", cp);

    if (doc->post_data) {
	fprintf(fp0,
		"<dt><em>Post Data:</em> <xmp>%s</xmp>\n", doc->post_data);
	fprintf(fp0,
	     "<dt><em>Post Content Type:</em> %s\n", doc->post_content_type);
    }

    if (owner_address) {
	StrAllocCopy(Address, owner_address);
	LYEntify(&Address, TRUE);
    } else {
	StrAllocCopy(Address, "None");
    }
    fprintf(fp0, "<dt><em>Owner(s):</em> %s\n", Address);

    fprintf(fp0,
	"<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>size:</em> %d lines\n", size_of_file);

    fprintf(fp0, "<dt>&nbsp;&nbsp;&nbsp;&nbsp;<em>mode:</em> %s%s%s\n",
		 (lynx_mode == FORMS_LYNX_MODE ?
				  "forms mode" : "normal"),
		 (doc->safe ? ", safe" : ""),
		 (doc->internal_link ? ", internal link" : "")
	    );

    fprintf(fp0, "</dl>\n");  /* end of list */

    if (nlinks > 0) {
	fprintf(fp0,
      "<h2>Link that you currently have selected</h2>\n<dl compact>");
	StrAllocCopy(Title, links[doc->link].hightext);
	LYEntify(&Title, TRUE);
	fprintf(fp0, "<dt><em>Linkname:</em> %s\n", Title);
	if (lynx_mode == FORMS_LYNX_MODE &&
	    links[doc->link].type == WWW_FORM_LINK_TYPE) {
	    if (links[doc->link].form->submit_method) {
		int method = links[doc->link].form->submit_method;
		char *enctype = links[doc->link].form->submit_enctype;

		fprintf(fp0, "<dt>&nbsp;&nbsp;<em>Method:</em> %s\n",
			     (method == URL_POST_METHOD) ? "POST" :
			     (method == URL_MAIL_METHOD) ? "(email)" :
							   "GET");
		fprintf(fp0, "<dt>&nbsp;<em>Enctype:</em> %s\n",
			     (enctype &&
			      *enctype ?
			       enctype : "application/x-www-form-urlencoded"));
	    }
	    if (links[doc->link].form->submit_action) {
		StrAllocCopy(Address, links[doc->link].form->submit_action);
		LYEntify(&Address, TRUE);
		fprintf(fp0, "<dt>&nbsp;&nbsp;<em>Action:</em> %s\n", Address);
	    }
	    if (!(links[doc->link].form->submit_method &&
		  links[doc->link].form->submit_action)) {
		fprintf(fp0,"<dt>&nbsp;(Form field)\n");
	    }
	} else {
	    if (links[doc->link].lname) {
		StrAllocCopy(Title, links[doc->link].lname);
		LYEntify(&Title, TRUE);
	    } else {
		StrAllocCopy(Title, "");
	    }
	    fprintf(fp0,
	       "<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>URL:</em> %s\n", Title);
	}
	fprintf(fp0, "</dl>\n");  /* end of list */

    } else
	fprintf(fp0, "<h2>No Links on the current page</h2>");

#ifdef DIRED_SUPPORT
    }
#endif /* DIRED_SUPPORT */
    fprintf(fp0, "</body>\n");

    refresh();

    LYCloseTemp(tempfile);
    FREE(Address);
    FREE(Title);

    return(1);
}