/****************************************************************/ /* Output raw data file */ /****************************************************************/ #ifdef RAWOUT int dat_out_raw(void) { const char *begin = BigLine[0]; const char *end = BigLine[lineMax]; char statusline[512]; char *vp = statusline; #ifdef RAWOUT_PARTIAL int first = 0, last = 0; #endif #ifdef Katjusha_DLL_REPLY if (zz_katjusha_raw) { if (BigBuffer[raw_lastsize-1] != '\n') { html_error(ERROR_ABORNED); return 0; } begin = BigBuffer + raw_lastsize; vp += sprintf(vp, "+OK"); } else #endif #ifdef RAWOUT_PARTIAL if (raw_lastnum == 0 && raw_lastsize == 0 && (nn_st || nn_to || nn_ls > 1)) { int st = atoi(zz_st), to = atoi(zz_to), ls = atoi(zz_ls); first = 1, last = lineMax; if (ls > 1) st = lineMax - ls + 1; if (0 < st && st <= lineMax) first = st; if (0 < to && to <= lineMax) last = to; if (first > last) last = first; begin = BigLine[first-1]; end = BigLine[last]; vp += sprintf(vp, "+PARTIAL"); } else #endif if(raw_lastnum > 0 && raw_lastsize >= 0 && !(raw_lastnum <= lineMax && BigLine[raw_lastnum] - BigBuffer == raw_lastsize)) { vp += sprintf(vp, "-INCR"); } else { vp += sprintf(vp, "+OK"); begin = BigLine[raw_lastnum]; } vp += sprintf(vp, " %d/%dK", (int)(end - begin), MAX_FILESIZE / 1024); #ifdef RAWOUT_PARTIAL if (first && last) { vp += sprintf(vp, "\t""Range:%u-%u/%u", (int)(begin - BigLine[0]), (int)(end - BigLine[0] - 1), (int)(BigLine[lineMax] - BigLine[0])); vp += sprintf(vp, "\t""Res:%u-%u/%u", first, last, lineMax); } #endif