1Comments
추리소설
2014.03.11(화) 오후 04:44:08
문제1의 원인은 리눅스와 윈도우의 개행문자 차이 때문에 발생하는 거구요.
데이터 저장/로드시 위 문제점을 해결해 주어야 정상동작 할 수 있습니다.
제가 사용한 방법을 알려드리자면..
lib/adm/include/config.h 파일에 아래 설정을 추가하시고
(OS에 맞게 그때 그때 수정하여 사용합니다)
#define RUN_OS_WIN 1
//#undef RUN_OS_WIN // Window일 경우 1, 리눅스일 경우 #undef
lib/adm/master/simul_efun.c 파일을 열어서.. 수정/추가 합니다.
//-----------------------------------------------------------------------------
// 함수 설명 : 윈도우, 리눅스 개행문자 차이를 해결하기 위해... 윈도우 : \r\n 리눅스 : \n
//-----------------------------------------------------------------------------
int save_file(string strPath, string strConTents)
{
#ifdef RUN_OS_WIN
if(efun::save_file(strPath, strConTents))
{
string strDesc;
if(file_size(strPath) > 2)
{
strDesc = replace_string(read_bytes(strPath), "\r\n" , "
");
rm(strPath);
write_bytes(strPath, 0, strDesc);
}
return 1;
}
else
{
return 0;
}
#endif
return efun::save_file(strPath, strConTents);
}
//-----------------------------------------------------------------------------
// 함수 설명 : 윈도우, 리눅스 개행문자 차이를 해결하기 위해... 윈도우 : \r\n 리눅스 : \n
//-----------------------------------------------------------------------------
void convCRLF(string strFilePath)
{
#ifdef RUN_OS_WIN
string strDesc;
//-----------------------------------------------------------------------------
// 윈도우일 경우 \r\n을 리눅스의 \n으로 바꾸어서 다시 저장한다.
//-----------------------------------------------------------------------------
if(strFilePath[<2..] == ".o")
strFilePath = strFilePath[0..<3];
strDesc = replace_string(read_bytes(strFilePath + __SAVE_EXTENSION__), "\r\n" , "
");
rm(strFilePath + __SAVE_EXTENSION__);
write_bytes(strFilePath + __SAVE_EXTENSION__, 0, strDesc);
#endif
return;
}
convCRLF함수의 사용법은.. save_object함수가 사용되는 부분의 밑에다가
인자를 동일하게 주어서 호출해 주시면 되겠네요.
예)
save_object(SAVE_FILE);
convCRLF(SAVE_FILE);
문제1이 해결되었는데도 문제2가 발생한다면..
명령어 자체 잘못된 코딩에 문제일 가능성이 높겠네요.
메모리에 룸이 로드가 안된상태인데 해당 룸으로 유저객체를 Move시킬려고
시도해도 저런 에러메세지가 나올거구요.
기타 여러가지 이유가 있으니 에러메세지와 발생위치를 유심히 보시고 소스를 살펴보시면
해결가능하지 않을까 생각합니다. 문제2는 별 도움이 못되겠네요.
데이터 저장/로드시 위 문제점을 해결해 주어야 정상동작 할 수 있습니다.
제가 사용한 방법을 알려드리자면..
lib/adm/include/config.h 파일에 아래 설정을 추가하시고
(OS에 맞게 그때 그때 수정하여 사용합니다)
#define RUN_OS_WIN 1
//#undef RUN_OS_WIN // Window일 경우 1, 리눅스일 경우 #undef
lib/adm/master/simul_efun.c 파일을 열어서.. 수정/추가 합니다.
//-----------------------------------------------------------------------------
// 함수 설명 : 윈도우, 리눅스 개행문자 차이를 해결하기 위해... 윈도우 : \r\n 리눅스 : \n
//-----------------------------------------------------------------------------
int save_file(string strPath, string strConTents)
{
#ifdef RUN_OS_WIN
if(efun::save_file(strPath, strConTents))
{
string strDesc;
if(file_size(strPath) > 2)
{
strDesc = replace_string(read_bytes(strPath), "\r\n" , "
");
rm(strPath);
write_bytes(strPath, 0, strDesc);
}
return 1;
}
else
{
return 0;
}
#endif
return efun::save_file(strPath, strConTents);
}
//-----------------------------------------------------------------------------
// 함수 설명 : 윈도우, 리눅스 개행문자 차이를 해결하기 위해... 윈도우 : \r\n 리눅스 : \n
//-----------------------------------------------------------------------------
void convCRLF(string strFilePath)
{
#ifdef RUN_OS_WIN
string strDesc;
//-----------------------------------------------------------------------------
// 윈도우일 경우 \r\n을 리눅스의 \n으로 바꾸어서 다시 저장한다.
//-----------------------------------------------------------------------------
if(strFilePath[<2..] == ".o")
strFilePath = strFilePath[0..<3];
strDesc = replace_string(read_bytes(strFilePath + __SAVE_EXTENSION__), "\r\n" , "
");
rm(strFilePath + __SAVE_EXTENSION__);
write_bytes(strFilePath + __SAVE_EXTENSION__, 0, strDesc);
#endif
return;
}
convCRLF함수의 사용법은.. save_object함수가 사용되는 부분의 밑에다가
인자를 동일하게 주어서 호출해 주시면 되겠네요.
예)
save_object(SAVE_FILE);
convCRLF(SAVE_FILE);
문제1이 해결되었는데도 문제2가 발생한다면..
명령어 자체 잘못된 코딩에 문제일 가능성이 높겠네요.
메모리에 룸이 로드가 안된상태인데 해당 룸으로 유저객체를 Move시킬려고
시도해도 저런 에러메세지가 나올거구요.
기타 여러가지 이유가 있으니 에러메세지와 발생위치를 유심히 보시고 소스를 살펴보시면
해결가능하지 않을까 생각합니다. 문제2는 별 도움이 못되겠네요.
코멘트를 삭제할 비밀번호를 입력하세요.
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 57개 / 검색된 게시물: 57개
글번호 | 제목 | 작성자 | 조회수 | 좋아요 | 싫어요 | 작성일 | |
---|---|---|---|---|---|---|---|
57 | [LPMud] 삭제된 게시물입니다. | 가짜으르릉 | 78 | 0 | 0 | 2024-10-18 | |
56 | [Circle] 한글 cartograph [1+1] | 울보천사 | 189 | 0 | 0 | 2024-08-31 | |
55 | [Circle] Cartograph [1] | 새노 | 106 | 0 | 0 | 2024-08-30 | |
54 | [Circle] TbaMUD 2023 한글화 (입출력, UTF-8) [1] | 새노 | 904 | 2 | 0 | 2023-10-22 | |
53 | [Circle] 신세계 2.6 v1605 230314 [6+1] | 성천사 | 1588 | 3 | 0 | 2023-04-12 | |
52 | [LPMud] 십웅기용 FluffOS 드라이버 [2] | 고냉이 | 1817 | 2 | 0 | 2022-06-04 | |
51 | [Circle] tbaMUD(CircleMUD) 2020 입출력 한글화(Ansi) [3] | 고냉이 | 1267 | 0 | 0 | 2022-04-09 | |
50 | [LPMud] 삭제된 게시물입니다. | 고냉이 | 669 | 0 | 0 | 2022-03-28 | |
49 | [Mordor] Looking for Mordor 5.05 source code | isen | 1012 | 0 | 0 | 2021-12-03 | |
48 | [Circle] 삭제된 게시물입니다. [4+1] | 새노 | 1939 | 1 | 0 | 2020-12-12 | |
47 | [Circle] 삭제된 게시물입니다. [12+5] | 새노 | 2278 | 1 | 0 | 2019-12-06 | |
46 | [Etc] 삭제된 게시물입니다. | 암로 | 1761 | 0 | 0 | 2018-05-12 | |
45 | [LPMud] 마군님 주라소스 오류문제 [1] | 한웅 | 1947 | 0 | 0 | 2014-03-09 | |
44 | [LPMud] 오로라 캠프 아시는 분~ [3] | 홍길동(3) | 1836 | 0 | 0 | 2011-04-26 | |
43 | [Etc] Narai New 소스를 구합니다 | 윤호재 | 1319 | 0 | 0 | 2010-11-07 | |
42 | [LPMud] HanLP 윈도우용 driver 실행파일 [1] | 우창희 | 1857 | 0 | 0 | 2010-05-20 | |
41 | [Mordor] Mordor 6.66a-7 패치 | 아모레 | 1585 | 0 | 0 | 2009-12-18 | |
40 | [Circle] CircleMud 3.6 (한글) [6] | 신군 | 3063 | 0 | 0 | 2009-10-25 | |
39 | [Circle] CircleMud 3.5 | 우울한나 | 1719 | 0 | 0 | 2008-11-09 | |
38 | [Mordor] [버전업][머드를만들자] Ver. 0.3.0 [1] | 한민영 | 3381 | 0 | 0 | 2006-08-07 |