=== modified file 'CMakeLists.txt' --- CMakeLists.txt 2008-07-07 20:34:59 +0000 +++ CMakeLists.txt 2008-07-31 10:14:11 +0000 @@ -12,5 +12,8 @@ message(FATAL_ERROR "In-tree build attempt detected, aborting. Set your build dir outside your source dir and try again.") endif() +set(RELATIVE_DATADIR "share/cuneiform") +set(INSTALL_DATADIR "${CMAKE_INSTALL_PREFIX}/${RELATIVE_DATADIR}") + add_subdirectory(datafiles) add_subdirectory(cuneiform_src) \ No newline at end of file === modified file 'cuneiform_src/Kern/CMakeLists.txt' --- cuneiform_src/Kern/CMakeLists.txt 2008-07-29 09:06:31 +0000 +++ cuneiform_src/Kern/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -102,3 +102,6 @@ add_executable(cuneiform cuneiform-cli.cpp) target_link_libraries(cuneiform puma ${MAGICK_LIBRARIES} ${DL_LIB}) #${PUMA_LIBS} ${RPSTR_LIBS} ${SNP_LIBS} dl) + +install(TARGETS windummy LIBRARY DESTINATION lib) +install(TARGETS cuneiform RUNTIME DESTINATION bin) === modified file 'cuneiform_src/Kern/ccom/CMakeLists.txt' --- cuneiform_src/Kern/ccom/CMakeLists.txt 2008-04-28 18:50:52 +0000 +++ cuneiform_src/Kern/ccom/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -2,4 +2,6 @@ add_library(ccom ${LIBTYPE} src/ccom.c -src/ccom_loc.c) \ No newline at end of file +src/ccom_loc.c) + +install(TARGETS ccom LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/ced/CMakeLists.txt' --- cuneiform_src/Kern/ced/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/ced/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -11,4 +11,6 @@ sources/main/wrapper.cpp ) -target_link_libraries(ced cfio windummy) \ No newline at end of file +target_link_libraries(ced cfio windummy) + +install(TARGETS ced LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/cfio/CMakeLists.txt' --- cuneiform_src/Kern/cfio/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/cfio/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -9,4 +9,6 @@ sources/cpp/dll_main.cpp ) -target_link_libraries(cfio windummy) \ No newline at end of file +target_link_libraries(cfio windummy) + +install(TARGETS cfio LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/cimage/CMakeLists.txt' --- cuneiform_src/Kern/cimage/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/cimage/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -13,4 +13,6 @@ sources/main/dll.cpp ) -target_link_libraries(cimage cfio rdib) \ No newline at end of file +target_link_libraries(cimage cfio rdib) + +install(TARGETS cimage LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/cline/CMakeLists.txt' --- cuneiform_src/Kern/cline/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/cline/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -9,4 +9,6 @@ sources/src/cpp/lcline.cpp ) -target_link_libraries(cline windummy) \ No newline at end of file +target_link_libraries(cline windummy) + +install(TARGETS cline LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/config.h.in' --- cuneiform_src/Kern/config.h.in 2008-07-23 15:25:09 +0000 +++ cuneiform_src/Kern/config.h.in 2008-07-31 10:14:11 +0000 @@ -1,1 +1,4 @@ #cmakedefine USE_MAGICK + +#define INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@" +#define INSTALL_DATADIR "@INSTALL_DATADIR@" \ No newline at end of file === modified file 'cuneiform_src/Kern/cpage/CMakeLists.txt' --- cuneiform_src/Kern/cpage/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/cpage/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -19,4 +19,6 @@ sources/cpp/tableclass.cpp ) -target_link_libraries(cpage windummy) \ No newline at end of file +target_link_libraries(cpage windummy) + +install(TARGETS cpage LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/cpu/CMakeLists.txt' --- cuneiform_src/Kern/cpu/CMakeLists.txt 2008-04-28 18:50:52 +0000 +++ cuneiform_src/Kern/cpu/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -1,4 +1,6 @@ add_library(cpu ${LIBTYPE} src/cpu.c src/cpu32.c -) \ No newline at end of file +) + +install(TARGETS cpu LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/cstr/CMakeLists.txt' --- cuneiform_src/Kern/cstr/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/cstr/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -4,4 +4,6 @@ src/cgraph.cpp src/cstr.c) -target_link_libraries(cstr ccom) \ No newline at end of file +target_link_libraries(cstr ccom) + +install(TARGETS cstr LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/ctb/CMakeLists.txt' --- cuneiform_src/Kern/ctb/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/ctb/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -9,4 +9,6 @@ src/ctb_tool.c ) -target_link_libraries(ctb32 windummy) \ No newline at end of file +target_link_libraries(ctb32 windummy) + +install(TARGETS ctb32 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/dif/CMakeLists.txt' --- cuneiform_src/Kern/dif/CMakeLists.txt 2008-05-19 12:06:15 +0000 +++ cuneiform_src/Kern/dif/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -8,3 +8,5 @@ src/sticdif.c src/stictool.c ) + +install(TARGETS dif LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/evn32/CMakeLists.txt' --- cuneiform_src/Kern/evn32/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/evn32/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -13,4 +13,6 @@ src/v0comprq.c ) -target_link_libraries(evn32 dif windummy) \ No newline at end of file +target_link_libraries(evn32 dif windummy) + +install(TARGETS evn32 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/evn32/src/evn.c' --- cuneiform_src/Kern/evn32/src/evn.c 2008-07-29 11:33:01 +0000 +++ cuneiform_src/Kern/evn32/src/evn.c 2008-07-31 12:15:01 +0000 @@ -194,7 +194,7 @@ evn_error_code = ER_EVN_NO_ERROR; - h=open(file1, O_BINARY| O_RDONLY); + h = open_data_file(file1, O_BINARY| O_RDONLY); strcpy(load_tab1, file1); if( h==-1 ) { @@ -219,7 +219,7 @@ close( h ); - h=open( file2, O_BINARY| O_RDONLY ); + h = open_data_file(file2, O_BINARY| O_RDONLY); strcpy(load_tab2, file2); if( h==-1 ) { === modified file 'cuneiform_src/Kern/exc/CMakeLists.txt' --- cuneiform_src/Kern/exc/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/exc/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -11,4 +11,6 @@ src/v0compmn.c ) -target_link_libraries(exc loc ccom evn32) \ No newline at end of file +target_link_libraries(exc loc ccom evn32) + +install(TARGETS exc LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/fon/CMakeLists.txt' --- cuneiform_src/Kern/fon/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/fon/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -16,4 +16,6 @@ src/utilctb.c ) -target_link_libraries(fon cstr ctb32) \ No newline at end of file +target_link_libraries(fon cstr ctb32) + +install(TARGETS fon LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/include/winfuncs.h' --- cuneiform_src/Kern/include/winfuncs.h 2008-07-30 08:47:18 +0000 +++ cuneiform_src/Kern/include/winfuncs.h 2008-07-31 10:14:11 +0000 @@ -186,4 +186,11 @@ int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); char* _strupr(char*s); +/* These are not windows compat functions, but general helper functions. + * I had no other place to put it. + */ + +int open_data_file(const char *basename, int mode); +int data_file_exists(const char *basename); + #endif === modified file 'cuneiform_src/Kern/leo/CMakeLists.txt' --- cuneiform_src/Kern/leo/CMakeLists.txt 2008-05-19 12:06:15 +0000 +++ cuneiform_src/Kern/leo/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -23,3 +23,5 @@ r35 std32 ) + +install(TARGETS leo LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/lns32/CMakeLists.txt' --- cuneiform_src/Kern/lns32/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/lns32/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -25,4 +25,6 @@ src/tgreader.cpp ) -target_link_libraries(lns32 cline std32 windummy) \ No newline at end of file +target_link_libraries(lns32 cline std32 windummy) + +install(TARGETS lns32 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/loc/CMakeLists.txt' --- cuneiform_src/Kern/loc/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/loc/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -8,4 +8,6 @@ src/v0compgl.c ) -target_link_libraries(loc windummy) \ No newline at end of file +target_link_libraries(loc windummy) + +install(TARGETS loc LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/mmx/CMakeLists.txt' --- cuneiform_src/Kern/mmx/CMakeLists.txt 2008-04-28 18:50:52 +0000 +++ cuneiform_src/Kern/mmx/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -6,4 +6,6 @@ src/mmx_net.c src/mmx_r35.c src/mmxmain.c -) \ No newline at end of file +) + +install(TARGETS mmx LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/msk/CMakeLists.txt' --- cuneiform_src/Kern/msk/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/msk/CMakeLists.txt 2008-07-31 12:15:01 +0000 @@ -2,4 +2,6 @@ add_library(msk ${LIBTYPE} src/msk.c) -target_link_libraries(msk mmx) \ No newline at end of file +target_link_libraries(msk mmx windummy) + +install(TARGETS msk LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/msk/src/msk.c' --- cuneiform_src/Kern/msk/src/msk.c 2008-07-29 09:38:01 +0000 +++ cuneiform_src/Kern/msk/src/msk.c 2008-07-31 12:15:01 +0000 @@ -647,7 +647,7 @@ initiated++; Hnd_abc_n[initiated]=0; - if( (hnd=open(NameFile,O_RDONLY|O_BINARY))> 0 ) + if((hnd = open_data_file(NameFile, O_RDONLY|O_BINARY)) > 0) { read(hnd,NameTab,32*sizeof(char)); read(hnd,(Word16 *)&Hnd_abc_n[initiated],sizeof(short)); read(hnd,(Word16 *)&num_mask,sizeof(short)); === modified file 'cuneiform_src/Kern/pass2/CMakeLists.txt' --- cuneiform_src/Kern/pass2/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/pass2/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -8,4 +8,6 @@ src/p2_tools.c ) -target_link_libraries(pass2 cstr fon std32) \ No newline at end of file +target_link_libraries(pass2 cstr fon std32) + +install(TARGETS pass2 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/puma/CMakeLists.txt' --- cuneiform_src/Kern/puma/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/puma/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -34,4 +34,5 @@ rreccom rpstr ) - \ No newline at end of file + +install(TARGETS puma LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/puma/c/initdone.cpp' --- cuneiform_src/Kern/puma/c/initdone.cpp 2008-07-29 09:38:01 +0000 +++ cuneiform_src/Kern/puma/c/initdone.cpp 2008-07-31 12:15:01 +0000 @@ -189,10 +189,7 @@ } else { - char szRec6AllFilename[260]; - //strcpy(szRec6AllFilename,GetModulePath()); JussiP: disabled this old path function thingy. - strcpy(szRec6AllFilename,"rec6all.dat"); - if(!ROUT_LoadRec6List(szRec6AllFilename)) + if(!ROUT_LoadRec6List("rec6all.dat")) { SetReturnCode_puma(ROUT_GetReturnCode()); goto lError; === modified file 'cuneiform_src/Kern/r35/CMakeLists.txt' --- cuneiform_src/Kern/r35/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/r35/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -1,4 +1,6 @@ add_library(r35 ${LIBTYPE} src/r35.c) -target_link_libraries(r35 mmx std32 windummy) \ No newline at end of file +target_link_libraries(r35 mmx std32 windummy) + +install(TARGETS r35 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rbal/CMakeLists.txt' --- cuneiform_src/Kern/rbal/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rbal/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -11,4 +11,6 @@ src/statsearchbl.cpp ) -target_link_libraries(rbal cstr evn32) \ No newline at end of file +target_link_libraries(rbal cstr evn32) + +install(TARGETS rbal LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rblock/CMakeLists.txt' --- cuneiform_src/Kern/rblock/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rblock/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -50,4 +50,6 @@ sources/c/sevbreak.c ) -target_link_libraries(rblock cpage loc exc cstr cline rstr) \ No newline at end of file +target_link_libraries(rblock cpage loc exc cstr cline rstr) + +install(TARGETS rblock LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rcorrkegl/CMakeLists.txt' --- cuneiform_src/Kern/rcorrkegl/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rcorrkegl/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -7,4 +7,6 @@ src/cpp/stdafx.cpp ) -target_link_libraries(rcorrkegl cstr cpage) \ No newline at end of file +target_link_libraries(rcorrkegl cstr cpage) + +install(TARGETS rcorrkegl LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rcutp/CMakeLists.txt' --- cuneiform_src/Kern/rcutp/CMakeLists.txt 2008-05-08 13:40:10 +0000 +++ cuneiform_src/Kern/rcutp/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -10,4 +10,6 @@ sources/main/rcutp_mainfunc.cpp ) -target_link_libraries(rcutp ccom windummy) \ No newline at end of file +target_link_libraries(rcutp ccom windummy) + +install(TARGETS rcutp LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rdib/CMakeLists.txt' --- cuneiform_src/Kern/rdib/CMakeLists.txt 2008-04-28 18:50:52 +0000 +++ cuneiform_src/Kern/rdib/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -1,3 +1,5 @@ include_directories(BEFORE sources) -add_library(rdib ${LIBTYPE} sources/cpp/CTDIB.cpp) \ No newline at end of file +add_library(rdib ${LIBTYPE} sources/cpp/CTDIB.cpp) + +install(TARGETS rdib LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rfrmt/CMakeLists.txt' --- cuneiform_src/Kern/rfrmt/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rfrmt/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -28,4 +28,6 @@ rimage cline cstr -) \ No newline at end of file +) + +install(TARGETS rfrmt LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rimage/CMakeLists.txt' --- cuneiform_src/Kern/rimage/CMakeLists.txt 2008-05-08 13:40:10 +0000 +++ cuneiform_src/Kern/rimage/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -21,4 +21,6 @@ cfio cimage rdib -) \ No newline at end of file +) + +install(TARGETS rimage LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rline/CMakeLists.txt' --- cuneiform_src/Kern/rline/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rline/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -12,4 +12,6 @@ cpage lns32 rshelllines -) \ No newline at end of file +) + +install(TARGETS rline LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rling/CMakeLists.txt' --- cuneiform_src/Kern/rling/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rling/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -38,4 +38,6 @@ sources/c/udictuti.c ) -target_link_libraries(rling cstr rlings) \ No newline at end of file +target_link_libraries(rling cstr rlings) + +install(TARGETS rling LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rling/sources/CMakeLists.txt' --- cuneiform_src/Kern/rling/sources/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rling/sources/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -32,4 +32,6 @@ c/udictuti.c ) -target_link_libraries(rlings cstr windummy) \ No newline at end of file +target_link_libraries(rlings cstr windummy) + +install(TARGETS rlings LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rling/sources/c/rling_ma.c' --- cuneiform_src/Kern/rling/sources/c/rling_ma.c 2008-07-29 09:38:01 +0000 +++ cuneiform_src/Kern/rling/sources/c/rling_ma.c 2008-07-31 12:15:01 +0000 @@ -313,7 +313,7 @@ { if (file_handle[fn]==-1) { - i = open (Wname, Type, SubType); + i = open_data_file(Name, Type); /*, SubType); */ if (i < 0) return -1; === modified file 'cuneiform_src/Kern/rmarker/CMakeLists.txt' --- cuneiform_src/Kern/rmarker/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rmarker/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -23,4 +23,6 @@ rneg rpic rselstr -) \ No newline at end of file +) + +install(TARGETS rmarker LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rneg/CMakeLists.txt' --- cuneiform_src/Kern/rneg/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rneg/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -18,4 +18,6 @@ rselstr exc rstr -) \ No newline at end of file +) + +install(TARGETS rneg LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rout/CMakeLists.txt' --- cuneiform_src/Kern/rout/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rout/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -14,4 +14,6 @@ src/words.cpp ) -target_link_libraries(rout ced cfio) \ No newline at end of file +target_link_libraries(rout ced cfio) + +install(TARGETS rout LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rout/src/rout.cpp' --- cuneiform_src/Kern/rout/src/rout.cpp 2008-07-29 09:38:01 +0000 +++ cuneiform_src/Kern/rout/src/rout.cpp 2008-07-31 12:15:01 +0000 @@ -65,6 +65,7 @@ // By Eugene Pliskin pliskin@cs.isa.ac.ru //******************************************************************** +#include #include #include "stdafx.h" #include "rout_own.h" @@ -895,18 +896,17 @@ ClearError(); - // Список файлов из rec6all.dat - char drive[_MAX_DRIVE],dir[_MAX_PATH], - name[_MAX_PATH],ext[_MAX_EXT]; - - // Разложить путь на составляющие - _splitpath(rec6AllFilename,drive,dir,name,ext); - // Открыть файл со списком таблиц FILE *f = NULL; char buf[256] = ""; + int fd; - f = fopen(rec6AllFilename,"rt"); + fd = open_data_file(rec6AllFilename, O_RDONLY); // Was "rt". + if(fd == -1) { + ERR_LOAD_REC6LIST; + return FALSE; + } + f = fdopen(fd, "rt"); if (!f) { ERR_LOAD_REC6LIST; @@ -917,7 +917,6 @@ { long language=-1; char theName[_MAX_PATH] = ""; - char rec6xxxFilename[_MAX_PATH] = ""; // Пустые строки и строки комментариев, // начинающиеся с точки с запятой, пропускать @@ -931,13 +931,9 @@ // Номер языка и имя таблицы rec6xxx.dat sscanf(buf,"%d%s", &language, &theName[0]); - // Полный путь - sprintf(rec6xxxFilename, "%s%s%s", - drive,dir,theName); - if (language <0 || language >= LANG_TOTAL || !theName[0] || - !LoadAlphabet(language,rec6xxxFilename) + !LoadAlphabet(language, theName) ) { fclose(f); @@ -957,6 +952,7 @@ { // Загрузка файла REC6.DAT FILE *f = NULL; + int fd; char buf[256] = ""; #ifdef WIN32 const char line_end = '\n'; @@ -968,7 +964,10 @@ long sizeAlphabet = 0; - f = fopen(rec6xxxFilename,"rt"); + fd = open_data_file(rec6xxxFilename, O_RDONLY); + if(fd == -1) + return FALSE; + f = fdopen(fd, "rt"); if (!f) return FALSE; === modified file 'cuneiform_src/Kern/rpic/CMakeLists.txt' --- cuneiform_src/Kern/rpic/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rpic/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -13,4 +13,6 @@ sources/rpic.cpp ) -target_link_libraries(rpic cpage ccom rstr) \ No newline at end of file +target_link_libraries(rpic cpage ccom rstr) + +install(TARGETS rpic LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rpstr/CMakeLists.txt' --- cuneiform_src/Kern/rpstr/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rpstr/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -15,4 +15,6 @@ rling rstr std32 -) \ No newline at end of file +) + +install(TARGETS rpstr LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rreccom/CMakeLists.txt' --- cuneiform_src/Kern/rreccom/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rreccom/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -6,4 +6,6 @@ src/cpp/rreccom.cpp ) -target_link_libraries(rreccom ccom evn32 windummy) \ No newline at end of file +target_link_libraries(rreccom ccom evn32 windummy) + +install(TARGETS rreccom LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rreccom/src/cpp/alphabet.cpp' --- cuneiform_src/Kern/rreccom/src/cpp/alphabet.cpp 2008-07-29 09:38:01 +0000 +++ cuneiform_src/Kern/rreccom/src/cpp/alphabet.cpp 2008-07-31 12:15:01 +0000 @@ -696,22 +696,22 @@ "rec2blt.dat", // LANG_ESTONIAN 26 "rec2tur.dat" // LANG_TURKISH 27 }; -Bool16 rec_load_tables(Word8 language) -{ -if( language>=LANG_TOTAL ) - return FALSE; -if( !EVNInitLanguage( tabevn1[language], tabevn2[language], language) ) - return FALSE; -return TRUE; + +Bool16 rec_load_tables(Word8 language) { + if (language >= LANG_TOTAL) + return FALSE; + if (!EVNInitLanguage(tabevn1[language], tabevn2[language], language)) + return FALSE; + return TRUE; } -Bool16 rec_is_language(Word8 language) -{ -if( language=LANG_TOTAL ) - return FALSE; -if( _access(tabevn1[language],0)==-1 ) - return FALSE; -if( _access(tabevn2[language],0)==-1 ) - return FALSE; - -return TRUE; + +Bool16 rec_is_language(Word8 language) { + if (language < LANG_ENGLISH || language >= LANG_TOTAL) + return FALSE; + if (data_file_exists(tabevn1[language]) == -1) + return FALSE; + if (data_file_exists(tabevn2[language]) == -1) + return FALSE; + + return TRUE; } === modified file 'cuneiform_src/Kern/rsadd/CMakeLists.txt' --- cuneiform_src/Kern/rsadd/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rsadd/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -2,4 +2,6 @@ add_library(rsadd ${LIBTYPE} src/rsadd.c) -target_link_libraries(rsadd cstr) \ No newline at end of file +target_link_libraries(rsadd cstr) + +install(TARGETS rsadd LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rselstr/CMakeLists.txt' --- cuneiform_src/Kern/rselstr/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rselstr/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -50,4 +50,6 @@ cline cstr rcutp -) \ No newline at end of file +) + +install(TARGETS rselstr LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rshelllines/CMakeLists.txt' --- cuneiform_src/Kern/rshelllines/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rshelllines/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -15,4 +15,6 @@ cimage cpage rverline -) \ No newline at end of file +) + +install(TARGETS rshelllines LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rstr/CMakeLists.txt' --- cuneiform_src/Kern/rstr/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rstr/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -105,4 +105,6 @@ rsadd std32 leo -) \ No newline at end of file +) + +install(TARGETS rstr LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rstr/src/rcm.c' --- cuneiform_src/Kern/rstr/src/rcm.c 2008-07-30 08:47:18 +0000 +++ cuneiform_src/Kern/rstr/src/rcm.c 2008-07-31 12:15:01 +0000 @@ -89,6 +89,8 @@ //#include "LineDefs.h" #include "cline.h" +#include "compat_defs.h" + #define LOCAL_GREY_CTB "page6666" #define LOCAL_CTB_NAME "ct666666" unsigned char alpha_used_mode=0; @@ -401,7 +403,7 @@ #define O_BINARY 0 #endif - h=open (tab3x5[lang],O_RDONLY|O_BINARY); + h=open_data_file(tab3x5[lang], O_RDONLY|O_BINARY); if (h==-1) { return FALSE; @@ -461,16 +463,16 @@ RSTR_FUNC(Bool32) RSTR_IsLanguage(Word8 language) { -if( language=LANG_TOTAL ) +if(language=LANG_TOTAL ) return FALSE; chdir(lnOcrPath); -if( _access(tabevn1[language],0)==-1 ) - return FALSE; -if( _access(tabevn2[language],0)==-1 ) - return FALSE; -if( _access(tab3x5[language],0)==-1 ) - return FALSE; -if( language==LANG_RUSSIAN || language==LANG_RUSENG ) +if(data_file_exists(tabevn1[language])==-1 ) + return FALSE; +if(data_file_exists(tabevn2[language])==-1 ) + return FALSE; +if(data_file_exists(tab3x5[language])==-1 ) + return FALSE; +if(language==LANG_RUSSIAN || language==LANG_RUSENG ) { if( 0 ) return FALSE; === modified file 'cuneiform_src/Kern/rstuff/CMakeLists.txt' --- cuneiform_src/Kern/rstuff/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rstuff/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -36,4 +36,6 @@ smetric rreccom exc -) \ No newline at end of file +) + +install(TARGETS rstuff LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/rverline/CMakeLists.txt' --- cuneiform_src/Kern/rverline/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/rverline/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -18,4 +18,6 @@ cpage cline ccom -) \ No newline at end of file +) + +install(TARGETS rverline LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/smetric/CMakeLists.txt' --- cuneiform_src/Kern/smetric/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/smetric/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -11,4 +11,6 @@ ../usage/un_buff.cpp ) -target_link_libraries(smetric windummy) \ No newline at end of file +target_link_libraries(smetric windummy) + +install(TARGETS smetric LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/std/CMakeLists.txt' --- cuneiform_src/Kern/std/CMakeLists.txt 2008-04-30 12:00:17 +0000 +++ cuneiform_src/Kern/std/CMakeLists.txt 2008-07-30 09:26:13 +0000 @@ -18,4 +18,6 @@ src/stdwapi.cpp ) -target_link_libraries(std32 windummy) \ No newline at end of file +target_link_libraries(std32 windummy) + +install(TARGETS std32 LIBRARY DESTINATION lib) === modified file 'cuneiform_src/Kern/windummy.c' --- cuneiform_src/Kern/windummy.c 2008-07-30 08:47:18 +0000 +++ cuneiform_src/Kern/windummy.c 2008-07-31 12:15:01 +0000 @@ -43,6 +43,7 @@ #include "compat_defs.h" +#include "config.h" int HFILE_ERROR; @@ -525,3 +526,69 @@ char* _strupr(char*s) { return s; } + +/* General helper functions. */ + +/* We try to locate data files in two locations: + * + * 1. At the directory pointed to by environment variable CF_DATADIR + * 2. At install prefix. + * + * Caller's responsibility is to ensure *e1 and *e2 are large enough. + * + * Porting note: on Windows it probably makes sense to use the function + * that tells the current code module's path and go from there. + * + * The same probably goes for OS X, if you want to go the GUI route. + * + */ + +static void build_name_estimates(const char *base_name, char *env_name, char *prefix_name) { + const char *separator = "/"; /* Change to backslash on Windows. */ + const char *env_prefix; + const char *varname = "CF_DATADIR"; + int len = 0; + + env_name[0] = '\0'; + prefix_name[0] = '\0'; + + env_prefix = getenv(varname); + if(env_prefix) + len = strlen(env_prefix); + if(len > 0) { + strcat(env_name, env_prefix); + if(strcmp(env_prefix + len-1, separator) != 0) { + strcat(env_name, separator); + } + strcat(env_name, base_name); + } + + len = strlen(INSTALL_DATADIR); + if(len > 0) { + strcat(prefix_name, INSTALL_DATADIR); + strcat(prefix_name, separator); + strcat(prefix_name, base_name); + } +} + +int open_data_file(const char *basename, int mode) { + char ename[1024]; + char pname[1024]; + int i; + + build_name_estimates(basename, ename, pname); + i = open(ename, mode); + if(i != -1) + return i; + return open(pname, mode); +} + +int data_file_exists(const char *basename) { + char ename[1024]; + char pname[1024]; + + build_name_estimates(basename, ename, pname); + if(_access(ename, 0) == 0) + return 0; + return _access(pname, 0); +} === modified file 'datafiles/CMakeLists.txt' --- datafiles/CMakeLists.txt 2008-05-05 13:35:31 +0000 +++ datafiles/CMakeLists.txt 2008-07-31 12:15:01 +0000 @@ -3,5 +3,5 @@ file(GLOB datfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.dat) foreach(i ${datfiles}) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${i} ${PROJECT_BINARY_DIR} COPYONLY) + install(FILES ${i} DESTINATION ${RELATIVE_DATADIR}) endforeach() === modified file 'readme.txt' --- readme.txt 2008-07-23 21:46:55 +0000 +++ readme.txt 2008-07-31 12:15:01 +0000 @@ -34,13 +34,21 @@ cd builddir cmake -DCMAKE_BUILD_TYPE=debug .. make - +make install + +By default Cuneiform installs to /usr/local. You can specify a different prefix +by giving a command line switch "-DCMAKE_INSTALL_PREFIX=/what/ever/you/want" +to CMake. + +If you have ImageMagick++ on your system, Cuneiform autodetects and builds +against it. Then Cuneiform can process any image that ImageMagick knows how +to open. Otherwise it can only read uncompressed BMP images. Running -You MUST be in the root of the build directory. Then just do +After install you simply run. -./cuneiform [-l language -o result_file] +cuneiform [-l language -o result_file] Output is written to pumaout.txt. Cuneiform assumes that your image contains only a single column of text. @@ -52,9 +60,10 @@ If you do not define an output file with the -o switch, Cuneiform writes the result to a file "cuneiform-out.txt". -If you have ImageMagick++ on your system, Cuneiform autodetects and builds -against it. Then Cuneiform can process any image that ImageMagick knows how -to open. Otherwise it can only read uncompressed BMP images. +If you want to run Cuneiform without installing it on your system, you +have to point the CF_DATADIR environment variable to a directory +containing the .dat files. These can be found in the "datafiles" +directory of the source package. Contact information