■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

read.cgi改良スレッド

1 :名無し娘。 ◆vP.bOZFQ :01/08/28 20:24 ID:vA2A8wXI
ここは read.cgi の改良だけを専門に扱うスレッドです。

2ちゃんねるで行われている他のプログラム開発や、動作報告・障害報告等に
ついては、それぞれ専用のスレッドが >>2 から参照できますので、
移動してください。お願いします。

●前スレ
 http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501

●read.cgi最新ソースコード(定期的に同期されています)
 http://www.gedoh.org/aki/2ch/current/bbs/
 http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html

●2ちゃんねる軽量化関連スレッド群
 >>2

●みなさまへのお願い(急募)
 >>3

●前スレで提示されている案・意見の一覧
 http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=868&to=868&nofirst=true

886 :デフォルトの名無しさん :01/09/09 10:32
nofirst=trueの表記を統一しました。
#define NO_FIRST "&n=t" で省略形式に統一可能。

>>879
REWRITE_HREF2の削除もれを消しました。

>>796-798に手を加えてconfig.txtとして追加した。
conditionをいじったら、config.txtもいじってね。
http://www.gedoh.org/aki/2ch/current/bbs/config.txt
実情にあってない所があったら指摘してください。

887 :881 :01/09/09 11:06
fcntl()でのshared/exclusive lockだと read.cgiがひっきりなしに呼ばれていると
bbs.cgi等の書き込み側がexclusive lockを取得できなくなってしまう可能性もあるな...

となると 書き込み側では
  1. まず別のファイル名でオープンして(例えば"987654321.new")そこに書き込む
  2. 書き込みが終わったら rename("987654321.new", "987654321.dat") を実行
って感じでやってもらう方がいいのかも これならread.cgi側でのlockは
考えなくてもいいんだな bbs.cgi等の書き込み側の排他制御は必要だろうけど

888 :デフォルトの名無しさん :01/09/09 11:58
CUTRESLINK関係の話が、
-DCUTRESLINKで加えられた変更全体を指すのか、
レスのリンクをカットする機能のみを指すのか、若干わかりにくい。

CUTRESLINKの名前をOPTIMIZE_SPLIT等に変更して、
本来のリンクをカットする部分のみを#ifdef CUTRESLINKで囲うことを希望。

889 :775 :01/09/09 14:10
>>886
REWRITE_HREF2削除に漏れあったのか。修正さんくす

890 :775 :01/09/09 14:17
CUTRESLINKはONの状態で採用ってことでOFF時のコード消さない?

CUTRESLINKまわりの二重状態がいちばんソース見難く、でかくしてる感じだし。

891 :デフォルトの名無しさん :01/09/09 14:31
とりあえずの行末の空白削除(タグ消し)対策
ressplitter_split()の、case ' ':
-  if (bufp == *This->buffers) /* 名前欄が半角空白の場合 */
-   *bufp++ = ' ';
+  if (bufp == *This->buffers /* 名前欄が半角空白の場合は最低1文字必要 */
+   || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
+   *bufp++ = ' ';
/*
resnumberのチェックを外せば名前・メール欄の
直後の空白もある程度消せるようになるが、
厳密に判定しないと(名前欄が)でこぼこに
なってしまうので、もう少し待ち。
*/
転送量的には、"名無しさん"の"ん"の直後の空白が(今のままでは)
削除できないのが痛い(3byte前から調べれば削除できる)ので、
空白が必要かを完全に判定する厳密なルーチン
(末尾から調べ、長くても数文字で終わるはず)を作成予定。
名前とメールの直後の空白が消せるし、
<br>前の空白もまだ結構残っているので、
処理を少し複雑にしてでもやる価値はあると見る。

もう一点。
index.htmlに合わせる場合、
メール欄が"0"の場合は""として扱うほうが良いのかな、と。
その場合、
splitting_copy()の最後に、
+ if (s[1][0] == '0' && s[1][1] == '\0')
+  s[1][0] = '\0';
つければOK。
以上は、http://teri.2ch.net/accuse/dat/994071363.datを出力して動作確認。

http://teri.2ch.net/test/read.cgi?bbs=accuse&key=994071363&st=448&to=449
の問題は、dat内に'&','<',"http://"が現れるたびに直前の文字をチェックして
' 'を入れるか判定する必要がある割には、実際に壊れている割合は非常に少なく、
費用対効果の点で疑問が残るので、OFF推奨のconditionとして実装予定。

892 :デフォルトの名無しさん :01/09/09 14:58
>>890
個人的には賛成。
Ver5.12でも使われているし、ON前提で書かれている機能もけっこうある。

他にも同意する人がいて、反対する人が現れなかったら、
必要なのは「決断」?

893 :名無し娘。 ◆vP.bOZFQ :01/09/09 16:20
>>880
その通りでした(^^;
>>890 >>892
決断の一助となるべく賛成を表明(^^

894 :775 :01/09/09 16:21
>>893
賛成多数につき(笑)
やりまーす

895 :775 :01/09/09 16:33
>>894
ということでCUTRESLINKをON固定として条件削除しました。

896 :892 :01/09/09 16:46
>賛成多数につき(笑)
笑った。

897 :892 :01/09/09 16:51
そういえば、LASTMODもまだON固定にしてなかったよね?
ネスケ関係の問題ってLastModifiedを吐く側には対処できそうにないし、
ON固定にして、万一不具合が出てもその都度対処すればよいのではないかと。

898 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:01
>>895
おつかれですー。
>>897
賛成ですー。

899 :名無し :01/09/09 17:11
批判要望板では、曜日は表示して〜〜〜とのことです。
会社行く日なのか判断出来なくなっちゃうよ〜〜〜。

900 :775 :01/09/09 17:14
>>897
んじゃLASTMODもON固定にしときます。

>>899
確かに曜日賛成。

901 :775 :01/09/09 17:21
>>900
LASTMOD ON固定にした。

>>891
+   || (resnumber && isSJIS1(*bufp-1))) /* 行末の文字化け対応 */
これってSJISの1バイト目でも2バイト目でもつかえるコードがたまたまそこにあると
誤動作するよね?

902 :デフォルトの名無しさん :01/09/09 17:22
「投稿日:」は削っていいから、「(日)」を・・・。

903 :775 :01/09/09 17:23
>>902
でも曜日ってread.cgiで消してるんじゃないんだよね(笑)

904 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:26
私も曜日賛成。でも曜日はbbs.cgiなんですよねぇ。
read.cgiで現在時刻/日付でも表示しますか?

905 :デフォルトの名無しさん :01/09/09 17:26
http://homepage2.nifty.com/katuya/mp/index.html
わからないやつはここへ書き込め

906 :名無し娘。 ◆vP.bOZFQ :01/09/09 17:28
もうちょっとこのスレで粘って、>>875-877 でやりやすいとこから実装して
削っちゃって下さい。
>.hからいろいろなくなってるけど?
がちょっと気になります。。。

907 :デフォルトの名無しさん :01/09/09 17:42
>>901
誤動作(余分に不要な空白を吐く)けど、html上では無視されるので
大丈夫ではないかと。
というか、<br>の直前でも同じアルゴリズム(超単純な判定)で空白をカットしているはず。

908 :デフォルトの名無しさん :01/09/09 17:44
>>878に賛成。
今のところめいめいにdatをチェックして警告、スレ移行を行っているようだが、
dat/が見られないとそれもままならなくなり、混乱を招く可能性が高いのでは?

909 :775 :01/09/09 17:44
>>875

>PATH_INFO
具体的にどんな問題だっけ。最初のやつは >>873 で解決してるはずだけど
">>1"があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。

>CHUNK_ANCHORで1-が無い
無い? あるようにも見えるけど

>CUTRESLINK, replace系関数
CUTRESLINK削除済み

><a name>をつけるかつけないかをconditionによらせる
CREATE_NAME_ANCHORになってる

>スレスト時FORM
> >>11
なんか「ストッパー」があるかどうか判定するコードは入ってるみたい。

>>877
>condition一覧(更新しなくちゃ)
cvsのconfig.txtでメンテしてる

910 :775 :01/09/09 17:59
>>909
>>PATH_INFO
>具体的にどんな問題だっけ。最初のやつは >>873 で解決してるはずだけど
>">>1"があるときにnofirst=trueでリンクしてしまって結局飛べないってのはあるか。

">>1"のときに限りst=1&to=1&nofirst=trueにして一つだけ見られるようにした。
範囲指定時は1は除外されるままだけど。

911 :名無し娘。 ◆vP.bOZFQ :01/09/09 18:12
>>909
>PATH_INFO
残りは
http://kaba.2ch.net/test/read5x.cgi?bbs=net&key=998373518&st=151&to=200&nofirst=true
だけかな。リンクはったりはらなかったりしている。完全に逆転しているわけでもないようで。
>CHUNK_ANCHORで1-が無い
"1-"ではなく"1"ですね、おそらく。nofirst=trueになってしまっているのは
不便ではなかろうかということだとおもいます。>>910でおっしゃっている通りで。
どっちがよいのでしょうねぇ。

>>875-877 以降のもの
config.txtにcondition一覧(SETTING_R.TXTの有効事項も)
lock >>881 >>887

912 :775 :01/09/09 18:27
>>911
>リンクはったりはらなかったりしている。
これは>>884で修正したみたい。

913 :デフォルトの名無しさん :01/09/09 18:39
>>882は?
>>903
曜日は内部で解析してるからやろうと思えばできるはず…

914 :デフォルトの名無しさん :01/09/09 18:52
r2chhtml.h内のRELOADLINK関係でCGI_NAMEが使われてないっす。
CUTRESLINKがON固定になったので、res_split,findSplitterは消し。
doReplace, someReplaceも消し。
(out_htmlx内でsomeReplaceを読んでいる部分は全て不要)

警告出ししてみた。

read2ch.h
/* 「大きすぎます」の警告を出すまでのサイズ(KB単位)
 MAX_FILESIZE - CAUTION_FILESIZE*1024 を超えたら警告
 これが未定義なら、警告は出さない */
#defineCAUTION_FILESIZE16
/* デバッグ用
#defineMAX_FILESIZE_BUSY(MAX_FILESIZE - 64 * 1024) */

r2chhtml.h
/* ファイルサイズやばい: %d=超えた大きさ %d=表示できない大きさ %s=付加文字列 */
#define R2CH_HTML_HEADER_SIZE_REDZONE \
 "<p><table><tr><td bgcolor=red>\n" \
 "<font color=white>サイズが%dKBを超えています。%dKBを超えると%s表\示できなくなるよ。</font>" \
 "</td></tr></table>"

read.c html_head内の、最後のif(is_imode())の直前あたりに、
#ifdefCAUTION_FILESIZE
 if (zz_fileSize > MAX_FILESIZE - CAUTION_FILESIZE * 1024) {
  pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE,
   MAX_FILESIZE/1024 - CAUTION_FILESIZE, MAX_FILESIZE/1024, "");
 }
#ifdefMAX_FILESIZE_BUSY
 else if (zz_fileSize > MAX_FILESIZE_BUSY - CAUTION_FILESIZE * 1024) {
  pPrintf(pStdout, R2CH_HTML_HEADER_SIZE_REDZONE,
   MAX_FILESIZE_BUSY/1024 - CAUTION_FILESIZE, MAX_FILESIZE_BUSY/1024, "時間帯によっては");
 }
#endif
#endif

915 :775 :01/09/09 18:59
>>914
とりあえず
r2chhtml.hのRELOADんとこでCGINAMEを使うようにして、
read.cでres_split, findSplitterは削除した。

916 :デフォルトの名無し :01/09/09 19:07
そろそろ次のスレッドの準備を
名無し娘。よろしく!

917 :914 :01/09/09 19:08
あ、警告文字列はコピペだし、
#ifdefで判断する部分と実際の数値を同じdefineで扱ってしまっているので、
その辺は適宜変更お願いします。

918 :774 :01/09/09 19:13
>>914
適当に突っ込んでみた

919 :775 :01/09/09 19:15
>>918
774って買いてしまった。775ね

>>914
>doReplace, someReplaceも消し。
>(out_htmlx内でsomeReplaceを読んでいる部分は全て不要)
これイマイチ不安なんだけど、どうなのかな。

920 :デフォルトの名無しさん :01/09/09 19:15
/*
findSplitterの代わり

これも削除しましょう。関数がなくなったのにコメントだけ
残ってると混乱の元

921 :デフォルトの名無しさん :01/09/09 19:27
>>919
someReplaceは !TYPE_TERI のconditionの中にしかありません。
不安ならdoReplace, someReplaceを
#ifndef TYPE_TERI
#endif
で括っては。

922 :775 :01/09/09 19:34
>>920-921
 両方やった。

923 :デフォルトの名無しさん :01/09/09 19:54
http://kaba.2ch.net/test/read.cgi?bbs=news2&key=999391480
http://kaba.2ch.net/test/read5x.cgi?bbs=news2&key=999391480
これって倉庫落ちしてHTML化を待っているdatの保存場所が
変わったことを意味してると思うんですけど、保存場所を
教えてもらうことはできるんでしょうか?
ブラウザで見ることができない位置(public_htmlの外とか)にあれば
とくに差し支えないと思うんですけど。

924 :デフォルトの名無しさん :01/09/09 20:17
ストッパー・1000オーバーのRELOADLINK非表示

dat_out後半の#ifdef RELOADLINK - #endif を
最後の
if (strstr("ストッパー")・・・

html_foot()
の間に移動。
if 文内の条件を
 if (!level && lineMax == lineLast) {
→if (!level && lineMax == lineLast && lineMax <= RES_RED && !threadStopped) {
に変更。

925 :775 :01/09/09 20:21
>>924
あてた

926 :デフォルトの名無しさん :01/09/09 20:22
最近のストッパーは投稿日が「停止」になってるので
それの対応も必要ではないかと。

927 :デフォルトの名無しさん :01/09/09 20:25
if( s[2]!=0 && strstr( s[2], "ストッパー" )) threadStopped=1;

if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) threadStopped=1;
でいいかな?

928 :デフォルトの名無しさん :01/09/09 20:26
閉じ括弧が1個足りなかった。
if( s[2]!=0 && (strstr( s[2], "ストッパー" ) || strstr( s[2], "停止" )) ) threadStopped=1;

929 :デフォルトの名無しさん :01/09/09 20:28
「停止」になってるスレひとつ教えて(笑)
datとってきて確認したかったり

930 :デフォルトの名無しさん :01/09/09 20:30
じゃあ一例
http://ton.2ch.net/test/read.cgi?bbs=gline&key=997994037

931 :775 :01/09/09 20:34
>>930
さんくす。確認したのでcommitした

932 :名無し娘。 ◆vP.bOZFQ :01/09/09 20:41
みなさまお疲れさまです。新スレです
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1000035521&ls=20

このスレで完結できそうな話題は、このスレで続けちゃっていいと思います。
次スレに持ち越しそうなものは、早めに見切りをつけて移動しましょう(^^

933 :デフォルトの名無しさん :01/09/09 20:59
>>923
過去ログ倉庫のスレにも情報無いですね。
http://green.jbbs.net/computer/bbs/read.cgi?BBS=20&KEY=992663547&LAST=50
次スレに持ち越して、夜勤さんに聞いてみるしかないか。
ひみつかもしれないけど。

934 : ◆D69Zsbfg @夜勤 ★ :01/09/09 21:14
秘密というか、今の状態は暫定です。
dat とかその辺は、全面改修の可能性あり。
たぶん、dat 直読みはできなくなるでしょう。。。(多分だけどね、まだ決まっていない)

935 :デフォルトの名無しさん :01/09/09 22:07
こんな早い時間?から、お疲れさまですー。

936 :名無し娘。 ◆vP.bOZFQ :01/09/10 00:29
このスレで実装・検討待ちの案一覧

gzip/zlib関連conditionの整理
 gzip/zlibをconditionなしで採用し整理

#define Katjusha_Beta_kisei されていない(元はdefineされていた)

URL記述に対するリンク設定も時間帯によらせる
 >>817

"投稿日"非表示を時間帯によらせる

FORCE_304_TIMEの動的変動
 鯖負荷に応じて動的に変更する

CHUNK_ANCHORでnofirst=trueになっているが、どうか

mmap時にlockすべきか
 >>139 >>425

dat,kako
 /kako/ に対応
 ツール作者さんに対応お願い
  * raw=xxx.yyy の形式でリクエスト。 xxx=最終レス番号, yyy=そのときのサイズ。
  * 一行目はステータス:
  * [+OK] の場合は差分のみを送信する。
  * [-INCR] (Incorrect)の場合はすべてのデータを送信する。
  * [-ERR (テキスト)]の場合はなんかエラーが起きた。

datの一部についてのLastModを求める

NN4.72でgzip圧縮&&Content-LengthがあるとLast-Modifiedが無効
 >>872

キャッシュであぼーんされたレスが見える?(詳細不明)
 http://teri.2ch.net/test/read.cgi?bbs=saku&key=996761078&st=408&to=408&nofirst=true

deflate/板ダイジェスト/スレッド一覧/スレインデックス
 >>680 >>696
 そのうち対応

過去datの場所が変わりそう
 >>923 >>934

condition一覧/SETTING_R.TXT記述一覧
 http://www.gedoh.org/aki/2ch/current/bbs/config.txt
 追加すべきもの
  >>914
   CAUTION_FILESIZE xx, MAX_FILESIZE_BUSY (xx) (デバッグ用)
  http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998695422&st=81&to=81&n=true
   CM_BBSPINK, LOGLOGOUT x, TYPE_TERI, Katjusha_Beta_kisei

r2chhtml.hいろいろ
 http://natto.2ch.net/test/read.cgi?bbs=hp&key=999020167&ls=20

その他
 http://www.gedoh.org/aki/2ch/tiki/

937 :デフォルトの名無しさん :01/09/10 00:59
>>914を確認したいんだけど、現在kaba鯖上に450KBとか、そういうでかいdat
が見当たらない……

どのように動作確認すべきだろうか?

938 :デフォルトの名無しさん :01/09/10 00:59
>>937
MAX_FILESIZEを小さく書けばいいんでは

939 :デフォルトの名無しさん :01/09/10 01:04
>>937
確認のために巨大なコピペを貼りまくる

アクセス制限を喰らう

(゚д゚)ウマー

ってかkaba鯖バージョンは警告未対応では?

940 :937 :01/09/10 01:47
>938
……おれはなにをボケているんだろうか。
多謝。

>939
アクセス制限は勘弁願いたいが、警告未対応というのはマジですか?
テストされていないということ?

941 :デフォルトの名無しさん :01/09/10 01:50
>>940
警告のコードが入ったのは夜勤さんが昨夜入れてからだってこと。
今日入ったpiza2版にはたぶん入ってる。
つーかいい加減新スレ行きなされ。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1000035521

942 :937 :01/09/10 01:52
恥の上塗りだ……

>940の発言は忘れてください……

943 :デフォルトの名無しさん :01/09/10 06:38
とにかく、この2日間は、大車輪の活躍をしてくれた、
775さん、
名無し娘。 ◆vP.bOZFQさん
884さん、
886さん、
等に感謝したい。

本筋に関係ないので前スレで。

944 :デフォルトの名無しさん :01/09/10 22:23
[r2chhtml.h]
//***********************************************
・追加
#define R2CH_HTML_TAIL_SIMPLE \
 " (%02d:00PM - %02d:00AM の間一気に全部は読めません)<br>\n"
/* テストなので使っていないけど */
#define CHUNKED_ANCHOR_SELECT_HEAD(bbs,key) \
 "<form><select onchange='" \
 "var st=parseInt(this[selectedIndex].text);" \
 "location=\""CGINAME"?bbs="bbs"&key="key"&st=\"+st+\"&to=\"+(st+49)+\"&"NO_FIRST"\";"\
 "'>"
#define CHUNKED_ANCHOR_SELECT_STARTNUM(num) \
 "<option>"num"-"
#define CHUNKED_ANCHOR_SELECT_TAIL \
 "</select></form>"


[read2ch.h]
//***********************************************
・ALL_ANCHORとLATEST_ANCHORをなくしたいので
LATEST_NUMの扱いをRES_NORMAL等と同様にしてほしい。

//***********************************************
・追加
/* select form形式で CHUNKED_ANCHORを表示する */
/*#define CHUNKED_ANCHOR_WITH_FORM
「掲示板に戻る」「レスを全部」「最新レス」との統一が取れていない
*/

945 :デフォルトの名無しさん :01/09/10 22:24
[read.c]
//***********************************************
・前半にある#ifdef LATEST_ANCHOR - #endif を
全て条件を外し、中身を生きに。(全部 #ifdef USE_SETTING_FILE の中)

//***********************************************
・out_html()の後半、/* imode */ の手前、
  if (isbusytime && out_resN > RES_NORMAL) {
   ・・・
   return 1;
  }
の部分を、
  if (isbusytime && out_resN > RES_NORMAL) {
#ifdef CHUNK_ANCHOR
   pPrintf(pStdout, R2CH_HTML_TAIL_SIMPLE, LIMIT_PM - 12, LIMIT_AM);
#else
   ・・・
#endif
   return 1;
  }
に。

946 :デフォルトの名無しさん :01/09/10 22:25
//***********************************************
・html_head()
#ifdef CHUNK_ANCHOR
 int i;
#endif
警告が出るので削除。

//***********************************************
・同、html_head()の真中辺りから、 } else { の手前(その下がimode)まで、
#ifdef ALL_ANCHOR
 ・・・
#endif
#ifdef CHUNK_ANCHOR
 ・・・
#endif
#ifdef LATEST_ANCHOR
 ・・・
#endif
を、
 /* ALL_ANCHOR は常に生きにする
  ただし、CHUNK_ANCHORが生きで、かつisbusytimeには表示しない */
#ifdef CHUNK_ANCHOR
  if (!isbusytime)
#endif
  {
#ifdef USE_PATH
   if (path_depth)
    pPrintf(pStdout,
     R2CH_HTML_PATH_ALL_ANCHOR);
   else
#endif
    pPrintf(pStdout,
     R2CH_HTML_ALL_ANCHOR,
     zz_bs, zz_ky);
  }
  html_thread_anchor(1, first_line()-1);
に。

947 :デフォルトの名無しさん :01/09/10 22:26
//***********************************************
・html_foot()
最初から、
 if (line <= RES_RED && !stopped) {
の手前までを、
static void html_foot(int level, int line, int stopped)
{
#if 0
 /* 初期化した数値を再び使うのはダイジェスト関係だけのはず */
 out_resN = 0; /* ここで初期化するといいらしい? */
#endif

 if (is_imode()) {
  html_foot_im(line,stopped);
  return;
 }
 if (last_line() < lineMax) {
  /* RELOADLINKの表示条件の逆なんだけど */
  html_thread_anchor(last_line() + 1, lineMax - LATEST_NUM);
#ifndef CHUNK_ANCHOR
   /* 最新レスnnがかぶるので苦肉の策
    LATEST_ANCHORを生きにして、なおかつ末尾に持ってきているので
    out_html内の R2CH_HTML_TAILを修正するほうが
    処理の流れとしては望ましいが、
    「混雑時にCHUNK_ANCHORを非表示にする」等の場合には
    再修正が必要なので保留 */
  if (!(isbusytime && out_resN > RES_NORMAL))
#endif
  {
   /* LATEST_ANCHORも常に生きにする */
#ifdef USE_PATH
  if (path_depth)
   pPrintf(pStdout,
    R2CH_HTML_PATH_LATEST_ANCHOR,
    LATEST_NUM, LATEST_NUM);
  else
#endif
   pPrintf(pStdout,
    R2CH_HTML_LATEST_ANCHOR,
    zz_bs, zz_ky,
    LATEST_NUM, LATEST_NUM);
  }
 }
に。

948 :デフォルトの名無しさん :01/09/10 22:27
//***********************************************
html_head()の手前あたりに、以下・・・最後までを追加

#ifdef CHUNK_ANCHOR
/* first-lastまでのCHUNKED anchorを表示
firstとlastはレス番号。firstに0は渡すなー */
static void html_thread_anchor(int first, int last)
{
 int line = ((first - 1)/ CHUNK_NUM) * CHUNK_NUM + 1;
 if (first <= last) {
#ifdef CHUNKED_ANCHOR_WITH_FORM
  pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_HEAD("%s", "%s"),
   zz_bs, zz_ky);
  for ( ; line <= last; line += CHUNK_NUM) {
   pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_STARTNUM("%d"),
   line);
  }
  pPrintf(pStdout, CHUNKED_ANCHOR_SELECT_TAIL);
#else
  for ( ; line <= last; line += CHUNK_NUM) {
#ifdef USE_PATH
   if (path_depth)
    pPrintf(pStdout,
     R2CH_HTML_PATH_CHUNK_ANCHOR,
     line,
     line + CHUNK_NUM - 1,
     line);
   else
#endif
    pPrintf(pStdout, R2CH_HTML_CHUNK_ANCHOR,
     zz_bs, zz_ky,
     line,
     line + CHUNK_NUM - 1,
     (line == 1 ? "" : NO_FIRST),
     line);
  }
#endif
 }
}
#else
#define html_thread_anchor(first, last)  /* (void)0 nothing */
#endif /* CHUNK_ANCHOR */

949 :デフォルトの名無しさん :01/09/10 22:28
/* 最初と最後に表示されるレス番号を返す(レス1を除く)
imode未対応, isprintedと同じ動作を。
*/
static int first_line()
{
 if (nn_st)
  return nn_st;
 if (nn_ls)
  return lineMax - nn_ls + 1;
 return 1;
}
static int last_line()
{
 /* html_footを呼ぶ時に最終表示行を渡すようにすれば要らないんだけど */
 int line = lineMax;
 if (nn_to && nn_to < lineMax)
  line = nn_to;
 if (isbusytime) {
  int busy_last = first_line() + RES_NORMAL - 1 - is_nofirst();
  /* 細かい計算間違ってるかも */
  if (busy_last < line)
   line = busy_last;
 }
 return line;
}

950 :775 :01/09/10 22:36
これは何ですか? (^^;

951 :次スレ166 :01/09/11 17:35
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

952 :外出ですか? :01/09/11 22:40
http://ton.2ch.net/test/read.cgi?bbs=sec&key=996966367&st=40&to=40&nofirst=true

953 :外出ですか? :01/09/11 22:42
スレ違い。

954 :スレ埋め改良スレッド :01/10/14 20:43
    スレを埋めに来ました
______ __________
         ∨
   ------------- 、____
  /  ̄ ̄ ̄.// ̄ ̄|| |___/\○ ○
 /     //     .|| |  \\○○○○
[/______. //[ ]    || |    \\○○ ○
.||     |_| ̄ ̄  .|.| |___\\○○○○
.lO|--- |O゜.|______ |.|_|ニニニニニニl.|○○○○
|_∈口∋ ̄_l______l⌒ l.|_____| l⌒l_||  ○○○○
──`--'───`ー'─── `--' `ー' ┐ ○○○○
                         │  ○○○○
                         │   ○○○○
                         │ ミ  ○○ ○○   〃
                         │  ;:○○ ○○; ’〃、、..
                         | ミ ミ\○ ○゙○ ○/ミ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~〜〜〜〜~~~~~~~~~~~~~~~~~~~

955 : :01/10/19 17:22
http://www.oldandmature.de/oldandmature3/pictures/menapril0005.jpg

956 :-- :01/10/19 17:26
http://www.oldandmature.de/oldandmature3/pictures/menjuly0075.jpg

333KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30