[Dcmlib] makeDicomDir sur cygwin

Jean-Michel Rouet jm.rouet at noos.fr
Mon Nov 22 21:29:07 CET 2004


Y'a un probleme avec makeDicomDir sur cygwin.
Apparemment le chemin generé par cmake (GDCM_DATA_ROOT) n'est pas compatible avec l'api win32
FindFirstFile dans DirList::Explore.

Deux solutions: 
Une préventive qui consiste a modifier DirList::Explore pour que sous cygwin on utilise opendir() (mode unix standard).

Une curative, qui modifie le programe de test makeDicomDir comme suit (appel a la fonction cygwin de conversion de chemin unix vers chemin dos: cygwin32_conv_to_full_win32_path(const char*, char *)) :

rouet at vanoise:~/src/gdcm/Test$ cvs diff makeDicomDir.cxx
Index: makeDicomDir.cxx
===================================================================
RCS file: /cvs/public/gdcm/Test/makeDicomDir.cxx,v
retrieving revision 1.31
diff -r1.31 makeDicomDir.cxx
22a23,25
> #if defined (__CYGWIN__)
> #include "sys/cygwin.h"
> #endif
47c50
<    std::string dirName;
---
>    char *inputDirName = argc > 1 ? argv[1] : GDCM_DATA_ROOT;
49,56c52,62
<    if (argc > 1)
<    {
<       dirName = argv[1];
<    }
<    else
<    {
<       dirName = GDCM_DATA_ROOT;
<    }
---
>    std::string dirName;
>
> #if defined (__CYGWIN__)
>    // on cygwin, cmake use a cygwin path, which is not compatible with the
>    // FindFirstFile winAPI call in DirList::Explore
>    char dosDirName[1024];
>    cygwin32_conv_to_full_win32_path(inputDirName,dosDirName);
>    inputDirName = dosDirName;
> #endif
>
>    dirName = inputDirName;

Perso je préfère la premiere...

JM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20041122/815cfe30/attachment.html>


More information about the Dcmlib mailing list