aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/100_download-error-short-write.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/100_download-error-short-write.patch')
-rw-r--r--debian/patches/100_download-error-short-write.patch188
1 files changed, 0 insertions, 188 deletions
diff --git a/debian/patches/100_download-error-short-write.patch b/debian/patches/100_download-error-short-write.patch
deleted file mode 100644
index d1af5aa..0000000
--- a/debian/patches/100_download-error-short-write.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-Description: Tell a download failure when full disk
-Origin: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=185006#22
-Author: Karsten Schoelzel <kuser@gmx.de>
-Bug-Debian: http://bugs.debian.org/185006
-
-diff -urNp w3m-0.5.2.orig/file.c w3m-0.5.2/file.c
---- w3m-0.5.2.orig/file.c 2007-05-24 00:06:05.000000000 +0900
-+++ w3m-0.5.2/file.c 2010-07-07 22:12:03.000000000 +0900
-@@ -7749,7 +7749,13 @@ save2tmp(URLFile uf, char *tmpf)
- {
- Str buf = Strnew_size(SAVE_BUF_SIZE);
- while (UFread(&uf, buf, SAVE_BUF_SIZE)) {
-- Strfputs(buf, ff);
-+ if (Strfputs(buf, ff) != buf->length) {
-+ bcopy(env_bak, AbortLoading, sizeof(JMP_BUF));
-+ TRAP_OFF;
-+ fclose(ff);
-+ current_content_length = 0;
-+ return -2;
-+ }
- linelen += buf->length;
- showProgress(&linelen, &trbyte);
- }
-@@ -8078,16 +8084,20 @@ doFileSave(URLFile uf, char *defstr)
- flush_tty();
- pid = fork();
- if (!pid) {
-+ int err;
- if ((uf.content_encoding != CMP_NOCOMPRESS) && AutoUncompress) {
- uncompress_stream(&uf, &tmpf);
- if (tmpf)
- unlink(tmpf);
- }
- setup_child(FALSE, 0, UFfileno(&uf));
-- if (!save2tmp(uf, p) && PreserveTimestamp && uf.modtime != -1)
-+ err = save2tmp(uf, p);
-+ if (err == 0 && PreserveTimestamp && uf.modtime != -1)
- setModtime(p, uf.modtime);
- UFclose(&uf);
- unlink(lock);
-+ if (err != 0)
-+ exit(-err);
- exit(0);
- }
- addDownloadList(pid, uf.url, p, lock, current_content_length);
-diff -urNp w3m-0.5.2.orig/fm.h w3m-0.5.2/fm.h
---- w3m-0.5.2.orig/fm.h 2007-05-30 13:47:24.000000000 +0900
-+++ w3m-0.5.2/fm.h 2010-07-07 21:51:07.000000000 +0900
-@@ -517,7 +517,8 @@ typedef struct _DownloadList {
- char *lock;
- clen_t size;
- time_t time;
-- int ok;
-+ int running;
-+ int err;
- struct _DownloadList *next;
- struct _DownloadList *prev;
- } DownloadList;
-diff -urNp w3m-0.5.2.orig/main.c w3m-0.5.2/main.c
---- w3m-0.5.2.orig/main.c 2007-05-31 10:19:50.000000000 +0900
-+++ w3m-0.5.2/main.c 2010-07-07 21:51:07.000000000 +0900
-@@ -323,21 +323,26 @@ static void
- sig_chld(int signo)
- {
- int p_stat;
--#ifdef HAVE_WAITPID
- pid_t pid;
-
-+#ifdef HAVE_WAITPID
- while ((pid = waitpid(-1, &p_stat, WNOHANG)) > 0) {
-- ;
-- }
- #elif HAVE_WAIT3
-- int pid;
--
- while ((pid = wait3(&p_stat, WNOHANG, NULL)) > 0) {
-- ;
-- }
- #else
-- wait(&p_stat);
-+ if ((pid = wait(&p_stat)) > 0) {
- #endif
-+ DownloadList *d;
-+
-+ if (WIFEXITED(p_stat)) {
-+ for (d = FirstDL; d != NULL; d = d->next) {
-+ if (d->pid == pid) {
-+ d->err = WEXITSTATUS(p_stat);
-+ break;
-+ }
-+ }
-+ }
-+ }
- mySignal(SIGCHLD, sig_chld);
- return;
- }
-@@ -6355,7 +6360,8 @@ addDownloadList(pid_t pid, char *url, ch
- d->lock = lock;
- d->size = size;
- d->time = time(0);
-- d->ok = FALSE;
-+ d->running = TRUE;
-+ d->err = 0;
- d->next = NULL;
- d->prev = LastDL;
- if (LastDL)
-@@ -6375,7 +6381,7 @@ checkDownloadList(void)
- if (!FirstDL)
- return FALSE;
- for (d = FirstDL; d != NULL; d = d->next) {
-- if (!d->ok && !lstat(d->lock, &st))
-+ if (d->running && !lstat(d->lock, &st))
- return TRUE;
- }
- return FALSE;
-@@ -6415,15 +6421,16 @@ DownloadListBuffer(void)
- "<form method=internal action=download><hr>\n");
- for (d = LastDL; d != NULL; d = d->prev) {
- if (lstat(d->lock, &st))
-- d->ok = TRUE;
-+ d->running = FALSE;
- Strcat_charp(src, "<pre>\n");
- Strcat(src, Sprintf("%s\n --&gt; %s\n ", html_quote(d->url),
- html_quote(conv_from_system(d->save))));
- duration = cur_time - d->time;
- if (!stat(d->save, &st)) {
- size = st.st_size;
-- if (d->ok) {
-- d->size = size;
-+ if (!d->running) {
-+ if (!d->err)
-+ d->size = size;
- duration = st.st_mtime - d->time;
- }
- }
-@@ -6442,7 +6449,7 @@ DownloadListBuffer(void)
- Strcat_char(src, '_');
- Strcat_char(src, '\n');
- }
-- if (!d->ok && size < d->size)
-+ if ((d->running || d->err) && size < d->size)
- Strcat(src, Sprintf(" %s / %s bytes (%d%%)",
- convert_size3(size), convert_size3(d->size),
- (int)(100.0 * size / d->size)));
-@@ -6453,20 +6460,28 @@ DownloadListBuffer(void)
- Strcat(src, Sprintf(" %02d:%02d:%02d rate %s/sec",
- duration / (60 * 60), (duration / 60) % 60,
- duration % 60, convert_size(rate, 1)));
-- if (!d->ok && size < d->size && rate) {
-+ if (d->running && size < d->size && rate) {
- eta = (d->size - size) / rate;
- Strcat(src, Sprintf(" eta %02d:%02d:%02d", eta / (60 * 60),
- (eta / 60) % 60, eta % 60));
- }
- }
- Strcat_char(src, '\n');
-- if (d->ok) {
-+ if (!d->running) {
- Strcat(src, Sprintf("<input type=submit name=ok%d value=OK>",
- d->pid));
-- if (size < d->size)
-- Strcat_charp(src, " Download incompleted");
-- else
-- Strcat_charp(src, " Download completed");
-+ switch (d->err) {
-+ case 0: if (size < d->size)
-+ Strcat_charp(src, " Download ended but probably not complete");
-+ else
-+ Strcat_charp(src, " Download complete");
-+ break;
-+ case 1: Strcat_charp(src, " Error: could not open destination file");
-+ break;
-+ case 2: Strcat_charp(src, " Error: could not write to file (disk full)");
-+ break;
-+ default: Strcat_charp(src, " Error: unknown reason");
-+ }
- }
- else
- Strcat(src, Sprintf("<input type=submit name=stop%d value=STOP>",
-@@ -6520,7 +6535,7 @@ stopDownload(void)
- if (!FirstDL)
- return;
- for (d = FirstDL; d != NULL; d = d->next) {
-- if (d->ok)
-+ if (!d->running)
- continue;
- #ifndef __MINGW32_VERSION
- kill(d->pid, SIGKILL);