which means that: - we create a new compilation unit (for example) on 2205 => this gives the source directory - we start the main compilation unit on 2206 => /home/dm/wine/dlls/dbghelp/elf_module.c - in this CU, we start a new include file (on xxxx), => /home/dm/wine/dlls/dbghelp/../../include/winbase.h - ... - we close the CU on 4978 Basically, as I wrote, you don't need two different beasts: currpath and srcpath. They refer to the same object, but the code is wrong.
We should: - store the current directory on first SO (or the SO ended by a '/', which would be better) - on a non NULL SO, not ended by a '/' create a new compilation unit by concatening curr dir and the file name (or if file name is absolute, use the filename) - for each SOL, get the file name by concatening the curr dir with the file name (this operation is the same as above). - nuke the curr dir when getting a NULL SO
current code is wrong as it creates two compilands for each compilation unit (one for each non NULL SO)
A+