Changeset 326


Ignore:
Timestamp:
08/01/13 14:23:16 (6 years ago)
Author:
jls17
Message:
Location:
branches/work_304
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • branches/work_304/ARInside.cpp

    r313 r326  
    21092109 
    21102110void CARInside::DoWork(int nMode) 
    2111 { 
     2111{        
    21122112        FileSystemUtil fsUtil(appConfig); 
     2113         
     2114        string directory = FileSystemUtil::GetExecutableDirectory(NULL); 
    21132115 
    21142116        // first step is to create directory structure and resources (images, css and js) 
  • branches/work_304/ARInside.vcproj

    r325 r326  
    6666                        <Tool 
    6767                                Name="VCLinkerTool" 
    68                                 AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     68                                AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    6969                                LinkIncremental="2" 
    7070                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib" 
     
    143143                        <Tool 
    144144                                Name="VCLinkerTool" 
    145                                 AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     145                                AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    146146                                LinkIncremental="2" 
    147147                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib64" 
     
    218218                        <Tool 
    219219                                Name="VCLinkerTool" 
    220                                 AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     220                                AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    221221                                LinkIncremental="1" 
    222222                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib" 
     
    296296                        <Tool 
    297297                                Name="VCLinkerTool" 
    298                                 AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     298                                AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    299299                                LinkIncremental="1" 
    300300                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib64" 
     
    373373                        <Tool 
    374374                                Name="VCLinkerTool" 
    375                                 AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     375                                AdditionalDependencies="arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    376376                                LinkIncremental="1" 
    377377                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib" 
     
    451451                        <Tool 
    452452                                Name="VCLinkerTool" 
    453                                 AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     453                                AdditionalDependencies="arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    454454                                LinkIncremental="1" 
    455455                                AdditionalLibraryDirectories="..\..\api810\lib;..\..\libs\zlib\lib64" 
  • branches/work_304/ARInsideLib.vcproj

    r325 r326  
    20532053                        <File 
    20542054                                RelativePath=".\util\RefItem.h" 
     2055                                > 
     2056                        </File> 
     2057                        <File 
     2058                                RelativePath=".\util\ResourceFileLocatorAndExtractor.cpp" 
     2059                                > 
     2060                        </File> 
     2061                        <File 
     2062                                RelativePath=".\util\ResourceFileLocatorAndExtractor.h" 
    20552063                                > 
    20562064                        </File> 
  • branches/work_304/ARInsideTest.cpp

    r299 r326  
    22#include <iostream> 
    33 
     4char* argv_0; 
     5 
    46int main(int argc, char* argv[]) 
    57{ 
     8        // safe it, so we can use it in tests 
     9        argv_0 = argv[0]; 
     10 
    611        testing::InitGoogleTest(&argc, argv);  
    7   return RUN_ALL_TESTS(); 
     12        return RUN_ALL_TESTS(); 
    813} 
  • branches/work_304/ARInsideTest.h

    r300 r326  
    44// http://code.google.com/p/googletest/ 
    55#include "gtest/gtest.h" 
     6 
     7extern char* argv_0; 
  • branches/work_304/ARInsideTest.vcproj

    r325 r326  
    6666                        <Tool 
    6767                                Name="VCLinkerTool" 
    68                                 AdditionalDependencies="gtestd.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     68                                AdditionalDependencies="gtestd.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    6969                                LinkIncremental="2" 
    7070                                AdditionalLibraryDirectories="..\..\libs\gtest\lib;..\..\api810\lib;..\..\libs\zlib\lib" 
     
    143143                        <Tool 
    144144                                Name="VCLinkerTool" 
    145                                 AdditionalDependencies="gtestd.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     145                                AdditionalDependencies="gtestd.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    146146                                LinkIncremental="2" 
    147147                                AdditionalLibraryDirectories="..\..\libs\gtest\lib64;..\..\api810\lib;..\..\libs\zlib\lib64" 
     
    223223                        <Tool 
    224224                                Name="VCLinkerTool" 
    225                                 AdditionalDependencies="gtest.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     225                                AdditionalDependencies="gtest.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    226226                                LinkIncremental="1" 
    227227                                AdditionalLibraryDirectories="..\..\libs\gtest\lib;..\..\api810\lib;..\..\libs\zlib\lib" 
     
    306306                        <Tool 
    307307                                Name="VCLinkerTool" 
    308                                 AdditionalDependencies="gtest.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     308                                AdditionalDependencies="gtest.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    309309                                LinkIncremental="1" 
    310310                                AdditionalLibraryDirectories="..\..\libs\gtest\lib64;..\..\api810\lib;..\..\libs\zlib\lib64" 
     
    388388                        <Tool 
    389389                                Name="VCLinkerTool" 
    390                                 AdditionalDependencies="gtest.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib" 
     390                                AdditionalDependencies="gtest.lib arapi81_build001.lib arxmlutil81_build001.lib zlibwapi.lib shlwapi.lib" 
    391391                                LinkIncremental="1" 
    392392                                AdditionalLibraryDirectories="..\..\libs\gtest\lib;..\..\api810\lib;..\..\libs\zlib\lib" 
     
    471471                        <Tool 
    472472                                Name="VCLinkerTool" 
    473                                 AdditionalDependencies="gtest.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib" 
     473                                AdditionalDependencies="gtest.lib arapi81_build001_win64.lib arxmlutil81_build001_win64.lib zlibwapi.lib shlwapi.lib" 
    474474                                LinkIncremental="1" 
    475475                                AdditionalLibraryDirectories="..\..\libs\gtest\lib64;..\..\api810\lib;..\..\libs\zlib\lib64" 
  • branches/work_304/CMakeLists.txt

    r325 r326  
    127127 scan/ScanImages.cpp scan/ScanMain.cpp scan/ScanMenus.cpp scan/ScanSchema.cpp 
    128128 tinyxml/tinyxml.cpp tinyxml/tinystr.cpp tinyxml/tinyxmlerror.cpp tinyxml/tinyxmlparser.cpp 
    129  util/AppTimer.cpp util/BlackListItem.cpp util/CommandLineValidator.cpp util/RefItem.cpp util/UntarStream.cpp util/Util.cpp 
     129 util/AppTimer.cpp util/BlackListItem.cpp util/CommandLineValidator.cpp util/RefItem.cpp  
     130 util/ResourceFileLocatorAndExtractor.h util/UntarStream.cpp util/Util.cpp  
    130131 AppConfig.cpp AppConfigReader.cpp ARInside.cpp ConfigFile.cpp FileSystemUtil.cpp gzstream.cpp Main.cpp 
    131132) 
  • branches/work_304/FileSystemUtil.cpp

    r321 r326  
    1919#include "FileSystemUtil.h" 
    2020#include "AppException.h" 
     21#include "ARApi.h" 
    2122 
    2223#include <sys/types.h> 
     
    403404#endif 
    404405} 
     406 
     407string FileSystemUtil::GetExecutableDirectory(const char* argv_0) 
     408{ 
     409        // http://stackoverflow.com/questions/933850/how-to-find-the-location-of-the-executable-in-c 
     410#if WIN32 
     411        DWORD size = 1024; 
     412        LPTSTR buffer = (LPTSTR)malloc(size * sizeof(TCHAR)); 
     413ged_start: 
     414        if (realloc(buffer, size) == NULL) 
     415        { 
     416                cerr << "GetExecutableDirectory: Failed to realloc memory buffer to " << size << "!" << endl; 
     417        } 
     418         
     419        if (GetModuleFileName(NULL, buffer, size) == 0) 
     420        { 
     421                cerr << "Failed to get executable directory" << GetFormattedMessage(GetLastError()) << endl; 
     422                return ""; 
     423        } 
     424         
     425        if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) 
     426        { 
     427                size = size << 1; 
     428                goto ged_start; 
     429        } 
     430 
     431        PathRemoveFileSpec(buffer); 
     432        string path = buffer; 
     433        free(buffer); 
     434 
     435        return path; 
     436#else 
     437        // first, we want to make sure we did get a valid argument 
     438        if (argv_0 == NULL || argv_0[0] == 0) 
     439        { 
     440                return ""; 
     441        } 
     442 
     443        string path; 
     444 
     445        // if the program name starts with an '/', there is an absolute path specified 
     446        if (argv_0[0] == '/') 
     447        { 
     448                path = argv_0; 
     449                 
     450                string::size_type pos = path.find_last_of("/"); 
     451                if (pos != -1) 
     452                { 
     453                        path.resize(pos+1);  // keep the slash at the end, it's safer. 
     454                } 
     455        } 
     456 
     457        // otherwise we use the current working directory or an additional relative path 
     458        else 
     459        { 
     460                char cwd[PATH_MAX+1]; 
     461                ARZeroMemory(cwd); 
     462 
     463                if (getcwd(cwd, PATH_MAX) == NULL) 
     464                { 
     465                        // error while getting current working directory 
     466                        return ""; 
     467                } 
     468                path = cwd; 
     469 
     470                // ok, do we have some relative path informations? 
     471                if (strchr(argv_0, '/') != NULL) 
     472                { 
     473                        if (path.length() > 0 && path[path.length()-1] != '/') 
     474                        { 
     475                                path += '/'; 
     476                        } 
     477 
     478                        path += argv_0; 
     479                        string::size_type pos = path.find_last_of("/"); 
     480                        if (pos != -1) 
     481                        { 
     482                                path.resize(pos+1);  // keep the slash at the end, it's safer. 
     483                        } 
     484                } 
     485        } 
     486        return path; 
     487#endif 
     488} 
     489 
     490#if WIN32 
     491string FileSystemUtil::GetFormattedMessage(unsigned int error) 
     492{ 
     493        LPSTR buffer = NULL; 
     494        if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, 0, buffer, 200, NULL) == 0) 
     495        { 
     496                return "failed to get error message"; 
     497        } 
     498        string errMessage = buffer; 
     499        LocalFree(buffer); 
     500        return errMessage; 
     501} 
     502#endif 
  • branches/work_304/FileSystemUtil.h

    r321 r326  
    3434        static bool IsDots(const char* str); 
    3535        static void CompactFolder(std::string path); 
     36        static std::string GetExecutableDirectory(const char* argv_0); 
     37#if WIN32 
     38        static std::string GetFormattedMessage(unsigned int error); 
     39#endif 
    3640 
    3741private: 
  • branches/work_304/FileSystemUtilTest.cpp

    r308 r326  
    1212        ASSERT_EQ(false, FileSystemUtil::IsDots("testfile")); 
    1313} 
     14 
     15TEST(FileSystemUtil, GetExecutableDirectory) 
     16{ 
     17        string directory = FileSystemUtil::GetExecutableDirectory(argv_0); 
     18        directory = FileSystemUtil::GetRealPathName(directory); 
     19        cout << "CurrentDir: " << directory << endl; 
     20} 
  • branches/work_304/stdafx.h

    r322 r326  
    3030#include <iterator> 
    3131#include <algorithm> 
     32#include <assert.h> 
    3233 
    3334#ifdef WIN32 // JLS17 LINUX 
     
    3536#include <io.h> 
    3637#include <direct.h> 
     38#include <shlwapi.h> 
    3739#else // WIN32 
    3840#include <sys/types.h> 
Note: See TracChangeset for help on using the changeset viewer.