[w3m-dev 03708] Re: Don't stop loading image when moving to next page.

* config.h.dist (lstat): define ifndef HAVE_LSTAT
* configure (config.h) ditto
* display.c (fmTerm): new loadImage
	(save_current_buf): only ifdef USE_BUFINFO
	(displayBuffer): new loadImage
* etc.c (setup_child): TrapSignal
* file.c (loadGeneralFile): TRAP_OFF, TRAP_ON
	(loadHTMLstream): ditto
	(loadGopherDir): ditto
	(loadBuffer): ditto
	(loadImageBuffer): ditto
	(getNextPage): ditto
	(save2tmp): ditto
* fm.h (TrapSignal): added
	(TRAP_ON): added
	(TRAP_OFF): added
* form.c (HAVE_LSTAT): deleted
* frame.c (createFrameFile): TRAP_OFF, TRAP_ON
* image.c (image_buffer): added
	(deleteImage): new loadImage
	(getAllImage): initialize image_buffer
	(loadImage): rewrite
* main.c (main): new loadImage
	(checkDownloadList): remove ifdef HAVE_LSTAT
* news.c (loadNwesgroup): TRAP_ON, TRAP_OFF
* proto.h (loadImage): add buf arg
* url.c (openSocket): TRAP_ON, TRAP_OFF
	(check_no_proxy): TRAP_ON, TRAP_OFF
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2003-01-29 17:10:17 +00:00
parent 6a009d9482
commit b0a661730f
14 changed files with 183 additions and 237 deletions
+35 -3
View File
@@ -1,11 +1,43 @@
2003-01-29 NAKAJIMA Mikio <minakaji@osaka.email.ne.jp>
2003-01-30 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 03708] Re: Don't stop loading image when moving to next page.
* config.h.dist (lstat): define ifndef HAVE_LSTAT
* configure (config.h) ditto
* display.c (fmTerm): new loadImage
(save_current_buf): only ifdef USE_BUFINFO
(displayBuffer): new loadImage
* etc.c (setup_child): TrapSignal
* file.c (loadGeneralFile): TRAP_OFF, TRAP_ON
(loadHTMLstream): ditto
(loadGopherDir): ditto
(loadBuffer): ditto
(loadImageBuffer): ditto
(getNextPage): ditto
(save2tmp): ditto
* fm.h (TrapSignal): added
(TRAP_ON): added
(TRAP_OFF): added
* form.c (HAVE_LSTAT): deleted
* frame.c (createFrameFile): TRAP_OFF, TRAP_ON
* image.c (image_buffer): added
(deleteImage): new loadImage
(getAllImage): initialize image_buffer
(loadImage): rewrite
* main.c (main): new loadImage
(checkDownloadList): remove ifdef HAVE_LSTAT
* news.c (loadNwesgroup): TRAP_ON, TRAP_OFF
* proto.h (loadImage): add buf arg
* url.c (openSocket): TRAP_ON, TRAP_OFF
(check_no_proxy): TRAP_ON, TRAP_OFF
2003-01-29 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 03707] Don't stop loading image when moving to next page.
* display.c (save_current_buf): required when defined USE_IMAGE
(displayBuffer): stop only buffer changed
* image.c (loadImage): IMG_FLAG_START load from maxLoadImage
2003-01-29 NAKAJIMA Mikio <minakaji@osaka.email.ne.jp>
2003-01-29 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 03706] X-Image-URL: support, bug fix of reshapeBuffer()
* buffer.c (reshapeBuffer): rewrite
@@ -6899,4 +6931,4 @@ a * [w3m-dev 03276] compile error on EWS4800
* release-0-2-1
* import w3m-0.2.1
$Id: ChangeLog,v 1.722 2003/01/28 16:45:15 ukai Exp $
$Id: ChangeLog,v 1.723 2003/01/29 17:10:17 ukai Exp $
+4
View File
@@ -238,6 +238,10 @@ typedef void MySignalHandler;
#endif /* HAVE_SRANDOM */
#endif
#ifndef HAVE_LSTAT
#define lstat stat
#endif
#if defined( __CYGWIN32__ ) && !defined( __CYGWIN__ )
#define __CYGWIN__
#endif
Vendored
+5 -1
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# $Id: configure,v 1.95 2003/01/22 16:36:11 ukai Exp $
# $Id: configure,v 1.96 2003/01/29 17:10:25 ukai Exp $
# Configuration.
#
@@ -2504,6 +2504,10 @@ $def_ipv6_ss_family
#endif /* HAVE_SRANDOM */
#endif
#ifndef HAVE_LSTAT
#define lstat stat
#endif
#if defined( __CYGWIN32__ ) && !defined( __CYGWIN__ )
#define __CYGWIN__
#endif
+5 -13
View File
@@ -1,4 +1,4 @@
/* $Id: display.c,v 1.58 2003/01/28 16:45:18 ukai Exp $ */
/* $Id: display.c,v 1.59 2003/01/29 17:10:27 ukai Exp $ */
#include <signal.h>
#include "fm.h"
@@ -164,7 +164,7 @@ fmTerm(void)
refresh();
#ifdef USE_IMAGE
if (activeImage)
loadImage(IMG_FLAG_STOP);
loadImage(NULL, IMG_FLAG_STOP);
#endif
#ifdef USE_MOUSE
if (use_mouse)
@@ -210,7 +210,7 @@ static int graph_mode = 0;
static Linecolor color_mode = 0;
#endif
#if defined(USE_BUFINFO) || defined(USE_IMAGE)
#ifdef USE_BUFINFO
static Buffer *save_current_buf = NULL;
#endif
@@ -431,10 +431,7 @@ displayBuffer(Buffer *buf, int mode)
if (draw_image_flag)
clear();
clearImage();
if (buf != save_current_buf)
loadImage(IMG_FLAG_STOP);
else
loadImage(IMG_FLAG_START);
loadImage(buf, IMG_FLAG_STOP);
image_touch++;
draw_image_flag = FALSE;
}
@@ -472,17 +469,12 @@ displayBuffer(Buffer *buf, int mode)
refresh();
#ifdef USE_IMAGE
if (activeImage && displayImage && buf->img) {
/*
* loadImage(IMG_FLAG_START);
*/
drawImage();
}
#endif
#if defined(USE_BUFINFO) || defined(USE_IMAGE)
if (buf != save_current_buf) {
#ifdef USE_BUFINFO
if (buf != save_current_buf) {
saveBufferInfo();
#endif
save_current_buf = buf;
}
#endif
+2 -1
View File
@@ -1,4 +1,4 @@
/* $Id: etc.c,v 1.60 2003/01/25 17:42:17 ukai Exp $ */
/* $Id: etc.c,v 1.61 2003/01/29 17:10:30 ukai Exp $ */
#include "fm.h"
#include <pwd.h>
#include "myctype.h"
@@ -1367,6 +1367,7 @@ setup_child(int child, int i, int f)
close_all_fds_except(i, f);
QuietMessage = TRUE;
fmInitialized = FALSE;
TrapSignal = FALSE;
}
pid_t
+34 -98
View File
@@ -1,4 +1,4 @@
/* $Id: file.c,v 1.210 2003/01/28 16:41:05 ukai Exp $ */
/* $Id: file.c,v 1.211 2003/01/29 17:10:32 ukai Exp $ */
#include "fm.h"
#include <sys/types.h>
#include "myctype.h"
@@ -1583,10 +1583,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
checkRedirection(NULL);
load_doc:
if (fmInitialized)
term_raw();
if (prevtrap)
signal(SIGINT, prevtrap);
TRAP_OFF;
url_option.referer = referer;
url_option.flag = flag;
f = openURL(tpath, &pu, current, &url_option, request, extra_header, of,
@@ -1654,10 +1651,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
}
if (status == HTST_MISSING) {
if (fmInitialized)
term_raw();
if (prevtrap)
signal(SIGINT, prevtrap);
TRAP_OFF;
UFclose(&f);
return NULL;
}
@@ -1665,9 +1659,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
/* openURL() succeeded */
if (SETJMP(AbortLoading) != 0) {
/* transfer interrupted */
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
if (b)
discardBuffer(b);
UFclose(&f);
@@ -1682,9 +1674,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
}
if (header_string)
header_string = NULL;
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
if (pu.scheme == SCM_HTTP ||
#ifdef USE_SSL
pu.scheme == SCM_HTTPS ||
@@ -1754,9 +1744,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
if (ss == NULL) {
/* abort */
UFclose(&f);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return NULL;
}
UFclose(&f);
@@ -1778,9 +1766,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
if (ss == NULL) {
/* abort */
UFclose(&f);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return NULL;
}
UFclose(&f);
@@ -1818,9 +1804,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
case 'm':
page = loadGopherDir(&f, &pu, &code);
t = "gopher:directory";
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
goto page_loaded;
case 's':
t = "audio/basic";
@@ -1865,9 +1849,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
UFclose(&f);
else {
UFclose(&f);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
doFileMove(tmpf, guess_save_name(t_buf, pu.file));
}
return NO_BUFFER;
@@ -1971,9 +1953,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
if (do_download) {
/* download only */
char *file;
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
if (DecodeCTE && IStype(f.stream) != IST_ENCODED)
f.stream = newEncodedStream(f.stream, f.encoding);
if (pu.scheme == SCM_LOCAL) {
@@ -2016,9 +1996,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
b->real_type = t;
}
UFclose(&f);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return b;
}
#endif
@@ -2044,15 +2022,11 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
copyParsedURL(&b->currentURL, &pu);
}
UFclose(&f);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return b;
}
else {
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
if (pu.scheme == SCM_LOCAL) {
UFclose(&f);
_doFileCopy(pu.real_file,
@@ -2140,9 +2114,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
reAnchorNewsheader(b);
#endif
preFormUpdateBuffer(b);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return b;
}
@@ -6572,9 +6544,7 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)
HTMLlineproc1("<br>Transfer Interrupted!<br>", &htmlenv1);
goto phase2;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
#ifdef JP_CHARSET
if (newBuf != NULL && newBuf->document_code != '\0')
@@ -6645,25 +6615,19 @@ loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src, int internal)
if (htmlenv1.title)
newBuf->buffername = htmlenv1.title;
if (w3m_halfdump) {
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
print_internal_information(&htmlenv1);
return;
}
if (w3m_backend) {
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
print_internal_information(&htmlenv1);
backend_halfdump_buf = htmlenv1.buf;
return;
}
phase2:
newBuf->trbyte = trbyte + linelen;
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
#ifdef JP_CHARSET
newBuf->document_code = code;
content_charset = '\0';
@@ -6686,22 +6650,16 @@ loadHTMLString(Str page)
newBuf = newBuffer(INIT_BUFFER_WIDTH);
if (SETJMP(AbortLoading) != 0) {
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
discardBuffer(newBuf);
return NULL;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
init_stream(&f, SCM_LOCAL, newStrStream(page));
loadHTMLstream(&f, newBuf, NULL, TRUE);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
newBuf->topLine = newBuf->firstLine;
newBuf->lastLine = newBuf->currentLine;
newBuf->currentLine = newBuf->firstLine;
@@ -6740,9 +6698,7 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, char *code)
if (SETJMP(AbortLoading) != 0)
goto gopher_end;
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
#ifdef JP_CHARSET
*code = DocumentCode;
@@ -6804,9 +6760,7 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, char *code)
}
gopher_end:
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
Strcat_charp(tmp, "</table>\n</body>\n</html>\n");
return tmp;
@@ -6839,9 +6793,7 @@ loadBuffer(URLFile *uf, Buffer *volatile newBuf)
if (SETJMP(AbortLoading) != 0) {
goto _end;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
if (newBuf->sourcefile == NULL &&
(uf->scheme != SCM_LOCAL || newBuf->mailcap)) {
@@ -6906,9 +6858,7 @@ loadBuffer(URLFile *uf, Buffer *volatile newBuf)
lineBuf2->length, FOLD_BUFFER_WIDTH, nlines);
}
_end:
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
newBuf->topLine = newBuf->firstLine;
newBuf->lastLine = newBuf->currentLine;
newBuf->currentLine = newBuf->firstLine;
@@ -6931,10 +6881,10 @@ loadImageBuffer(URLFile *uf, Buffer *newBuf)
Str tmp, tmpf;
FILE *src = NULL;
URLFile f;
MySignalHandler(*prevtrap) ();
MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;
struct stat st;
loadImage(IMG_FLAG_STOP);
loadImage(newBuf, IMG_FLAG_STOP);
image.url = uf->url;
image.ext = uf->ext;
image.width = -1;
@@ -6945,22 +6895,16 @@ loadImageBuffer(URLFile *uf, Buffer *newBuf)
!stat(cache->file, &st))
goto image_buffer;
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
if (IStype(uf->stream) != IST_ENCODED)
uf->stream = newEncodedStream(uf->stream, uf->encoding);
if (save2tmp(*uf, cache->file) < 0) {
UFclose(uf);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return NULL;
}
UFclose(uf);
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
cache->loaded = IMG_FLAG_LOADED;
cache->index = 0;
@@ -7242,9 +7186,7 @@ getNextPage(Buffer *buf, int plen)
if (SETJMP(AbortLoading) != 0) {
goto pager_end;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
init_stream(&uf, SCM_UNKNOWN, NULL);
for (i = 0; i < plen; i++) {
@@ -7307,9 +7249,7 @@ getNextPage(Buffer *buf, int plen)
}
}
pager_end:
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
buf->trbyte = trbyte + linelen;
#ifdef JP_CHARSET
@@ -7342,9 +7282,7 @@ save2tmp(URLFile uf, char *tmpf)
if (SETJMP(AbortLoading) != 0) {
goto _end;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
check = 0;
#ifdef USE_NNTP
if (uf.scheme == SCM_NEWS) {
@@ -7379,9 +7317,7 @@ save2tmp(URLFile uf, char *tmpf)
}
_end:
bcopy(env_bak, AbortLoading, sizeof(JMP_BUF));
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
fclose(ff);
current_content_length = 0;
return 0;
+13 -1
View File
@@ -1,4 +1,4 @@
/* $Id: fm.h,v 1.109 2003/01/27 16:18:52 ukai Exp $ */
/* $Id: fm.h,v 1.110 2003/01/29 17:10:37 ukai Exp $ */
/*
* w3m: WWW wo Miru utility
*
@@ -778,6 +778,18 @@ global char MetaRefresh init(FALSE);
global char fmInitialized init(FALSE);
global char QuietMessage init(FALSE);
global char TrapSignal init(TRUE);
#define TRAP_ON if (TrapSignal) { \
prevtrap = signal(SIGINT, KeyAbort); \
if (fmInitialized) \
term_cbreak(); \
}
#define TRAP_OFF if (TrapSignal) { \
if (fmInitialized) \
term_raw(); \
if (prevtrap) \
signal(SIGINT, prevtrap); \
}
extern unsigned char GlobalKeymap[];
extern unsigned char EscKeymap[];
+1 -8
View File
@@ -1,4 +1,4 @@
/* $Id: form.c,v 1.29 2003/01/20 15:22:59 ukai Exp $ */
/* $Id: form.c,v 1.30 2003/01/29 17:10:38 ukai Exp $ */
/*
* HTML forms
*/
@@ -9,13 +9,6 @@
#include "local.h"
#include "regex.h"
#ifndef HAVE_LSTAT
/* lstat is identical to stat, only the link itself is statted, not the file
* that is obtained by tracing the links. But on OS/2 systems, there is no
* differences. */
#define lstat stat
#endif /* not HAVE_LSTAT */
extern Str *textarea_str;
#ifdef MENU_SELECT
extern FormSelectOption *select_option;
+4 -11
View File
@@ -1,4 +1,4 @@
/* $Id: frame.c,v 1.30 2003/01/20 15:30:20 ukai Exp $ */
/* $Id: frame.c,v 1.31 2003/01/29 17:10:39 ukai Exp $ */
#include "fm.h"
#include "parsetagx.h"
#include "myctype.h"
@@ -424,15 +424,10 @@ createFrameFile(struct frameset *f, FILE * f1, Buffer *current, int level,
if (level == 0) {
if (SETJMP(AbortLoading) != 0) {
if (fmInitialized)
term_raw();
signal(SIGINT, prevtrap);
TRAP_OFF;
return -1;
}
prevtrap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
f->name = "_top";
}
@@ -852,9 +847,7 @@ createFrameFile(struct frameset *f, FILE * f1, Buffer *current, int level,
fputs("</table>\n", f1);
if (level == 0) {
fputs("</body></html>\n", f1);
signal(SIGINT, prevtrap);
if (fmInitialized)
term_raw();
TRAP_OFF;
}
return 0;
}
+64 -62
View File
@@ -1,4 +1,4 @@
/* $Id: image.c,v 1.28 2003/01/28 16:45:19 ukai Exp $ */
/* $Id: image.c,v 1.30 2003/01/29 17:10:40 ukai Exp $ */
#include "fm.h"
#include <sys/types.h>
@@ -243,6 +243,7 @@ static Hash_sv *image_hash = NULL;
static Hash_sv *image_file = NULL;
static GeneralList *image_list = NULL;
static ImageCache **image_cache = NULL;
static Buffer *image_buffer = NULL;
void
deleteImage(Buffer *buf)
@@ -263,7 +264,7 @@ deleteImage(Buffer *buf)
a->image->cache->index < 0)
unlink(a->image->cache->file);
}
loadImage(IMG_FLAG_STOP);
loadImage(NULL, IMG_FLAG_STOP);
}
void
@@ -274,6 +275,7 @@ getAllImage(Buffer *buf)
ParsedURL *current;
int i;
image_buffer = buf;
if (!buf)
return;
buf->image_loaded = TRUE;
@@ -318,11 +320,11 @@ showImageProgress(Buffer *buf)
}
void
loadImage(int flag)
loadImage(Buffer *buf, int flag)
{
ImageCache *cache;
struct stat st;
int wait_st, i;
int wait_st, i, draw = FALSE;
if (maxLoadImage > MAX_LOAD_IMAGE)
maxLoadImage = MAX_LOAD_IMAGE;
@@ -334,74 +336,71 @@ loadImage(int flag)
image_cache = New_N(ImageCache *, MAX_LOAD_IMAGE);
bzero(image_cache, sizeof(ImageCache *) * MAX_LOAD_IMAGE);
}
if (flag == IMG_FLAG_STOP || flag == IMG_FLAG_START) {
if (flag == IMG_FLAG_STOP)
i = 0;
else
i = maxLoadImage;
for ( ; i < n_load_image; i++) {
cache = image_cache[i];
if (!cache)
continue;
if (cache->pid) {
kill(cache->pid, SIGKILL);
for (i = 0; i < n_load_image; i++) {
cache = image_cache[i];
if (!cache)
continue;
if (lstat(cache->touch, &st))
continue;
if (cache->pid) {
kill(cache->pid, SIGKILL);
/*
#ifdef HAVE_WAITPID
waitpid(cache->pid, &wait_st, 0);
waitpid(cache->pid, &wait_st, 0);
#else
wait(&wait_st);
wait(&wait_st);
#endif
cache->pid = 0;
}
unlink(cache->touch);
image_cache[i] = NULL;
*/
cache->pid = 0;
}
if (!stat(cache->file, &st)) {
cache->loaded = IMG_FLAG_LOADED;
if (getImageSize(cache)) {
if (image_buffer)
image_buffer->need_reshape = TRUE;
}
draw = TRUE;
}
else
cache->loaded = IMG_FLAG_ERROR;
unlink(cache->touch);
image_cache[i] = NULL;
}
for (i = (buf != image_buffer) ? 0 : maxLoadImage; i < n_load_image; i++) {
cache = image_cache[i];
if (!cache)
continue;
if (cache->pid) {
kill(cache->pid, SIGKILL);
/*
#ifdef HAVE_WAITPID
waitpid(cache->pid, &wait_st, 0);
#else
wait(&wait_st);
#endif
*/
cache->pid = 0;
}
unlink(cache->touch);
image_cache[i] = NULL;
}
if (flag == IMG_FLAG_STOP) {
image_list = NULL;
image_file = NULL;
n_load_image = maxLoadImage;
image_buffer = NULL;
return;
}
{
int draw = FALSE;
for (i = 0; i < n_load_image; i++) {
cache = image_cache[i];
if (!cache)
continue;
#ifdef HAVE_LSTAT
if (lstat(cache->touch, &st))
#else
if (stat(cache->touch, &st))
#endif
continue;
if (cache->pid) {
kill(cache->pid, SIGKILL);
#ifdef HAVE_WAITPID
waitpid(cache->pid, &wait_st, 0);
#else
wait(&wait_st);
#endif
cache->pid = 0;
}
if (!stat(cache->file, &st)) {
cache->loaded = IMG_FLAG_LOADED;
if (getImageSize(cache)) {
if (CurrentTab && Currentbuf)
Currentbuf->need_reshape = TRUE;
}
draw = TRUE;
}
else
cache->loaded = IMG_FLAG_ERROR;
unlink(cache->touch);
image_cache[i] = NULL;
}
if (draw && CurrentTab && Currentbuf) {
drawImage();
showImageProgress(Currentbuf);
}
if (draw && image_buffer) {
drawImage();
showImageProgress(image_buffer);
}
image_buffer = buf;
if (!image_list)
return;
for (i = 0; i < n_load_image; i++) {
@@ -416,8 +415,8 @@ loadImage(int flag)
}
image_list = NULL;
image_file = NULL;
if (CurrentTab && Currentbuf)
displayBuffer(Currentbuf, B_NORMAL);
if (image_buffer)
displayBuffer(image_buffer, B_NORMAL);
return;
}
if (cache->loaded == IMG_FLAG_UNLOADED)
@@ -428,7 +427,10 @@ loadImage(int flag)
flush_tty();
if ((cache->pid = fork()) == 0) {
Buffer *b;
/*
setup_child(TRUE, 0, -1);
*/
setup_child(FALSE, 0, -1);
image_source = cache->file;
b = loadGeneralFile(cache->url, cache->current, NULL, 0, NULL);
if (!b || !b->real_type || strncasecmp(b->real_type, "image/", 6))
+2 -10
View File
@@ -1,4 +1,4 @@
/* $Id: main.c,v 1.202 2003/01/28 16:34:25 ukai Exp $ */
/* $Id: main.c,v 1.203 2003/01/29 17:10:41 ukai Exp $ */
#define MAINPROGRAM
#include "fm.h"
#include <signal.h>
@@ -1039,7 +1039,7 @@ main(int argc, char **argv, char **envp)
if (activeImage && displayImage && Currentbuf->img &&
!Currentbuf->image_loaded) {
do {
loadImage(IMG_FLAG_NEXT);
loadImage(Currentbuf, IMG_FLAG_NEXT);
} while (sleep_till_anykey(1, 0) <= 0);
}
#endif
@@ -6089,11 +6089,7 @@ checkDownloadList(void)
if (!FirstDL)
return FALSE;
for (d = FirstDL; d != NULL; d = d->next) {
#ifdef HAVE_LSTAT
if (!d->ok && !lstat(d->lock, &st))
#else
if (!d->ok && !stat(d->lock, &st))
#endif
return TRUE;
}
return FALSE;
@@ -6131,11 +6127,7 @@ DownloadListBuffer(void)
DOWNLOAD_LIST_TITLE "</h1>\n"
"<form method=internal action=download><hr>\n");
for (d = LastDL; d != NULL; d = d->prev) {
#ifdef HAVE_LSTAT
if (lstat(d->lock, &st))
#else
if (stat(d->lock, &st))
#endif
d->ok = TRUE;
Strcat_charp(src, "<pre>\n");
Strcat(src, Sprintf("%s\n --&gt; %s\n ", html_quote(d->url),
+4 -8
View File
@@ -1,4 +1,4 @@
/* $Id: news.c,v 1.14 2003/01/15 16:24:25 ukai Exp $ */
/* $Id: news.c,v 1.15 2003/01/29 17:10:49 ukai Exp $ */
#include "fm.h"
#include "myctype.h"
#include <stdio.h>
@@ -314,7 +314,7 @@ loadNewsgroup(ParsedURL *pu, char *code)
char *volatile scheme, *volatile group, *volatile list;
int status, i, first, last;
volatile int flag = 0, start = 0, end = 0;
MySignalHandler(*volatile trap) (SIGNAL_ARG) = NULL;
MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;
if (current_news.host == NULL || !pu->file || *pu->file == '\0')
return NULL;
@@ -346,9 +346,7 @@ loadNewsgroup(ParsedURL *pu, char *code)
Strcat_charp(page, "</table>\n<p>Transfer Interrupted!\n");
goto news_end;
}
trap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
tmp = news_command(&current_news, "GROUP", group, &status);
if (status != 211)
@@ -489,9 +487,7 @@ loadNewsgroup(ParsedURL *pu, char *code)
news_end:
Strcat_charp(page, "</body>\n</html>\n");
if (fmInitialized)
term_raw();
signal(SIGINT, trap);
TRAP_OFF;
return page;
}
+2 -2
View File
@@ -1,4 +1,4 @@
/* $Id: proto.h,v 1.84 2003/01/23 18:37:21 ukai Exp $ */
/* $Id: proto.h,v 1.85 2003/01/29 17:10:51 ukai Exp $ */
/*
* This file was automatically generated by version 1.7 of cextract.
* Manual editing not recommended.
@@ -184,7 +184,7 @@ extern void restore_fonteffect(struct html_feed_environ *h_env,
#ifdef USE_IMAGE
extern void deleteImage(Buffer *buf);
extern void getAllImage(Buffer *buf);
extern void loadImage(int flag);
extern void loadImage(Buffer *buf, int flag);
extern ImageCache *getImage(Image * image, ParsedURL *current, int flag);
extern int getImageSize(ImageCache * cache);
#endif
+8 -19
View File
@@ -1,4 +1,4 @@
/* $Id: url.c,v 1.69 2003/01/17 17:06:06 ukai Exp $ */
/* $Id: url.c,v 1.70 2003/01/29 17:10:53 ukai Exp $ */
#include "fm.h"
#include <sys/types.h>
#include <sys/socket.h>
@@ -457,7 +457,7 @@ openSocket(char *const hostname,
int a1, a2, a3, a4;
unsigned long adr;
#endif /* not INET6 */
MySignalHandler(*volatile trap) (SIGNAL_ARG) = NULL;
MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;
if (fmInitialized) {
message(Sprintf("Opening socket...")->ptr, 0, 0);
@@ -471,9 +471,7 @@ openSocket(char *const hostname,
close(sock);
goto error;
}
trap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
if (hostname == NULL) {
#ifdef SOCK_DEBUG
sock_log("openSocket() failed. reason: Bad hostname \"%s\"\n",
@@ -618,15 +616,10 @@ openSocket(char *const hostname,
}
#endif /* not INET6 */
if (fmInitialized)
term_raw();
signal(SIGINT, trap);
TRAP_OFF;
return sock;
error:
if (fmInitialized)
term_raw();
signal(SIGINT, trap);
TRAP_OFF;
return -1;
}
@@ -1955,7 +1948,7 @@ check_no_proxy(char *domain)
{
TextListItem *tl;
volatile int ret = 0;
MySignalHandler(*volatile trap) (SIGNAL_ARG) = NULL;
MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;
if (NO_proxy_domains == NULL || NO_proxy_domains->nitem == 0 ||
domain == NULL)
@@ -1974,9 +1967,7 @@ check_no_proxy(char *domain)
ret = 0;
goto end;
}
trap = signal(SIGINT, KeyAbort);
if (fmInitialized)
term_cbreak();
TRAP_ON;
{
#ifndef INET6
struct hostent *he;
@@ -2053,9 +2044,7 @@ check_no_proxy(char *domain)
#endif /* INET6 */
}
end:
if (fmInitialized)
term_raw();
signal(SIGINT, trap);
TRAP_OFF;
return ret;
}