diff options
| -rw-r--r-- | ChangeLog | 12 | ||||
| -rw-r--r-- | file.c | 31 | ||||
| -rw-r--r-- | fm.h | 3 | ||||
| -rw-r--r-- | rc.c | 6 | 
4 files changed, 36 insertions, 16 deletions
| @@ -1,3 +1,13 @@ +2002-12-15  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + +	* [w3m-dev 03569] Re: preserve timestamp +	* file.c (loadGeneralFile): PresetveTimestamp +		(_doFileCopy): is_pipe, PreserveTimestamp +		(doFileSave): PreserveTImestamp +	* fm.h (PreserveTimestamp): added +	* rc.c (CMT_PRESERVE_TIMESTAMP): added +		(params3): add preserve_timestamp +  2002-12-15  Takahashi Youichirou <nikuq@hk.airnet.ne.jp>  	* [w3m-dev 03568] Re: preserve timestamp @@ -5848,4 +5858,4 @@ a	* [w3m-dev 03276] compile error on EWS4800  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.619 2002/12/14 15:18:37 ukai Exp $ +$Id: ChangeLog,v 1.620 2002/12/14 15:24:03 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.160 2002/12/14 15:18:38 ukai Exp $ */ +/* $Id: file.c,v 1.161 2002/12/14 15:24:03 ukai Exp $ */  #include "fm.h"  #include <sys/types.h>  #include "myctype.h" @@ -332,7 +332,8 @@ uncompressed_file_type(char *path, char **ext)      return t0;  } -static int setModtime(char *path, time_t modtime) +static int +setModtime(char *path, time_t modtime)  {      struct utimbuf t;      struct stat st; @@ -1894,7 +1895,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,  	    f.stream = newEncodedStream(f.stream, f.encoding);  	if (pu.scheme == SCM_LOCAL) {  	    struct stat st; -	    if (stat(pu.real_file, &st) == 0) +	    if (PreserveTimestamp && !stat(pu.real_file, &st))  		f.modtime = st.st_mtime;  	    file = conv_from_system(guess_save_name(NULL, pu.real_file));  	} else @@ -7378,6 +7379,7 @@ _doFileCopy(char *tmpf, char *defstr, int download)  #endif      struct stat st;      clen_t size = 0; +    int is_pipe = FALSE;      if (fmInitialized) {  	p = searchKeyData(); @@ -7388,7 +7390,9 @@ _doFileCopy(char *tmpf, char *defstr, int download)  		return;  	    p = conv_to_system(q);  	} -	if (*p != '|' || !PermitSaveToPipe) { +	if (*p == '|' && PermitSaveToPipe) +	    is_pipe = TRUE; +	else {  	    if (q) {  		p = unescape_spaces(Strnew_charp(q))->ptr;  		p = conv_to_system(q); @@ -7428,8 +7432,8 @@ _doFileCopy(char *tmpf, char *defstr, int download)  	    close_tty();  	    QuietMessage = TRUE;  	    fmInitialized = FALSE; -	    _MoveFile(tmpf, p); -	    if (stat(tmpf, &st) == 0) +	    if (!_MoveFile(tmpf, p) && PreserveTimestamp && !is_pipe && +		!stat(tmpf, &st))  		setModtime(p, st.st_mtime);  	    unlink(lock);  	    exit(0); @@ -7453,7 +7457,9 @@ _doFileCopy(char *tmpf, char *defstr, int download)  	if (*q == '\0')  	    return;  	p = q; -	if (*p != '|' || !PermitSaveToPipe) { +	if (*p == '|' && PermitSaveToPipe) +	    is_pipe = TRUE; +	else {  	    p = expandName(p);  	    if (checkOverWrite(p) < 0)  		return; @@ -7462,9 +7468,9 @@ _doFileCopy(char *tmpf, char *defstr, int download)  	    printf("Can't copy. %s and %s are identical.", tmpf, p);  	    return;  	} -	if (_MoveFile(tmpf, p) < 0) { +	if (_MoveFile(tmpf, p) < 0)  	    printf("Can't save to %s\n", p); -	} else if (stat(tmpf, &st) == 0) +	else if (PreserveTimestamp && !is_pipe && !stat(tmpf, &st))  	    setModtime(p, st.st_mtime);      }  } @@ -7529,8 +7535,7 @@ doFileSave(URLFile uf, char *defstr)  	    close_tty();  	    QuietMessage = TRUE;  	    fmInitialized = FALSE; -	    save2tmp(uf, p); -	    if (uf.modtime != -1) +	    if (!save2tmp(uf, p) && PreserveTimestamp && uf.modtime != -1)  		setModtime(p, uf.modtime);  	    UFclose(&uf);  	    unlink(lock); @@ -7559,9 +7564,9 @@ doFileSave(URLFile uf, char *defstr)  	    printf("Can't save. Load file and %s are identical.", p);  	    return;  	} -	if (save2tmp(uf, p) < 0) { +	if (save2tmp(uf, p) < 0)  	    printf("Can't save to %s\n", p); -	} else if (uf.modtime != -1) +	else if (PreserveTimestamp && uf.modtime != -1)  	    setModtime(p, uf.modtime);      }  } @@ -1,4 +1,4 @@ -/* $Id: fm.h,v 1.96 2002/12/11 15:07:53 ukai Exp $ */ +/* $Id: fm.h,v 1.97 2002/12/14 15:24:04 ukai Exp $ */  /*    * w3m: WWW wo Miru utility   *  @@ -768,6 +768,7 @@ global char RenderFrame init(FALSE);  global char TargetSelf init(FALSE);  global char PermitSaveToPipe init(FALSE);  global char DecodeCTE init(FALSE); +global char PreserveTimestamp init(TRUE);  global char ArgvIsURL init(FALSE);  global char MetaRefresh init(FALSE); @@ -1,4 +1,4 @@ -/* $Id: rc.c,v 1.70 2002/12/06 16:50:34 ukai Exp $ */ +/* $Id: rc.c,v 1.71 2002/12/14 15:24:04 ukai Exp $ */  /*    * Initialization file etc.   */ @@ -167,6 +167,7 @@ static char *config_file = NULL;  #define CMT_RETRY_HTTP   "URLに自動的に http:// を補う"  #define CMT_DEFAULT_URL	 "URLを開く時のデフォルト文字列"  #define CMT_DECODE_CTE   "保存時に Content-Transfer-Encoding をデコードする" +#define CMT_PRESERVE_TIMESTAMP "保存時にタイムスタンプを保持する"  #ifdef USE_MOUSE  #define CMT_MOUSE         "マウスを使う"  #define CMT_REVERSE_MOUSE "マウスのドラッグ動作を逆にする" @@ -322,6 +323,7 @@ static char *config_file = NULL;  #define CMT_RETRY_HTTP   "Prepend http:// to URL automatically"  #define CMT_DEFAULT_URL  "Default value for open-URL command"  #define CMT_DECODE_CTE   "Decode Content-Transfer-Encoding when saving" +#define CMT_PRESERVE_TIMESTAMP "Preserve timestamp when saving"  #ifdef USE_MOUSE  #define CMT_MOUSE         "Enable mouse"  #define CMT_REVERSE_MOUSE "Scroll in reverse direction of mouse drag" @@ -640,6 +642,8 @@ struct param_ptr params3[] = {       NULL},      {"decode_cte", P_CHARINT, PI_ONOFF, (void *)&DecodeCTE, CMT_DECODE_CTE,       NULL}, +    {"preserve_timestamp", P_CHARINT, PI_ONOFF, (void *)&PreserveTimestamp, +     CMT_PRESERVE_TIMESTAMP, NULL},      {"keymap_file", P_STRING, PI_TEXT, (void *)&keymap_file, CMT_KEYMAP_FILE,       NULL},      {NULL, 0, 0, NULL, NULL, NULL}, | 
