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

【2ちゃんねるビューア】 巡回機能の巻。Part3

422 :名無しさん@お腹いっぱい。 :02/03/25 05:51 ID:???
動作確認した。圧縮率は外からも指定可。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <zlib.h>
#ifndef MAP_FAILED
#define MAP_FAILED (void *)(-1)
#endif
char compress_flag[30];
void compress_one(const char *fname)
{
 int fd;
 void *buf;
 fd = open(fname, O_RDONLY);
 if (fd >= 0) {
  struct stat st;
  if (fstat(fd, &st) == 0) {
   buf = (char *)mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
   if (buf != MAP_FAILED) {
    char gzname[256];
    gzFile file;
    sprintf(gzname, "%s.gz", fname);
    file = gzopen(gzname, compress_flag);
    if (file) {
     gzwrite(file, buf, st.st_size);
     gzclose(file);
    }
    munmap(buf, st.st_size);
   }
  }
  close(fd);
 }
}
void compress_file(const char *bbs, const char *fname)
{
 char fnbuf[256];
 sprintf(fnbuf, "%.200s/%.30s", bbs, fname);
 compress_one(fnbuf);
}
int main(int ac, char **av)
{
 int mode = 6;
 ++av, --ac;
 if (ac == 2 && isdigit(*av[1])) {
  mode = atoi(av[1]);
  --ac;
 }
 sprintf(compress_flag, "wb%d", mode);
 if (ac == 1) {
  compress_file(*av, "index.html");
  compress_file(*av, "subback.html");
  compress_file(*av, "subject.txt");
 }
 return 0;
}

283KB
新着レスの表示

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

0ch BBS 2004-10-30