aboutsummaryrefslogtreecommitdiffstats
path: root/file.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2002-12-13[w3m-dev 03563] Directory Traversal Vulnerabilities in FTP ClientsFumitoshi UKAI1-10/+8
* file.c (guess_save_name): pass guess_filename From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-10[w3m-dev 03551] Re: External URI loaderFumitoshi UKAI1-4/+4
* file.c (loadGeneralFile): fix SCM_UNKNONWN From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-09[w3m-dev 03548] close anchor before <img align=...>Fumitoshi UKAI1-33/+43
* file.c (process_img): use div_int (process_hr): use div_int (process_idattr): don't close_anchor (CLOSE_A): added (HTMLtagproc1): </p> close anchor <dl>,<ul>,<ol>,<blockquote>,<li>,<dt>,<dd> close anchor <noframes> close anchor <pre> close anchor <center> close anchor <div> close anchor add DIV_INT <form> close anchor * html.c (TagMAP): add div_int * html.h (HTML_DIV_INT): added (HTML_N_DIV_INT): added * tagtable.tab (div_int): added (/div_int): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-09[w3m-dev 03544] Can't display "1&2" in tableFumitoshi UKAI1-2/+2
* file.c (HTMLlineproc0): continue -> R_ST_NORMAL From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-09* file.c (loadGeneralFile): missing `{', fix indent for SCM_UNKNOWNFumitoshi UKAI1-3/+3
* main.c (set_buffer_environ): unused variables `prev_col' From: Fumitoshi UKAI <ukai@debian.or.jp>
2002-12-09[w3m-dev 03543] External URI loader (Debian closes: Bug#169962)Fumitoshi UKAI1-9/+10
* file.c (loadGeneralFile): rewrite SCM_UNKNOWN From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-09[w3m-dev 03542] news supportFumitoshi UKAI1-2/+2
* file.c (loadGeneralFile): NNTP as well as NEWS * indep.c (url_unquote_char): check % hex hex (url_unquote): unquote except \0, \n, \r From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-08fix indentFumitoshi UKAI1-5/+9
2002-12-06[w3m-dev 03536] <del>, <s>Fumitoshi UKAI1-5/+19
* file.c (HTMLtagproc1): <s>..</s> is [S:...:S] (HTMLtagproc0): <del> will delete <table> * fm.h (RB_S): added * html.c (TagMAP): <s>,</s> move <internal>, </internal> * html.h (HTML_S): added (HTML_N_S): added (HTML_INTERNAL): renumed (HTML_N_INTERNAL): ditto (MAX_HTMLTAG): add 2 * rc.c (CMT_DISP_INS_DEL): update * table.c (feed_table_tag): add HTML_S, HTML_N_S * table.h (TBLM_S): added (TBLM_ANCHOR): renum * tagtable.tab: (strike, s): HTML_S (/strike, /s): HTML_N_S From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-06[w3m-dev 03535] close anchor, quote <Fumitoshi UKAI1-2/+9
* file.c (HTMLtagproc1): close_anchor * frame.c (createFrameFile): quote < From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-06[w3m-dev 03534] cleanup file.cFumitoshi UKAI1-12/+7
* file.c (HTMLlineproc2body): cleanup From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-06* version.c.in: w3m/0.3.2.2+cvsFumitoshi UKAI1-3/+3
* NEWS: 0.3.2.2 From: Fumitoshi UKAI <ukai@debian.or.jp>
2002-12-05fix indentFumitoshi UKAI1-3/+3
2002-12-05[w3m-dev 03529] Support of title, accesskey of anchorFumitoshi UKAI1-46/+72
* anchor.c (putAnchor): arg title, key initialize slave (registerHref): arg title, key (registerName): title = NULL, key = '\0' (registerForm): title = NULL, key = '\0' (_put_anchor_news): title = NULL, key = '\0' (_put_anchor_all): title = NULL, key = '\0' (addMultirowsImg): register title, accesskey (addMultirowsForm): title = NULL, key = '\0' (getAnchorText): added * display.c (displayBuffer): show title if any * file.c (set_breakpoint): use bcopy (back_to_breakpoint): use bcopy (flushline): s/anchor/anchor.url/ s/anchor_hseq/anchor.hseq/ s/anchor_target/anchor.target/ add anchor.* (close_effect0): s/anchor/anchor.url/ s/anchor_hseq/anchor.hseq/ (close_anchor): use bzero (process_img): ATTR_TITLE, (HTMLtagproc1): s/anchor/anchor.url/ target, referer, title, accesskey, hseq (HTMLlineproc2body): ATTR_TITLE, ATTR_ACCESSKEY (init_henv): use bzero * fm.h (Anchor): add title, accesskey, slave (Breakpoint): use Anchor (struct readbuffer): use Anchor * funcname.tab (ACCESSKEY): added (LINK_MENU): added * html.c (ALST_A): add ATTR_TITLE, ATTR_ACCESSKEY (ALST_IMG): add ATTR_TITLE (ALST_IMG_ALT): add ATTR_TITLE (AttrMAP): add accesskey, renum * html.h (ATTR_ACCESSKEY): added (ATTR_*): renum 50->60 * main.c (linkMn): added (accessKey): added * menu.c (LinkMenu): deleted (LinkV): deleted (initLinkMenu): deleted (lmGoURL): deleted (popupMenu): delete initLinkMenu() (initMenu): delete Link (link_menu): added (accesskey_menu): added * proto.h (linkMn): added (link_menu): added (accessKey): added (accesskey_menu): added (putAnchor): arg title, key (registerHref): arg title, key (registerImg): arg title (getAnchorText): added * doc/README.func (ACCESSKEY): added (LINK_MENU): added * doc-jp/README.func (ACCESSKEY): added (LINK_MENU): added * scripts/w3mhelp.cgi.in (Hyperlink operation): add linkMn accessKey From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-04[w3m-dev 03523] Re: del/insFumitoshi UKAI1-8/+21
* file.c (HTMLtagproc1): check displayInsDel, RB_DEL * fm.h (RB_DEL): added (displayInsDel): added * rc.c (CMT_DISP_INS_DEL): added (display_ins_del): added * table.c (feed_table_tag): check displayInsDel, TBLM_DEL * table.h (TBLM_DEL): added (TBLM_ANCHOR): renum (struct table_mode): unsigned int pre_mode From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-04[w3m-dev 03522] newline around <pre>..</pre>Fumitoshi UKAI1-3/+13
* file.c (HTMLtagproc1): break before <pre>/after </pre> if necessary From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-03[w3m-dev 03510] waiting time when cookie was rejected.Fumitoshi UKAI1-2/+2
* file.c (readHeader): display cookie warnings for only 1 sec From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-03fix indentFumitoshi UKAI1-107/+107
2002-12-03[w3m-dev 03509] HTML parserFumitoshi UKAI1-184/+143
* file.c (close_textarea): delete (HTMLtagproc1): rewrite delete HTML_EOL move HTML_LISTING, HTML_N_LISTING add HTML_PRE_PLAIN, HTML_N_PRE_PLAIN add HTML_PLAINTEXT end_tag (HTMLlineproc0): s/str/line/ rewrite (completeHTMLstream): </textarea> if necessary * fm.h (struct readbuffer): delete ignore_tag add end_tag (RB_XMPMODE): deleted (RB_LSTMODE): deleted (RB_SCRIPT): added (RB_STYLE): added (RB_*): renumber (R_ST_EOL): added (R_ST_*): renumber (ST_IS_TAG): check R_ST_EOL * form.c (form_fputs_decode): remove <eol> handling * frame.c (newFrame): remove_space() (CASE_TABLE_TAG): added (createFrameFile): rewrite * html.c (TagMAP): delete eol add pre_plain, /pre_plain * html.h (HTML_EOL): deleted (HTML_PRE_PLAIN): added (HTML_N_PRE_PLAIN): added * table.c (visible_length): rewrite (visible_length_plain): added (maximum_visible_length_plain): added (do_refill): R_ST_EOL (table_close_select): end_tag (table_close_textarea): end_tag (TAG_ACTION_PLAIN): added (feed_table_tag): rewrite (feed_table): rewrite * table.h (TBLM_*) reassign (struct table_mode): delete ignore_tag add end_tag * tagtable.tab (eol): deleted (pre_plain): added (/pre_plain): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-03[w3m-dev 03505] Re: coredump when ssl errorFumitoshi UKAI1-5/+5
* file.c (loadGeneralFile): term_raw(), SIGINT before retry From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-12-02fix indentFumitoshi UKAI1-2/+2
2002-12-02[w3m-dev 03504] coredump when ssl errorFumitoshi UKAI1-1/+5
* file.c (loadGeneralFile): term_raw, SIGINT From: AIDA Shinra <aida-s@jcom.home.ne.jp>
2002-12-02remove ununsed variablesFumitoshi UKAI1-2/+1
* file.c (addLink): unused variable `t' * menu.c (lmGoURL): unused variable `pu' From: Fumitoshi UKAI <ukai@debian.or.jp>
2002-12-02[w3m-dev 03501] link tag supportFumitoshi UKAI1-2/+57
* buffer.c (reshapeBuffer): initialize formlist, linklist, maplist, hmarklist, imarklist * file.c (addLink): added (HTMLlineproc2body): add HTML_LINK (loadHTMLstream): use HTMLlineproc0 not in R_ST_NORMAL (reloadBuffer): initialize linklist, maplist, hmarklist, imarklist * fm.h (LINK_TYPE_NONE): added (LINK_TYPE_REL): added (LINK_TYPE_REV): added (LinkList): added (Buffer): add linklist * html.c (ALST_LINK): added (TagMAP): add link (AtrMAP): add rel, rev, title * html.h (HTML_LINK): added (ATTR_REL): added (ATTR_REV): added (ATTR_TITLE): added * map.c (append_map_info): anchor (append_link_info): added (page_info_panel): append_link_info * menu.c (LinkMenu): added (linkV): added (initLinkMenu): added (lmGoURL): added (popupMenu): initLinkMenu() (initMenu): w3mMenuList new 4 add "Link" * tagtable.tab (link): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-28[w3m-dev 03498] Re: parse <!-- ... --> in <script>Fumitoshi UKAI1-3/+1
* file.c (HTMLlineproc0): tag in textarea * frame.c (createFrameFile): fix comment processing in frame From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-27fix indentFumitoshi UKAI1-4/+3
2002-11-27[w3m-dev 03496] parse <!-- ... --> in <script>Fumitoshi UKAI1-3/+24
* etc.c (read_token): check <pre> * file.c (HTMLlineproc0): remove comment processing check pre mode comment processing move From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-26use local_cookie for support local-cgi commandsFumitoshi UKAI1-4/+5
* file.c (loadGeneralFile): pass Local_cookie to DirBufferCommand * fm.h (Local_cookie): Str * local.c (setLocalCookie): Str, set_environ() (set_cgi_environ): remove LOCAL_COOKIE * main.c (ldhelp): pass Local_cookie (adBmark): ditto * rc.c (optionpanel_src1): cookie (load_option_panel): pass Local_cookie * w3mbookmark.c (main): check Local_cookie * w3mhelperpanel (main): ditto * scripts/dirlist.cgi.in: ditto * scripts/w3mhelp.cgi.in: ditto * scripts/multipart/multipart.cgi.in: ditto From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-26fix indentFumitoshi UKAI1-4/+4
2002-11-26[w3m-dev 03488] meta refresh in frameFumitoshi UKAI1-27/+42
* file.c (getMetaRefreshParam): added (HTMLtagproc1): use getMetaRefreshParam() * frame.c (createFrameFile): check meta refresh * proto.h (getMetaRefreshProgram): added From: Hiroyuki Ito <hito@crl.go.jp>
2002-11-25fix indentFumitoshi UKAI1-8/+8
2002-11-25[w3m-dev 03476] Re: Bug#170506: w3m: Unable to use mozilla bugzillaFumitoshi UKAI1-5/+11
* file.c (HTMLtagproc1): initialize ignore_tag in table_mode (HTMLtagproc0): check table_level * table.c (feed_table_tag): set mode->ignore_tag * table.h (struct table_mode): add ignore_tag From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-24[w3m-dev 03471] Re: SETPGRP()Fumitoshi UKAI1-5/+1
* configure: SETPGRP() always defined * proto.h (close_all_fds): added (myExec): #ifdef HAVE_SETPGRP * etc.c (close_all_fds): added (myExec): #ifdef HAVE_SETPGRP (mySystem): #ifndef -> #ifdef * file.c (_doFileCopy): delete #ifdef HAVE_SETPGRP (doFileSave): ditto * image.c (openImgdisplay): delete #ifdef HAVE_SETPGRP use close_all_fds() * search.c (open_migemo): ditto From: Fumitoshi UKAI <ukai@debian.or.jp>
2002-11-22[w3m-dev 03466] Re: background download when external viewerFumitoshi UKAI1-1/+3
* file.c (doExternal): UFclose(&uf); From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-22fix indentFumitoshi UKAI1-5/+5
2002-11-22[w3m-dev 03459] background download when external viewerFumitoshi UKAI1-4/+27
* etc.c (myExec): added (mySystem): rewrite to use myExec() * file.c (doExternal): run background if BackgroundExtViewer * proto.h (myExec): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-18[w3m-dev 03444] download from ftp.Fumitoshi UKAI1-6/+15
* file.c (FTPhalfclose: static (loadGeneralFile): UFclose FTPhalfclose for SCM_FTP UFclose before signal back (loadImageBuffer): UFclose before signal back (openGeneralPagerBuffer): UFclose * ftp.c (ftp_fclose): added (Ftpfclose): dont read response(), but ftp_fclose() (FtpBye): ftp_fclose() From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-15fix indentFumitoshi UKAI1-3/+2
2002-11-15[w3m-dev 03441] charset of save fileFumitoshi UKAI1-7/+10
* file.c (_doFileCopy): use conv_from_system() (doFileSave): conv_from_system() * main.c (DownloadListBuffer): conv_from_system() From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-15fix indentFumitoshi UKAI1-3/+5
2002-11-15[w3m-dev 03436] Check image sizeFumitoshi UKAI1-3/+7
* file.c (process_img): check w > MAX_IMAGE_SIZE (HTMLlineproc2body): check w,h > MAX_IMAGE_SIZE * fm.h (MAX_IMAGE_SIZE): added * image.c (getImageSize): check w,h,width,height > MAX_IMAGE_SIZE From: Hiroyuki Ito <hito@crl.go.jp>
2002-11-15[w3m-dev 03435] save image with SAVEFumitoshi UKAI1-12/+10
* buffer.c (discardBuffer): check image * file.c (loadImageBuffer): add st IMG_FLAG_DONE_REMOVE s/sourcefile/mailcap_source/ * fm.h (IMG_FLAG_DONT_REMOVE): added * image.c (drawImage): & IMG_FLAG_LOADED (deleteImage): & IMG_FLAG_DONT_REMOVE (showImageProgress): & IMG_FLAG_LOADED (getImage): & IMG_FLAG_LOADED (getImageSize): & IMG_FLAG_LOADED * main.c (vmSrc): delete ifdef USE_IMAGE From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-15fix indentFumitoshi UKAI1-9/+9
2002-11-15[w3m-dev 03431] save file by background processFumitoshi UKAI1-7/+77
* file.c (loadGeneralFile): use _doFileCopy() (_doFileCopy): renamed from doFileCopy() lock fork & save (doFileSave): lock fork & save * fm.h (DownloadList): added (FirstDL): added (LastDL): added * form.c (struct internal_action): add download * funcname.tab (DOWNLOAD_LIST): added * html.h (URLFile): add url * main.c (dump_extra): add add_download_list (main): add_download_list, ldDL() (_quitfm): added (quitfm): rewrite with _quitfm() (qquitfm): ditto (w3m_exit): stopDownload() (addDownloadList): added (checkDownloadList): added (convert_size3): added (DownloadListBuffer): added (download_action): added (stopDownload): added (ldDL): added * proto.h (ldDL): added (convert_size): added (convert_size2): added (doFileCopy): deleted (_doFileCopy): added (addDownloadList): added (stopDownload): added (checkDownloadList): added (download_action): added * url.c (openURL): save url in uf From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-13[w3m-dev 03424] Content lengthFumitoshi UKAI1-6/+6
* file.c (loadGeneralFile): current_content_length before do_download (save2tmp): current_content_length move before return From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-09[w3m-dev 03398] auxbindirFumitoshi UKAI1-9/+9
* XMakefile: EXT_TARGETS -> LIB_TARGETS, AUXBIN_TARGETS * config.h.dist: add AUXBIN_DIR LIB_DIR is cgi-bin * configure: add -auxbindir add AUXBIN_DIR LIB_DIR is cgi-bin EXT_TARGETS -> LIB_TARGETS, AUXBIN_TARGETS * file.c (compression_decoder): libfile_p -> auxbin_p (check_command): libfile_p -> auxbin_p use w3m_auxbin_dir() instead of w3m_lib_dir() (acceptableEncoding): libfile_p -> auxbin_p (xface2xpm): use auxbinFile() instead of libFile() (uncompress_stream): libfile_p -> auxbin_p use auxbinFile() instead of libFile() * image.c (getCharSize): use w3m_auxbin_dir() instead of w3m_lib_dir() (openImgdisplay): use w3m_auxbin_dir() instead of w3m_lib_dir() * indep.c (w3m_auxbin_dir): added * indep.h (w3m_auxbin_dir): added * proto.h (auxbinFile): added * rc.c (auxbinFile): added (libFile): #if 0, no longer used (helpFile): used only #ifndef USE_HELP_CGI * NEWS: separate auxbindir and libdir (local-CGI, file:///$LIB/) From: Fumitoshi UKAI <ukai@debian.or.jp>
2002-11-08[w3m-dev 03386] Re: Interrupt in no_proxy_check()Fumitoshi UKAI1-8/+13
* file.c (getAuthCookie): term_cbreak() (loadGeneralFile): term_cbreak() term_raw() preFormUpdateBuffer() before term_raw() (loadHTMLstream): term_raw() From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-06[w3m-dev 03375] NULL check of CurrentTabFumitoshi UKAI1-2/+2
* display.c (disp_message_nsec): check CurrentTab * file.c (doExternal): check CurrentTab * image.c (loadImage): check CurrentTab From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-05[w3m-dev 03372] tab browserFumitoshi UKAI1-3/+5
* display.c (displayBuffer): add ny rootY offset by tab tab line (cursorDown): offset rootY (arrangeCursor): offset rootY * etc.c (columnSkip): offset rootY (lineSkip): offset rootY (currentLineSkip): offset rootY * file.c (HTMLlineproc2body): ATTR_TARGET * fm.h (MapArea): add target (Buffer): add rootY (TabBuffer): added (Currentbuf): comment out (Firstbuf): comment out (CurrentTab): added (FirstTab): added (LastTab): added (open_tab_blank): added (close_tab_back): added (nTab): added (TabCols): added (N_TAB): added (Currentbuf): CurrentTab->currentBuffer (Firstbuf): CurrentTab->firstBuffer * funcname.tab (CLOSE_TAB): added (NEW_TAB): added (NEXT_TAB): added (PREV_TAB): added (TAB_GOTO): added (TAB_GOTO_RELATIVE): added (TAB_LEFT): added (TAB_LINK): added (TAB_MENU): added (TAB_RIGHT): added * html.c (ALST_AREA): add ATTR_TARGET * image.c (showImageProgress): offset rootY * main.c (_newT): added (followTab): added (moveTab): added (check_target): added (MAIN): init tab related values buf => tab (nscroll): offset rootY (pgFore): offset rootY (pgBack): offset rootY (ctrCsrV): offset rootY (_movD): offset rootY (_movU): offset rootY (_goLine): offset rootY (_mark): offset rootY (followA): check target (_followForm): offset rootY (drawAnchorCursor0): offset rootY (drawAnchorCursor): offset rootY (backBf): check close_tab_back (follow_map): rewrite for tab, check target (posTab): added (process_mouse): tab operation offset rootY (deleteFiles): for all buffers in all tabs (newTab): added (newT): added (numTab): added (deleteTab): added (closeT): added (nextT): added (prevT): added (followTab): added (tabA): added (tabURL0): added (tabURL): added (tabrURL): added (moveTab): added (tabR): added (tabL): added * map.c (follow_map_menu): return MapArea (newMapArea): add target args * menu.c (SelTabMenu): added (SelTabV): added (initSelTabMenu): added (smChTab): added (smDelTab): added (MainMenuItem): add Select Tab on New Tab (popupMenu): add initSelTabMenu() offset rootY (mainMn): offset rootY (selMn): offset rootY (initSelectMenu): offset rootY (tabMn): added * proto.h (newT): added (closeT): added (nextT): added (prevT): added (tabA): added (tabURL): added (tabrURL): added (tabR): added (tabL): added (newTab): added (deleteTab): added (follow_map_menu): return MapArea (newMapArea): add target arg (tabMn): added * rc.c (CMT_OPEN_TAB_BLANK): added (CMT_CLOSE_TAB_BACK): added (open_tab_blank): added (close_tab_back): added * doc/README.func (CLOSE_TAB): added (NEW_TAB): added (NEXT_TAB): added (PREV_TAB): added (TAB_GOTO): added (TAB_GOTO_RELATIVE): added (TAB_LEFT): added (TAB_LINK): added (TAB_MENU): added (TAB_RIGHT): added * doc-jp/README.func: ditto doc/README.func From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
2002-11-05[w3m-dev 03373] setting form on loadingFumitoshi UKAI1-1/+2
* config.h.dist (PRE_FORM_FILE): added * configure (PRE_FORM_FILE): added * etc.c (openPasswdFile): define by openSecretFile() (openSecretFile): renamed, not static * file.c (loadGeneralFile): preFOrmUpdateBuffer() * fm.h (Buffer): add submit (pre_form_file): added * form.c (struct pre_form_item): added (struct pre_form): added (next_token): added (PreForm): added (add_pre_form): added (add_pre_form_item): added (loadPreForm): added (preFormUpdateBuffer): added * frame.c (renderFrame): add preFormUpdateBuffer() * main.c (MAIN): buf->submit check * proto.h (preFormUpdateBuffer): added (openSecretFile): added (loadPreForm): added * rc.c (sync_with_option): add loadPreForm() From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>