묻고답하기
crazyBoard.cgi gdbm 으로 되어진 게시판으 마이그레이션 하는 방법은?
2008.08.18 10:27
c ,php가 가능한 프로그래머 입니다.
예전 게시판을 마이그레이션 할 수 있는 방법을 알고 싶습니다...
오픈소스 이용에 감사 드립니다.
more convGDBM2ASC.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "gdbm.h"
#include "qDecoder.h"
#define TRUE (1)
#define FALSE (0)
void main(int argc, char **argv) {
GDBM_FILE dbf;
FILE *fp;
datum key, nextkey, data;
char *encdata;
char gdbmpath[0xff], ascpath[0xff];
int progress;
if(argc != 3) {
printf("Usage : convGDBM2ASC DB_PATH ASC_PATH\n");
printf("ex) convGDBM2ASC data/test.gdbm data/test.asc\n");
printf("ex) convGDBM2ASC /htdocs/abcd.gdbm abcd.asc\n");
exit(1);
}
strcpy(gdbmpath, argv[1]);
strcpy(ascpath, argv[2]);
/* DB open */
dbf = gdbm_open(gdbmpath, 0, GDBM_READER, 0, NULL);
if(dbf == NULL) {
printf("There is no gdbm database file in this path(%s).\n", gdbmpath);
exit(1);
}
/* File open */
fp = fopen(ascpath, "wt");
if(fp == NULL) {
printf("File(%s) open fail.\n", ascpath);
exit(1);
}
/* Main */
printf("-- GDBM -> ASCII indian converting.\n");
printf("-- Designed for 'CrazyWWWBoard'\n");
printf("-- Target GDBM file : %s\n", gdbmpath);
printf("-- Saved ASCII file : %s\n", ascpath);
printf("\n");
printf("Converting progress.\n");
key = gdbm_firstkey(dbf);
for(progress = 1; key.dptr != NULL; progress++) {
data = gdbm_fetch(dbf, key);
encdata = qURLencode(data.dptr);
/* save */
fprintf(fp, "%s=%s\n", key.dptr, encdata);
/* progress status */
printf(".");
if(progress % 60 == 0) printf("\n");
/* find next */
nextkey = gdbm_nextkey(dbf, key);
free(key.dptr), free(data.dptr), free(encdata);
key = nextkey;
}
printf("\n");
printf("Converted %d keys.\n", progress);
printf("Converting completed.\n");
/* close */
fclose(fp);
gdbm_close(dbf);
}
예를 들어 일단 제로보드4는 널리 쓰이는 게시판이니까 컨버터도 많습니다. 크레이지보드->제로보드4->제로보드XE로 마이그레이션. 만약 크레이지보드에서 제로보드4로 컨버터가 없다면 크레이지보드에서 변환가능한 컨버터가 뭐가 있는지 찾아보시고 거기서 다시 제로보드4로 변환할 수 있는 컨버터가 있는 찾아보는 식으로...
단, 연결 컨버터를 못 찾으시면 불가능한...^^;;;